Name

sn_sow.SOWMetricHistoryUtils

Description

No description available

Script

var SOWMetricHistoryUtils = Class.create();
SOWMetricHistoryUtils.prototype = {
  FILTER_OPTIONS: [{
          "id": "1h",
          "label": gs.getMessage("Last 1 hour")
      }, {
          "id": "3h",
          "label": gs.getMessage("Last 3 hours")
      }, {
          "id": "24h",
          "label": gs.getMessage("Last 24 hours")
      }, {
          "id": "7d",
          "label": gs.getMessage("Last 7 days")
      }, {
          "id": "14d",
          "label": gs.getMessage("Last 14 days")
      },
      {
          "id": "30d",
          "label": gs.getMessage("Last 30 days")
      },
      {
          "id": "60d",
          "label": gs.getMessage("Last 60 days")
      },
      {
          "id": "90d",
          "label": gs.getMessage("Last 90 days")
      },
      {
          "id": "ytd",
          "label": gs.getMessage("Year to date")
      }
  ],

  METRIC_SNAPSHOT_FETCH_WINDOW: 60, //seconds

  initialize: function() {
      this.investigateConfig = new SOWInvestigateConfig();
  },

  getInitialData: function(table, id) {
      var metricDefinitionSysId = this.investigateConfig.DEFINITION_CONFIG_MAP.ASSET_UTILIZATION;
      var result = {
          "filterOptions": this.FILTER_OPTIONS,
          "thresholds": this.investigateConfig.DEFINITION_CONFIG[metricDefinitionSysId]["THRESHOLD"]
      };
      var gr = new GlideRecord(table);
      if (gr.get(id)) {
          result.recordInfo = {
              "label": gs.getMessage("{0} created", gr.getLabel()),
              "value": gr.getDisplayValue('sys_created_on')
          };
      }
      return result;
  },

  setTimeToZero: function(gdt) {
      var newDateTime = gdt.getDisplayValueInternal();
      newDateTime = newDateTime.split(" ")[0] + " 00:00:00";
      gdt.setDisplayValueInternal(newDateTime);
      return gdt;
  },

  getStartAndEndTimeAsNumbers: function(filter) {
      var time = {
          start: 0,
          end: 0
      };
      var start = new GlideDateTime();
      var end = new GlideDateTime();
      time.end = end.getNumericValue();
      switch (filter) {
          case "1h":
              start.subtract(3600000);
              break;
          case "3h":
              start.subtract(3600000 * 3);
              break;
          case "24h":
              start.subtract(3600000 * 24);
              break;
          case "7d":
              start.subtract(3600000 * 24 * 7);
              this.setTimeToZero(start);
              break;
          case "14d":
              start.subtract(3600000 * 24 * 14);
              this.setTimeToZero(start);
              break;
          case "30d":
              start.subtract(3600000 * 24 * 30);
              this.setTimeToZero(start);
              break;
          case "60d":
              start.subtract(3600000 * 24 * 60);
              this.setTimeToZero(start);
              break;
          case "90d":
              start.subtract(3600000 * 24 * 90);
              this.setTimeToZero(start);
              break;
          case "ytd":
              var year = start.getYearUTC();
              var val = year + "-01-01 " + "00:00:00";
              start.setDisplayValueInternal(val);
              break;
      }
      time.start = start.getNumericValue();
      return time;
  },

  transformMetricData: function(sourceTable, sourceSysId, metricData) {
      var sowInvestigateUtil = new SOWInvestigateUtils(sourceTable, sourceSysId);
      var metricIds = Object.keys(metricData);

      for (var i = 0; i < metricIds.length; i++) {
          sowInvestigateUtil.transformData(metricIds[i], metricData[metricIds[i]]);
      }

      return sowInvestigateUtil.RESULT;
  },

  getMetricSnapshot: function(sourceTable, sourceSysId, selectedCI, timestamp) {

      var investigationConfig = new SOWInvestigateConfig();
      var metricDefIdscsv = investigationConfig.getDefinitionIdsHistory(sourceTable);
      var metricData = {};

      var result = {
          definitionGroupData: {},
          visualization: [],
          tabular: []
      };

      if (metricDefIdscsv) {
          var metricDefIds = metricDefIdscsv.split(',');
      }

      if (!metricDefIds || !timestamp) {
          return result;
      }

      var start = null,
          end = null;

      var gdt = new GlideDateTime();
      gdt.setValue(timestamp);

      gdt.add(this.METRIC_SNAPSHOT_FETCH_WINDOW * -1 * 1000);
      start = gdt.getValue();

      gdt.add(this.METRIC_SNAPSHOT_FETCH_WINDOW * 2 * 1000);
      end = gdt.getValue();

      var ciMetricEngine = new sn_cimaf.CIMetricEngine();

      for (var j = 0; j < metricDefIds.length; j++) {
          metricData[metricDefIds[j]] = ciMetricEngine.getNearestMetric(selectedCI, metricDefIds[j], start, end, timestamp);
      }
      return this.transformMetricData(sourceTable, sourceSysId, metricData);
  },

  type: 'SOWMetricHistoryUtils'
};

Sys ID

3315168ac7630110d7e818b1c7c2608a

Offical Documentation

Official Docs: