계층 1 방문 페이지에서 도넛 구성

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기10분
  • 계층 1 방문 페이지의 개요 섹션에서 도넛에 표시되는 데이터를 구성합니다.

    시작하기 전에

    필요한 역할: admin

    이 태스크 정보

    모든 도넛에 대해 헤더 레이블, 데이터 소스, 메트릭, 필드별 그룹 및 viewAllQuery를 사용자 지정할 수 있습니다. 나에게 할당된 문제 도넛을 예로 들 수 있습니다.

    프로시저

    1. 다음으로 이동 모두 > 서비스 운영 작업 공간 관리자 센터 > 개요.
    2. 초기 설정 섹션의 개요 탭에서 방문 페이지 구성 옵션을 선택합니다.
    3. 방문 페이지 양식의 계층 1 섹션에서 도넛 구성 옆에 있는 구성을 선택합니다.
    4. 옵션: 방문 페이지에서 PAR 대시보드가 활성 상태인 경우 다음을 수행합니다.
      1. 계층 1 대시보드 구성을 구성합니다.
        주:
        대시보드를 만드는 경우 저장된 시각화를 사용하여 대시보드에 대한 카드를 만들 수 있습니다. 데이터 시각화는 해당 역할에 따라 사용자에게만 표시됩니다.

        대시보드 가시성에서와 같이 서비스 운영 작업 공간 값을 추가했는지 확인합니다.

      2. 방문 페이지 드롭다운 옵션에 로드된 대시보드에서 SOW 방문 페이지의 기본 대시보드를 선택합니다. 저장을 선택합니다.
      3. 대시보드에서 요소를 수정한 후 저장을 선택합니다.
    5. 옵션: 방문 페이지에서 PAR 대시보드가 활성화되어 있지 않으면 스크립트 필드를 편집하여 클래스 ServiceDeskLandingPageUtils내에 코드를 추가합니다.
      static async getVisualizationConfig(helpers, mode) { 
      
                  const evamDef = this.getEvamDef(); 
      
                  const visualizationConfig = [{ 
      
                          "id": "incident_assigned", 
      
                          "tableName": "incident", 
      
                          "tableDisplayValue": "Incident", 
      
                          "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("Incidents assigned to you") : await helpers.translate("Incidents assigned to your team"), 
      
                          "groupByField": "state", 
      
                          "evamId": evamDef['incidentEvamDefinitionId'], 
      
                          "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", 
      
                      }, 
      
                      { 
      
                          "id": "unassigned_incidents", 
      
                          "tableName": "incident", 
      
                          "tableDisplayValue": "Incident", 
      
                          "myWorkQuery": "active=true^assigned_toISEMPTY^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744", 
      
                          "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", 
      
                      }, 
      
                      { 
      
                          "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 you") : await helpers.translate("Catalog tasks assigned to your team"), 
      
                          "groupByField": "state", 
      
                          "evamId": evamDef["catalogTaskEvamDefinitionId"], 
      
                          "updated_on": "^ORDERBYDESCsys_updated_on", 
      
                      } 
      
                  ]; 
      
                  return visualizationConfig; 
      
              } 

      예를 들어 문제 도넛을 추가하려면 새 도넛이 방문 페이지의 목록과 상호작용할 수 있도록 스크립트에 다음을 추가합니다. SowIncidentLandingPageUtilsSNC에서 복사되지만 problem_task가 추가됩니다.

      static async fetchTitle(table, nameValueMap, groupMode = false, elementId) { 
      
                  if (table === "task") { 
      
                      return this.getLabelMaps(table, nameValueMap['sys_class_name'], groupMode, elementId); 
      
                  } 
      
                  return this.getLabelMaps(table, nameValueMap['state'], groupMode, elementId); 
      
              } 
      
       
      
      static getLabelMaps(table, selectedField, groupMode = false, elementId) { 
      
                  if (selectedField == undefined) { 
      
                      selectedField = 'all'; 
      
                  } 
      
                  const labelMap = { 
      
                      'incident': { 
      
                          '1': 'New incidents', 
      
                          '2': 'In Progress incidents', 
      
                          '3': 'On Hold incidents', 
      
                          '6': 'Resolved incidents', 
      
                          'all': 'Incidents' 
      
                      }, 
      
                      'change_request': { 
      
                          '0': 'In Review changes', 
      
                          '-1': 'Implement changes', 
      
                          '-2': 'Scheduled changes', 
      
                          '-3': 'Authorize changes', 
      
                          '-4': 'Assess changes', 
      
                          '-5': 'New changes', 
      
                          'all': 'Changes' 
      
                      }, 
      
                      'problem_task': { 
      
                          '151': 'New', 
      
                          '154': 'Work in Progress', 
      
                          '152': 'Assess', 
      
                          '157': 'Closed', 
      
                          'all': 'Problem Tasks' 
      
                      }, 
      
                      'problem': { 
      
                          '101': 'New problems', 
      
                          '102': 'Assess problems', 
      
                          '106': 'Resolved problems', 
      
                          '104': 'Fix in Progress problems', 
      
                          '103': 'Root Cause Analysis problems', 
      
                          'all': 'Problems' 
      
                      }, 
      
                      'task': { 
      
                          'incident_task': 'Incident tasks', 
      
                          'problem_task': 'Problem tasks', 
      
                          'change_task': 'Change tasks', 
      
                          'sc_task': 'Catalog tasks', 
      
                          'incident': 'Incidents', 
      
                          'problem': 'Problems', 
      
                          'change_request': 'Change requests', 
      
                          'all': 'Tasks' 
      
                      } 
      
                  }; 
      
                  if (elementId === 'delegated_task') 
      
                      return labelMap[table][selectedField] + ' delegated to you'; 
      
                  if (groupMode) 
      
                      return labelMap[table][selectedField] + ' assigned to your team'; 
      
                  return labelMap[table][selectedField] + ' assigned to you'; 
      
              } 

      다음 코드를 추가적인 도넛으로 추가합니다.

       { 
      
                      "id": "problem_task_assigned", 
      
                      "tableName": "problem_task", 
      
                      "tableDisplayValue": "Problem Tasks", 
      
                      "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("Problem Tasks assigned to you") : await helpers.translate("Problem Tasks assigned to your team"), 
      
                      "groupByField": "state", 
      
                      //  "evamId": evamDef['incidentEvamDefinitionId'], 
      
                      "updated_on": "^ORDERBYDESCsys_updated_on", 
      
        }, 
    6. 업데이트를 선택합니다.