JAVASCRIPT   43

concept.js

Guest on 31st August 2021 05:11:30 PM

  1. define(['arches', 'knockout', 'viewmodels/concept-select'], function (arches, ko, ConceptSelectViewModel) {
  2.     var name = 'concept-datatype-config';
  3.     ko.components.register(name, {
  4.         viewModel: function(params) {
  5.             this.search = params.search;
  6.             if (this.search) {
  7.                 var self = this;
  8.                 var filter = params.filterValue();
  9.                 params.config = ko.observable({options:[]});
  10.                 this.op = ko.observable(filter.op || '');
  11.                 this.placeholder = ko.observable('Select a concept');
  12.                 this.multiple = ko.observable(false);
  13.                 this.searchValue = ko.observable(filter.val || '');
  14.                 this.node = params.node;
  15.                 if (!ko.isObservable(this.node.config.rdmCollection)) {
  16.                     this.node.config.rdmCollection = ko.observable(this.node.config.rdmCollection);
  17.                 }
  18.                 params.value = this.searchValue;
  19.                 ConceptSelectViewModel.apply(this, [params]);
  20.                 this.filterValue = ko.computed(function () {
  21.                     return {
  22.                         op: self.op(),
  23.                         val: self.searchValue()
  24.                     }
  25.                 });
  26.                 params.filterValue(this.filterValue());
  27.                 this.filterValue.subscribe(function (val) {
  28.                     params.filterValue(val);
  29.                 });
  30.             } else {
  31.                 this.conceptCollections = ko.observableArray([]);
  32.                 this.isEditable = true;
  33.                 if (params.graph) {
  34.                     var cards = _.filter(params.graph.get('cards')(), function(card){return card.nodegroup_id === params.nodeGroupId()})
  35.                     if (cards.length) {
  36.                         this.isEditable = cards[0].is_editable
  37.                     }
  38.                 } else if (params.widget) {
  39.                     this.isEditable = params.widget.card.get('is_editable')
  40.                 }
  41.                 this.topConcept = params.config.rdmCollection;
  42.                 this.initialTopConcept = this.topConcept()
  43.                 if (arches.conceptCollections.length === 0) {
  44.                     var self = this;
  45.                     $.ajax({
  46.                         url: arches.urls.get_concept_collections,
  47.                         type: 'json'
  48.                     }).done(function(data){
  49.                         arches.conceptCollections = data;
  50.                         self.conceptCollections(data);
  51.                         self.conceptCollections.unshift({
  52.                             'label': null,
  53.                             'id': null
  54.                         });
  55.                         self.topConcept(self.initialTopConcept);
  56.                     }).fail(function(error){
  57.                         console.log(error)
  58.                     })
  59.                 } else {
  60.                     this.conceptCollections(arches.conceptCollections);
  61.                     if (this.conceptCollections()[0].label != null) {
  62.                         this.conceptCollections.unshift({
  63.                             'label': null,
  64.                             'id': null
  65.                         });
  66.                     }
  67.                 }
  68.             }
  69.         },
  70.         template: { require: 'text!datatype-config-templates/concept' }
  71.     });
  72.     return name;
  73. });

Raw Paste


Login or Register to edit or fork this paste. It's free.