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

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 11분
  • 계층 1 방문 페이지의 개요 섹션에서 도넛에 표시되는 데이터를 구성합니다.

    시작하기 전에

    필요한 역할: admin

    이 태스크 정보

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

    프로시저

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

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

      2. 방문 페이지 드롭다운 옵션에 로드된 대시보드에서 SOW 방문 페이지의 기본 대시보드를 선택합니다. 저장을 선택합니다.
      3. 대시보드에서 요소를 수정한 후 저장을 선택합니다.
    5. 옵션: 방문 페이지에서 PAR 대시보드가 활성화되어 있지 않으면 스크립트 필드를 편집하여 클래스 ServiceDeskLandingPageUtils내에 코드를 추가합니다.
      주:
      이 메서드는 에서 복사 SowIncidentLandingPageUtilsSNC됩니다. 새 도넛을 추가하거나 기존 도넛을 제거하려면 요구 사항에 따라 메서드를 SowIncidentLandingPageUtils 복사 getVisualizationConfig 하고 수정해야 합니다.
      static async getVisualizationConfig(helpers, mode, conditionalRecordCount=0) {
                  const evamDef = this.getEvamDef();
                  const visualizationConfig = [{
                          "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 you") : await helpers.translate("Incidents assigned to your team"),
                          "groupByField": "state",
                          "evamId": evamDef['incidentEvamDefinitionId'],
                          "updated_on": "^ORDERBYDESCsys_updated_on",
                          "roles":mode == "your_work" ? ["itil","sn_incident_write"] : ["itil","sn_incident_read"],
                      },
                      {
                          "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",
                          "roles":mode == "your_work" ? ["itil","sn_incident_write"] : ["itil","sn_incident_read"],
                      },
                      {
                          "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",
                          "roles":mode == "your_work" ? ["itil","sn_incident_read"] : ["itil","sn_incident_read"],
                      },
                      {
                          "id": "catalog_tasks",
                          "tableName": "sc_task",
                          "tableDisplayValue": "Catalog Task",
                          "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("Catalog tasks assigned to you") : await helpers.translate("Catalog tasks assigned to your team"),
                          "groupByField": "state",
                          "evamId": evamDef["catalogTaskEvamDefinitionId"],
                          "updated_on": "^ORDERBYDESCsys_updated_on",
                          "roles":mode == "your_work" ? ["itil","sn_request_write"] : ["itil","sn_request_read"],
                      }
                  ];
      
                  if(mode=='your_work' && conditionalRecordCount>0){
                      const conditionalConfig = await this.getConditionalVisualizationConfig(helpers);
                      visualizationConfig.push(conditionalConfig);
                  }
      
                  return visualizationConfig;
              }
       

      계층 1 방문 페이지에 문제 도넛형을 추가하려면 아래에 언급된 코드 스니펫과 유사한 요구 사항에 따라 스니펫을 추가합니다.

      {
      "id": "problemsAssigned",
                      "tableName": "problem",
                      "tableDisplayValue": "Problem",
                      "myWorkQuery": "active=true^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
                      "myTeamQuery": "active=true^assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744",
                      "header": mode == 'your_work' ? await helpers.translate("Problems assigned to you") : await helpers.translate("Problems assigned to your team"),
                      "groupByField": "state",
                      "evamId": "5f0697b8f49bc510f8773ad5bd0ae292",
                      "updated_on": "^ORDERBYDESCsys_updated_on",
                      "roles":mode == "your_work" ? ["itil","problem_coordinator"] : ["itil","sn_problem_read","problem_task_analyst"]
      }
      

      fetchTitle 도넛을 클릭할 때 표시되는 목록의 레이블을 추가하려면 다음에서 SowIncidentLandingPageUtilsSNC 방법을 복사합니다.

          static async fetchTitle(table, selectedField, groupByField, groupMode = false) {
                  if(selectedField == undefined){
                       selectedField = 'all';
                      }
                  const labelMap = {
                      'incident': {
                          'state': {
                              'all':'Incidents',
                              '1': 'New incidents',
                              '2': 'In Progress incidents',
                              '3': 'On Hold incidents',
                              '6': 'Resolved incidents'
                          },
                          'priority': {
                              'all':'Unassigned incidents',
                              '1': 'P1 unassigned incidents',
                              '2': 'P2 unassigned incidents',
                              '3': 'P3 unassigned incidents',
                              '4': 'P4 unassigned incidents',
                              '5': 'P5 unassigned incidents'
                          }
                      },
                      'sc_task': {
                          'state': {
                              'all':'Catalog tasks',
                              '-5': 'Pending catalog tasks',
                              '1': 'Open catalog tasks',
                              '2': 'Work in progress catalog tasks'
                          }
                      },
                      'task': {
                          'sys_class_name': {
                              'sc_task': 'Catalog tasks delegated to you',
                              'incident': 'Incidents delegated to you'
                          }
                      }
                  };
      
                  if((table == 'incident' && groupByField == 'priority') || table == 'task')
                      return labelMap[table][groupByField][selectedField];
      
                  if (groupMode)
                      return labelMap[table][groupByField][selectedField] + ' assigned to your team';
                  return labelMap[table][groupByField][selectedField] + ' assigned to you';
              }
      

      아래 예제 코드 블록에 언급된 대로 레이블을 추가하면 도넛을 클릭할 때 목록 제목으로 표시됩니다.

         'problem': {  
      'state' :{      
           '101': 'New problems',
                          '102': 'Assess problems',
                          '106': 'Resolved problems',
                          '104': 'Fix in Progress problems',
                          '103': 'Root Cause Analysis problems',
                          'all':'Problems'
            }
                      },
      
    6. 업데이트를 선택합니다.