After clicking visualization , No value displayed in service operation workspace
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-17-2025 10:52 PM
Hello Community!
I want to display interaction assigned to me count after clicking on visualization inn service operation workspace.
But currently it shows undefined.
function include({
imports
}) {
class ServiceDeskLandingPageUtilsSNC {
/**
* Returns visualization configs
* @Param {object} helpers
* @Param {string} mode
* @return object
*/
static async getVisualizationConfig(helpers, mode) {
const evamDef = this.getEvamDef();
const visualizationConfig = [{
"id": "interaction_donut",
"tableName": "interaction",
"tableDisplayValue": "interaction",
"myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
"myTeamQuery": "active=true^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page",
"header": mode == 'your_work' ? await helpers.translate("Interaction assigned to me") : await helpers.translate("Interaction assigned to my team"),
"groupByField": "state",
"evamId": evamDef['Service Desk Interaction'],
"updated_on": "^ORDERBYDESCsys_updated_on",
},
{
"id": "incident_assigned",
"tableName": "incident",
"tableDisplayValue": "Incident",
"myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe^state!=6",
"myTeamQuery": "active=true^assigned_toISNOTEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744^state!=6",
"listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page",
"header": mode == 'your_work' ? await helpers.translate("Incidents assigned to me") : await helpers.translate("Incidents assigned to my team"),
"groupByField": "state",
"evamId": evamDef['incidentEvamDefinitionId'],
"updated_on": "^ORDERBYDESCsys_updated_on",
},
{
"id": "sc_req_item",
"tableName": "sc_req_item",
"tableDisplayValue": "Requested Items",
"myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
"myTeamQuery": "active=true^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": 'sow_landing_page',
"header": mode == 'your_work' ? await helpers.translate("Catalog Items assigned to me") : await helpers.translate("Catalog items assigned to my team"),
"groupByField": "state",
"evamId": evamDef["Service Desk RITM"],
"updated_on": "^ORDERBYDESCsys_updated_on",
},
{
"id": "catalog_tasks",
"tableName": "sc_task",
"tableDisplayValue": "Catalog Task",
"myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
"myTeamQuery": "active=true^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": 'sow_landing_page',
"header": mode == 'your_work' ? await helpers.translate("Catalog tasks assigned to me") : await helpers.translate("Catalog tasks assigned to my team"),
"groupByField": "state",
"evamId": evamDef["catalogTaskEvamDefinitionId"],
"updated_on": "^ORDERBYDESCsys_updated_on",
},
{
"id": "incident_sla",
"tableName": "task_sla",
"tableDisplayValue": "Task SLA",
"myWorkQuery": "task.sys_class_name=incident^task.assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe^task.active=true^sla.type=SLA^ORsla.type=OLA^active=true^time_left<=1970-01-08 00:00:00",
"myTeamQuery": "task.sys_class_name=incident^task.assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744^task.active=true^sla.type=SLA^ORsla.type=OLA^active=true^time_left<=1970-01-08 00:00:00",
"listView": 'sow_landing_page',
"header": await helpers.translate("Incident SLAs"),
"groupByField": "time_left",
"evamId": evamDef['incidentSlaEvamDefinitionId'],
"updated_on": "^ORDERBYtime_left",
}
/*
// This is commented by Asha Pathak (Infocenter) as "Story Assigned to me" was not required to be visible on the Homepage
{
"id": "story_assigned",
"tableName": "rm_story",
"tableDisplayValue": "Story",
"myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
"myTeamQuery": "active=true^assigned_toISNOTEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page",
"header": mode == 'your_work' ? await helpers.translate("Stories assigned to me") : await helpers.translate("Stories assigned to my team"),
"groupByField": "state",
"evamId": evamDef['storiesEvamDefinitionId'],
"updated_on": "^ORDERBYDESCsys_updated_on",
},
*/
];
if (mode == 'your_work' && conditionalRecordCount > 0) {
const conditionalConfig = await this.getConditionalVisualizationConfig(helpers);
visualizationConfig.push(conditionalConfig);
}
if (mode != 'your_work') {
var unassigned_incident =
{
"id": "unassigned_incidents",
"tableName": "incident",
"tableDisplayValue": "Incident",
"myTeamQuery": "active=true^assigned_toISEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page",
"header": await helpers.translate("Unassigned incidents"),
"groupByField": "priority",
"evamId": evamDef['incidentEvamDefinitionId'],
"updated_on": "^ORDERBYDESCsys_updated_on",
};
var unassigned_interaction =
{
"id": "donut_id",
"tableName": "interaction",
"tableDisplayValue": "Interaction",
"myTeamQuery": "active=true^assigned_toISEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page",
"header": await helpers.translate("Unassigned interactions"),
"groupByField": "state",
"evamId": evamDef['Service Desk Interaction'],
"updated_on": "^ORDERBYDESCsys_updated_on",
};
var unassigned_catalog_items =
{
"id": "sc_req_item",
"tableName": "sc_req_item",
"tableDisplayValue": "Requested Items",
"myTeamQuery": "active=true^assigned_toISEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
"listView": mode == "your_work" ? "sow_landing_page_assigned" : "sow_landing_page",
"header": await helpers.translate("Unassigned Catalog items"),
"groupByField": "state",
"evamId": evamDef['Service Desk RITM'],
"updated_on": "^ORDERBYDESCsys_updated_on",
};
visualizationConfig.push(unassigned_incident);
visualizationConfig.push(unassigned_interaction);
visualizationConfig.push(unassigned_catalog_items );
}
return visualizationConfig;
}
/**
* Build visualization card configurations (Donut)
* @Param {object} helpers
* @Param {string} mode
* @return object
*/
static async getDonutConfig(helpers, mode) {
var donutConfig = [];
var visualizationConfig = await this.getVisualizationConfig(helpers, mode);
for (var i = 0; i < visualizationConfig.length; i++) {
var obj = {};
obj = {
"id": visualizationConfig[i].id,
"header": visualizationConfig[i].header,
"evamId": visualizationConfig[i].evamId,
"updated_on": visualizationConfig[i]["updated_on"],
"listView": visualizationConfig[i].listView,
"datasource": [{
"isDatabaseView": false,
"allowRealTime": true,
"sourceType": "table",
"label": {
"message": visualizationConfig[i].tableDisplayValue
},
"tableOrViewName": visualizationConfig[i].tableName,
"filterQuery": mode == 'your_work' ? visualizationConfig[i].myWorkQuery : visualizationConfig[i].myTeamQuery,
"id": visualizationConfig[i].id
}],
"metric": [{
"dataSource": visualizationConfig[i].id,
"id": visualizationConfig[i].id + "metric",
"aggregateFunction": "COUNT",
"numberFormat": {
"customFormat": false
},
"axisId": "primary"
}],
"groupBy": [{
"maxNumberOfGroups": "ALL",
"numberOfGroupsBasedOn": "NO_OF_GROUP_BASED_ON_PER_METRIC",
"showOthers": false,
"hideZeroValues": true,
"groupBy": [{
"dataSource": visualizationConfig[i].id,
"groupByField": visualizationConfig[i].groupByField,
"isRange": false,
"isPaBucket": false
}]
}]
};
donutConfig.push(obj);
}
return donutConfig;
}
static getEvamDef() {
const evamDef = {
'incidentEvamDefinitionId': '01a404e8b7203010e69dbc16de11a93f',
'incidentSlaEvamDefinitionId': '749b857eb7283010e69dbc16de11a98d',
'storiesEvamDefinitionId' : 'ffdebcbc1b3fad50789a4197dc4bcb83',
'catalogTaskEvamDefinitionId': '4a59c876c7323010d7e818b1c7c26083',
'Service Desk Interaction':'2cb49e841b16ce50789a4197dc4bcbd5',
'Service Desk RITM':'38f2bb0187b75650cb567777dabb35d7',
// Updated by Priyanka Agarwal for stories to be viewed on SOW on 03/07/2023 for Case no CASE0045980
};
return evamDef;
}
/**
* Returns configuration for work persona dropdown
* @Param {object} helpers
* @return {object}
*/
static async getWorkPersonaConfig(helpers) {
return {
"items": [{
"id": "your_work",
"label": await helpers.translate("My work")
},
{
"id": "your_team_work",
"label": await helpers.translate("My team's work")
}
],
"defaultSelected": ["your_work"]
}
}
static getRangeObject(query, key) {
var ans = {}
var queryTokens = query.split('^');
for (var index in queryTokens) {
var token = queryTokens[index];
if (token.indexOf(key) == -1)
continue;
token = token.replace('=', '');
if (token.indexOf('<') != -1)
ans.end_value = token.substring(token.indexOf('<') + 1)
else
ans.start_value = token.substring(token.indexOf('>') + 1)
}
return ans;
}
static async getSLAHeader(range, report_ranges, helpers) {
for (var index in report_ranges) {
if (range.end_value == report_ranges[index].upper_value_duration)
return (await helpers.translate("Incident SLA time remaining - {0}", report_ranges[index].label));
}
return (await helpers.translate('Incident SLAs'));
}
static getFieldMap() {
const fieldMap = {
'State': 'state',
'Priority': 'priority',
'Actual time left': 'time_left'
};
return fieldMap;
}
static async fetchTitleForSLA(query, reportRanges, helpers) {
var range = this.getRangeObject(query, 'time_left');
return (await this.getSLAHeader(range, reportRanges, helpers));
}
static async fetchTitle(table, nameValueMap, groupByLabel, groupMode = false) {
const groupByField = this.getFieldMap()[groupByLabel];
return this.getLabelMaps(table, nameValueMap[groupByField], groupByField, groupMode);
}
static getLabelMaps(table, selectedField, groupByField, groupMode = false) {
const labelMap = {
'incident': {
'state': {
'1': 'New incidents',
'2': 'In Progress incidents',
'3': 'On Hold incidents',
'6': 'Resolved incidents'
},
'priority': {
'1': 'P1 unassigned incidents',
'2': 'P2 unassigned incidents',
'3': 'P3 unassigned incidents',
'4': 'P4 unassigned incidents',
'5': 'P5 unassigned incidents'
}
},
'rm_story':{
'state':{
'-6' : 'Draft',
'1' : 'Ready',
'2' : 'Work In Progress',
'-7' : 'Ready for Testing',
'-8' : 'Testing'
}
},
'sc_task': {
'state': {
'-5': 'Pending catalog tasks',
'1': 'Open catalog tasks',
'2': 'Work in progress catalog tasks'
}
},
'interaction' : {
'state': {
'-3': 'On Hold',
'1': 'New',
'2': 'Work in Progress'
}
}
};
if(table == 'incident' && groupByField == 'priority')
return labelMap[table][groupByField][selectedField];
if (groupMode)
return labelMap[table][groupByField][selectedField] + ' assigned to my team';
return labelMap[table][groupByField][selectedField] + ' assigned to me';
}
static async getVisualisationCardConfig(id, helpers, mode) {
var visualizationConfig = await this.getVisualizationConfig(helpers, mode);
var currentVizSelection = {};
for (var i = 0; i < visualizationConfig.length; i++) {
if (visualizationConfig[i].id === id) {
currentVizSelection.table = visualizationConfig[i].tableName;
currentVizSelection.query = mode === "your_team_work" ? visualizationConfig[i].myTeamQuery + visualizationConfig[i]["updated_on"] : visualizationConfig[i].myWorkQuery + visualizationConfig[i]["updated_on"];
currentVizSelection.evamId = visualizationConfig[i].evamId;
currentVizSelection.elementId = visualizationConfig[i].id;
currentVizSelection.title = visualizationConfig[i].header;
currentVizSelection.groupByField = visualizationConfig[i].groupByField;
currentVizSelection.listView = visualizationConfig[i].listView;
break;
}
}
return currentVizSelection;
}
static async getVisualisationCardQuery(vizSelection, nameValueMap, helpers, mode) {
var field = this.getFieldMap()[vizSelection.groupBy];
var value = nameValueMap[field];
var query = '';
var visualizationConfig = await this.getVisualizationConfig(helpers, mode);
for (var i = 0; i < visualizationConfig.length; i++) {
if (visualizationConfig[i].id === vizSelection.elementId) {
query = mode === "your_team_work" ? visualizationConfig[i].myTeamQuery : visualizationConfig[i].myWorkQuery;
break;
}
}
if (Array.isArray(value)) {
for (let index in value)
query += '^' + field + value[index];
} else {
if (value.includes('='))
query += '^' + field + value;
else
query += '^' + field + '=' + value;
}
return query + visualizationConfig[0]["updated_on"];
}
}
return ServiceDeskLandingPageUtilsSNC;
}
This is the script.
Please help!
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-17-2025 10:54 PM
Not count, display name of state for interaction table