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