Name

sn_data_discovery.DataDiscoverySlushbucketAjax

Description

No description available

Script

var DataDiscoverySlushbucketAjax = Class.create();
DataDiscoverySlushbucketAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  setItemWithTableData: function() {
      gr = new GlideRecordSecure(this.getParameter('sysparm_right_table'));
      gr.query();
      rightChoiceMap = {};
      while (gr.next()) {
          rightChoiceMap[gr.getValue(this.getParameter('sysparm_reference_field'))] = "-1";
      }

      var leftKey = this.getParameter('sysparm_leftKey');
      var textField = this.getParameter('sysparm_textField');
      var gr = new GlideRecordSecure(this.getParameter('sysparm_left_table'));
      gr.query();

      while (gr.next()) {
          if (rightChoiceMap[gr.getValue(leftKey)] === "-1") {
              rightChoiceMap[gr.getValue(leftKey)] = gr.getValue(textField);
          } else {
              var item = this.newItem();
              item.setAttribute('value', gr.getValue(leftKey));
              item.setAttribute('text', gr.getValue(textField));
          }
      }
      item = this.newItem();
      item.setAttribute('value', "end");
      var keys = Object.keys(rightChoiceMap);
      for (i = 0; i < keys.length; i++) {
          var key = keys[i];
          item = this.newItem();
          item.setAttribute('value', key);
          item.setAttribute('text', rightChoiceMap[key]);
      }

  },
  editTargetTables: function() {
      var table_name = this.getParameter('sysparm_right_table');
      var reference_field = this.getParameter('sysparm_reference_field');
      var values = this.getParameter('sysparm_rightChoiceValues');
      var arr = values.split(',');
      var rightChoiceMap = {};
      for (x in arr) {
          rightChoiceMap[arr[x]] = true;
      }
  	
      gr = new GlideRecordSecure(table_name);
      gr.query();
      while (gr.next()) {
          if (rightChoiceMap[gr.getValue(reference_field)]) {
              delete rightChoiceMap[gr.getValue(reference_field)];
          } else {
              gr.deleteRecord();
          }
      }
      var keys = Object.keys(rightChoiceMap);
      if(values=='') {
          return;
      }
      var rec = new GlideRecordSecure(table_name);
      for (i = 0; i < keys.length; i++) {
          var key = keys[i];
          rec.newRecord();
          rec[reference_field] = key;
          rec.insert();
      }
  }
});

Sys ID

7d05580ea3112110c1c5109246fcda23

Offical Documentation

Official Docs: