JAVASCRIPT   71

domain-value.js

Guest on 31st August 2021 05:13:24 PM

  1. define(['arches', 'knockout', 'uuid'], function (arches, ko, uuid) {
  2.     ko.components.register('domain-value-datatype-config', {
  3.         viewModel: function(params) {
  4.             var self = this;
  5.             this.search = params.search;
  6.             if (this.search) {
  7.                 this.options = params.node.config.options;
  8.                 this.options.unshift({id:"", selected:true, text:"Select an Option"});
  9.                 var filter = params.filterValue();
  10.                 this.op = ko.observable(filter.op || '');
  11.                 this.searchValue = ko.observable(filter.val || '');
  12.                 this.filterValue = ko.computed(function () {
  13.                     return {
  14.                         op: self.op(),
  15.                         val: self.searchValue()
  16.                     }
  17.                 });
  18.                 params.filterValue(this.filterValue());
  19.                 this.filterValue.subscribe(function (val) {
  20.                     params.filterValue(val);
  21.                 });
  22.  
  23.             } else {
  24.                 this.isEditable = true;
  25.  
  26.                 if (params.graph) {
  27.                     var cards = _.filter(params.graph.get('cards')(), function(card){return card.nodegroup_id === params.nodeGroupId()})
  28.                     if (cards.length) {
  29.                         this.isEditable = cards[0].is_editable
  30.                     }
  31.                 } else if (params.widget) {
  32.                     this.isEditable = params.widget.card.get('is_editable')
  33.                 }
  34.  
  35.                 this.options = params.config.options;
  36.                 var setupOption = function(option) {
  37.                     option.remove = function () {
  38.                         self.options.remove(option);
  39.                     };
  40.                 };
  41.                 this.options().forEach(setupOption);
  42.                 this.newOptionLabel = ko.observable('');
  43.                 this.addNewOption = function () {
  44.                     var option = {
  45.                         id: uuid.generate(),
  46.                         selected: false,
  47.                         text: ko.observable(self.newOptionLabel())
  48.                     }
  49.                     setupOption(option);
  50.                     self.options.push(option);
  51.                     self.newOptionLabel('');
  52.                 };
  53.                 if (ko.isObservable(this.options)) {
  54.                     this.options.subscribe(function(opts){
  55.                         _.each(opts, function(opt){
  56.                             if (!opt.remove) {
  57.                                 setupOption(opt);
  58.                             }
  59.                         })
  60.                     }, this)
  61.                 }
  62.             }
  63.         },
  64.         template: { require: 'text!datatype-config-templates/domain-value' }
  65.     });
  66.     return name;
  67. });

Raw Paste


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