Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

After clicking visualization , No value displayed in service operation workspace

Asha Pathak
Tera Contributor

Hello Community!

 

I want to display interaction assigned to me count after clicking on visualization inn service operation workspace.

But currently it shows undefined.

 

 

AshaPathak_0-1739861521525.png

 

 

 

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

Asha Pathak
Tera Contributor

Not count, display name of state for interaction table