Name

global.InteractiveFilterDefaults

Description

Utility to handle interactive filter defaults.

Script

var InteractiveFilterDefaults = Class.create();
InteractiveFilterDefaults.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  checkCanvasAuthorization: function() {
      var dashboardId = this.getParameter('sysparm_dashboard_id');
      var authFlag = gs.getSession().getClientData(dashboardId);
      if (authFlag == true || authFlag == 'true')
          return true;

      this.setError('User is not authorised to perform this operation');
      return false;
  },
  setDefaultValue: function(canvasSysId, defaultValue) {
      if (!this.checkCanvasAuthorization())
          return;

      var userId = gs.getUserID();
      var grCanvasPreferences = new GlideRecord('sys_canvas_preferences');
      grCanvasPreferences.addQuery('canvas_page', canvasSysId);
      grCanvasPreferences.addQuery('user', userId);
      grCanvasPreferences.addQuery('widget_id', defaultValue.id);
      grCanvasPreferences.addQuery('name', defaultValue.name);
      grCanvasPreferences.query();

      if (grCanvasPreferences.hasNext()) {
          while (grCanvasPreferences.next()) {
              grCanvasPreferences.canvas_page = canvasSysId;
              grCanvasPreferences.user = userId;
              grCanvasPreferences.widget_id = defaultValue.id;
              grCanvasPreferences.name = defaultValue.name;
              grCanvasPreferences.value = JSON.stringify(defaultValue.filter);
              grCanvasPreferences.update();
          }
      } else {
          grCanvasPreferences.initialize();
          grCanvasPreferences.canvas_page = canvasSysId;
          grCanvasPreferences.user = userId;
          grCanvasPreferences.widget_id = defaultValue.id;
          grCanvasPreferences.name = defaultValue.name;
          grCanvasPreferences.value = JSON.stringify(defaultValue.filter);
          grCanvasPreferences.insert();
      }
      return {
          status: "ok"
      };

  },
  removeDefaultValue: function(canvasSysId, widgetId) {
      if (!this.checkCanvasAuthorization())
          return;

      var userId = gs.getUserID();
      var grCanvasPreferences = new GlideRecord('sys_canvas_preferences');
      grCanvasPreferences.addQuery('canvas_page', canvasSysId);
      grCanvasPreferences.addQuery('user', userId);
      grCanvasPreferences.addQuery('widget_id', widgetId);
      grCanvasPreferences.addQuery('name', "default_value");
      grCanvasPreferences.query();
      grCanvasPreferences.next();
      grCanvasPreferences.deleteRecord();
      return {
          status: "ok"
      };

  },
  removeAllDefaultValue: function(canvasSysId) {
      if (!this.checkCanvasAuthorization())
          return;

      var userId = gs.getUserID();
      var grCanvasPreferences = new GlideRecord('sys_canvas_preferences');
      grCanvasPreferences.addQuery('canvas_page', canvasSysId);
      grCanvasPreferences.addQuery('user', userId);
      grCanvasPreferences.addQuery('name', "default_value");
      grCanvasPreferences.deleteMultiple();
      return {
          status: "ok"
      };

  },
  saveDefaultValue: function() {
      var sysId = this.getParameter('sysparm_canvas_id');
      var defaultFilter = JSON.parse(this.getParameter('sysparm_default_filter'));

      this.sendUsage([defaultFilter], sysId, 'filter');

      return this.setDefaultValue(sysId, defaultFilter);
  },
  deleteDefaultValue: function() {
      var sysId = this.getParameter('sysparm_canvas_id');
      var widgetId = this.getParameter('sysparm_default_filter_id');
      return this.removeDefaultValue(sysId, widgetId);
  },
  deleteAllDefaultValue: function() {
      var sysId = this.getParameter('sysparm_canvas_id');
      return this.removeAllDefaultValue(sysId);
  },
  getDefaultValues: function(canvasSysId) {
      var canvasId = canvasSysId ? canvasSysId : this.getParameter('sysparm_canvas_id');
      if (!this.checkCanvasAuthorization())
          return;

      var userId = gs.getUserID();
      var grCanvasPreferences = new GlideRecord('sys_canvas_preferences');
      var defaultFilters = [];
      grCanvasPreferences.addQuery('canvas_page', canvasId);
      grCanvasPreferences.addQuery('user', userId);
      grCanvasPreferences.addQuery('name', 'default_value');
      grCanvasPreferences.query();
      while (grCanvasPreferences.next()) {
          defaultFilters.push(this.getFilterJSON(grCanvasPreferences));
      }
      var result = this.newItem("result");
      result.setAttribute("filters", JSON.stringify(defaultFilters));

      this.sendUsage(defaultFilters, canvasId, 'filters');

      return JSON.stringify(defaultFilters);
  },
  getFilterJSON: function(grCanvasPreference) {
      var defaultFilter = {};
      defaultFilter.id = grCanvasPreference.getValue("widget_id");
      defaultFilter.name = grCanvasPreference.getValue("name");
      defaultFilter.filters = JSON.parse(grCanvasPreference.getValue("value"));
      defaultFilter.queryParts = this.getQueryParts(grCanvasPreference.getValue("value"));
      return defaultFilter;
  },
  getQueryParts: function(conditions) {
      var self = this;
      var queryConditions = JSON.parse(conditions);
      var queryParts = queryConditions.map(self.getQueryPart);
      return queryParts;
  },
  getQueryPart: function(condition) {
      var queryPart = new SNC.InteractiveFilterUtils().getQueryPartForFilter(JSON.stringify(condition));
      return JSON.parse(queryPart);
  },
  getFilterJSONForQueryParts: function(key, filters) {
      var defaultFilter = {};
      defaultFilter.id = key;
      defaultFilter.filters = filters;
      defaultFilter.queryParts = this.getQueryParts(filters);
      return defaultFilter;
  },
  addQueryPartsToHomePageFilters: function(filter) {
      var result = this.newItem("result");
      var filterParam = this.getParameter('sysparm_homepage_filters');
      var homepageFilter = new SNC.InteractiveFilterUtils().getQueryPartsForFilter(filterParam);
      result.setAttribute("filters", homepageFilter);
      return homepageFilter;
  },
  getInteractiveFilterQueryParts: function() {
      var result = this.newItem("result");
      var filterParam = this.getParameter('sysparm_interactive_filters');
      var interactiveFilterParts = new SNC.InteractiveFilterUtils().
  	getQueryPartsForFilter(filterParam);
      result.setAttribute("filters", interactiveFilterParts);
      return interactiveFilterParts;
  },
  sendUsage: function(defaultFilters, canvasId, filterAttr) {
      var licensingUtil = new PALicensingUtils('interactiveFilter');

      if (licensingUtil.connect()) {
          var sendJsonInit = {
              canvas_id: canvasId
          };
          for (var k = 0; k < defaultFilters.length; k++) {
              sendJsonInit.filter_id = defaultFilters[k].id;
              var filterList = defaultFilters[k][filterAttr];

              if (Array.isArray(defaultFilters[k][filterAttr])) {
                  for (var i = 0; i < filterList.length; i++) {
                      if (filterList[i].table)
                          licensingUtil.sendUsage(sendJsonInit, filterList[i].table);
                  }
              } else {
                  //group type filters contain filter object lists
                  for (var filterId in defaultFilters[k][filterAttr]) {
                      filterList = defaultFilters[k][filterAttr][filterId];
                      for (var j = 0; j < filterList.length; j++) {
                          if (filterList[j].table)
                              licensingUtil.sendUsage(sendJsonInit, filterList[j].table);
                      }
                  }
              }
          }
          licensingUtil.disconnect();
      }
  },

  type: 'InteractiveFilterDefaults'
});

Sys ID

6c76e846c3131200bde4beae82d3ae7c

Offical Documentation

Official Docs: