diff --git a/AxonIvyPortal/PortalKitTestHelper/processes/Start Processes/GrantPermissions.p.json b/AxonIvyPortal/PortalKitTestHelper/processes/Start Processes/GrantPermissions.p.json
index 5264911af32..7371ed7db65 100644
--- a/AxonIvyPortal/PortalKitTestHelper/processes/Start Processes/GrantPermissions.p.json
+++ b/AxonIvyPortal/PortalKitTestHelper/processes/Start Processes/GrantPermissions.p.json
@@ -446,16 +446,7 @@
"import ch.ivyteam.ivy.security.restricted.permission.IPermissionRepository;",
"import ch.ivyteam.ivy.security.IPermission;",
"",
- "IPermission iPermission = IPermissionRepository.instance().findByName(PortalPermission.STATISTIC_ADD_DASHBOARD_CHART.getValue());",
- " if (Objects.nonNull(iPermission)){",
- " ISecurityContext.current().securityDescriptor().grantPermission(iPermission, ivy.session.getSessionUser());",
- " }",
- " ",
- "iPermission = IPermissionRepository.instance().findByName(PortalPermission.EXPRESS_CREATE_WORKFLOW.getValue());",
- " if (Objects.nonNull(iPermission)){",
- " ISecurityContext.current().securityDescriptor().grantPermission(iPermission, ivy.session.getSessionUser());",
- " }",
- "iPermission = IPermissionRepository.instance().findByName(PortalPermission.STATISTIC_ANALYZE_TASK.getValue());",
+ "IPermission iPermission = IPermissionRepository.instance().findByName(PortalPermission.EXPRESS_CREATE_WORKFLOW.getValue());",
" if (Objects.nonNull(iPermission)){",
" ISecurityContext.current().securityDescriptor().grantPermission(iPermission, ivy.session.getSessionUser());",
" }",
@@ -603,15 +594,7 @@
"import ch.ivyteam.ivy.security.restricted.permission.IPermissionRepository;",
"import ch.ivyteam.ivy.security.IPermission;",
"",
- "IPermission iPermission = IPermissionRepository.instance().findByName(PortalPermission.STATISTIC_ADD_DASHBOARD_CHART.getValue());",
- " if (Objects.nonNull(iPermission)){",
- " ISecurityContext.current().securityDescriptor().denyPermission(iPermission, ivy.session.getSessionUser());",
- " }",
- " iPermission = IPermissionRepository.instance().findByName(PortalPermission.EXPRESS_CREATE_WORKFLOW.getValue());",
- " if (Objects.nonNull(iPermission)){",
- " ISecurityContext.current().securityDescriptor().denyPermission(iPermission, ivy.session.getSessionUser());",
- " }",
- " iPermission = IPermissionRepository.instance().findByName(PortalPermission.STATISTIC_ANALYZE_TASK.getValue());",
+ " IPermission iPermission = IPermissionRepository.instance().findByName(PortalPermission.EXPRESS_CREATE_WORKFLOW.getValue());",
" if (Objects.nonNull(iPermission)){",
" ISecurityContext.current().securityDescriptor().denyPermission(iPermission, ivy.session.getSessionUser());",
" }",
@@ -744,11 +727,6 @@
"iPermission = IPermissionRepository.instance().findByName(PortalPermission.ACCESS_FULL_CASE_LIST.getValue());",
"if (Objects.nonNull(iPermission)){",
" ISecurityContext.current().securityDescriptor().denyPermission(iPermission, ivy.session.getSessionUser());",
- "}",
- "",
- "iPermission = IPermissionRepository.instance().findByName(PortalPermission.ACCESS_FULL_STATISTICS_LIST.getValue());",
- "if (Objects.nonNull(iPermission)){",
- " ISecurityContext.current().securityDescriptor().denyPermission(iPermission, ivy.session.getSessionUser());",
"}"
]
},
@@ -787,11 +765,6 @@
"iPermission = IPermissionRepository.instance().findByName(PortalPermission.ACCESS_FULL_CASE_LIST.getValue());",
"if (Objects.nonNull(iPermission)){",
" ISecurityContext.current().securityDescriptor().grantPermission(iPermission, ivy.session.getSessionUser());",
- "}",
- " ",
- "iPermission = IPermissionRepository.instance().findByName(PortalPermission.ACCESS_FULL_STATISTICS_LIST.getValue());",
- "if (Objects.nonNull(iPermission)){",
- " ISecurityContext.current().securityDescriptor().grantPermission(iPermission, ivy.session.getSessionUser());",
"}"
]
},
diff --git a/AxonIvyPortal/PortalTest/jmeter/portal_walkthrough_testplan.jmx b/AxonIvyPortal/PortalTest/jmeter/portal_walkthrough_testplan.jmx
index 60fe6265f0b..3a4150f5bf5 100644
--- a/AxonIvyPortal/PortalTest/jmeter/portal_walkthrough_testplan.jmx
+++ b/AxonIvyPortal/PortalTest/jmeter/portal_walkthrough_testplan.jmx
@@ -2105,4349 +2105,6 @@
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- user-menu-required-login:main-navigator:main-menu
- =
- true
- javax.faces.source
-
-
- true
- user-menu-required-login:main-navigator:main-menu
- =
- true
- javax.faces.partial.execute
-
-
- true
- user-menu-required-login:main-navigator:main-menu
- =
- true
- javax.faces.partial.render
-
-
- true
- user-menu-required-login:main-navigator:main-menu
- =
- true
- user-menu-required-login:main-navigator:main-menu
-
-
- true
-
- =
- true
- taskId
-
-
- true
- false
- =
- true
- isWorkingOnATask
-
-
- true
- statistics
- =
- true
- menuKind
-
-
- true
-
- =
- true
- menuUrl
-
-
- true
- statistics_4
- =
- true
- user-menu-required-login:main-navigator:main-menu_menuid
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- false
- redirectURL
- <redirect url="([^"]+)">
- $1$
- emptyRedirectURL
- 1
-
-
-
- ${__P(portal.duration.ajax)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
-
-
-
-
- ${redirectURL}
- GET
- false
- true
- true
- false
-
-
-
-
-
-
- false
- viewState
- id="j_id__v_0:javax.faces.ViewState:1" value=("[\S]+")
- $1$
-
- 1
-
-
-
- URL
- url
- (http[\S]+)
- $1$
-
- 1
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:statistic-dashboard-widget:statistic-form:init-chart-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:statistic-dashboard-widget:statistic-form:init-chart-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:statistic-dashboard-widget:statistic-chart-repeater-container
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:statistic-dashboard-widget:statistic-form:init-chart-command
- =
- true
- statistics-widget:statistic-dashboard-widget:statistic-form:init-chart-command
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- false
- viewState
- id="j_id__v_0:javax.faces.ViewState:1" value=("[\S]+")
- $1$
-
- 1
-
-
-
- URL
- url
- (http[\S]+)
- $1$
-
- 1
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:create-chart-link
- =
- true
- javax.faces.source
-
-
- true
- @all
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:widget-container statistics-widget:create-chart-header
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:create-chart-link
- =
- true
- statistics-widget:create-chart-link
-
-
- true
-
- =
- true
- user-menu-required-login:global-search-component-mobile:global-search-data
-
-
- true
- 1
- =
- true
- user-menu-required-login:global-search-component-mobile-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- false
- viewState
- id="j_id__v_0:javax.faces.ViewState:1" value=("[\S]+")
- $1$
-
- 1
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
- true
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:init-filter-command
- =
- true
- javax.faces.source
-
-
- true
- @all
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:init-filter-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:init-filter-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:task-by-priority-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:case-by-state-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:task-by-expiry-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:elapsed-time-by-case-category
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:case-by-finished-task-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:case-by-finished-time-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- true
- false
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
- true
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:apply-filter-button
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:apply-filter-button
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:apply-filter-button
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:clear-chart-models-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:clear-chart-models-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:chart-list
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:clear-chart-models-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:clear-chart-models-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-chart-models-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:task-by-priority-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-priority-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:task-by-expiry-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-task-by-expiry-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:case-by-state-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-state-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:elapsed-time-by-case-category
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-elapsed-time-by-case-category-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:case-by-finished-task-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-task-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
-
-
- true
- true
- =
- true
- javax.faces.partial.ajax
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
- =
- true
- javax.faces.source
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
- =
- true
- javax.faces.partial.execute
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:case-by-finished-time-chart
- =
- true
- javax.faces.partial.render
-
-
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:update-case-by-finished-time-model-command
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_focus
-
-
- true
- CUSTOM
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:period-time-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-from_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:filter-to_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_filter
-
-
- true
- 0,0_0,0_1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_selection
-
-
- true
- 0,0
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-category-filter-tree_scrollState
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:roles-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:case-states-select-all_input
-
-
- true
- on
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:task-priorities-select-all_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField1:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField2:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField3:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField4:custom-string-selection_hinput
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_input
-
-
- true
-
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel:CustomVarCharField5:custom-string-selection_hinput
-
-
- true
- 0,1,2,3
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form:statistic-filter:statistic-filter-accordion-panel_active
-
-
- true
- 1
- =
- true
- statistics-widget:chart-creation-widget:chart-management-form_SUBMIT
-
-
- true
- ${viewState}
- =
- true
- javax.faces.ViewState
-
-
-
-
-
-
-
- ${url}
- POST
- false
- true
- true
- false
-
-
-
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
-
- ${__groovy("${username}" == "admin" || "${username}" == "portaladmin")}
- false
- true
-
-
-
-
-
-
-
-
-
-
- /${__P(security.system.name)}/${__P(portal.application.name)}/pro/${__P(portal.portal)}/1549F58C18A6C562/showTaskAnalysis.ivp
- GET
- false
- true
- true
- false
-
-
-
-
-
-
- false
- viewState
- id="j_id__v_0:javax.faces.ViewState:1" value=("[\S]+")
- $1$
-
- 1
-
-
-
- URL
- url
- (http[\S]+)
- $1$
-
- 1
-
-
-
- ${__P(portal.duration.normal)}
-
-
-
-
- 200
-
-
- Assertion.response_code
- false
- 8
-
-
-
-
diff --git a/AxonIvyPortal/portal-components/src/com/axonivy/portal/components/enums/PortalVariable.java b/AxonIvyPortal/portal-components/src/com/axonivy/portal/components/enums/PortalVariable.java
index d3fcb1cbc05..83acd79c589 100644
--- a/AxonIvyPortal/portal-components/src/com/axonivy/portal/components/enums/PortalVariable.java
+++ b/AxonIvyPortal/portal-components/src/com/axonivy/portal/components/enums/PortalVariable.java
@@ -4,7 +4,6 @@ public enum PortalVariable {
PASSWORD_VALIDATION("Portal.PasswordValidation"),
ANNOUNCEMENT("Portal.Announcement"),
THIRD_PARTY_APP("Portal.ThirdPartyApplications"),
- STATISTIC_CHART("Portal.StatisticCharts"),
WIDGET_FILTER("Portal.Dashboard.WidgetFilters"),
EXTERNAL_LINK("Portal.Processes.ExternalLinks"),
EXPRESS_PROCESS("Portal.Processes.ExpressProcesses"),
diff --git a/AxonIvyPortal/portal-components/webContent/resources/js/process-history-component.js b/AxonIvyPortal/portal-components/webContent/resources/js/process-history-component.js
index 54a42de600a..665d499a373 100644
--- a/AxonIvyPortal/portal-components/webContent/resources/js/process-history-component.js
+++ b/AxonIvyPortal/portal-components/webContent/resources/js/process-history-component.js
@@ -205,8 +205,7 @@ var MainMenu = {
["CaseWidget.xhtml", "CASE"],
["PortalCaseDetails.xhtml", "CASE"],
["CaseItemDetails.xhtml", "CASE"],
- ["PortalDashBoard.xhtml", "DASHBOARD"],
- ["TaskAnalysis.xhtml", "DASHBOARD"]],
+ ["PortalDashBoard.xhtml", "DASHBOARD"]],
init : function(responsiveToolkit) {
this.highlightMenuItem();
@@ -219,11 +218,6 @@ var MainMenu = {
var $this = this;
this.$mainMenuToggle.on('click', function(e) {
$this.responsiveToolkit.updateLayoutWithAnimation();
-
- var statisticContainer = $('.js-statistic-widget-container.compact-mode');
- if (statisticContainer.length > 0) {
- updateStatisticCarousel();
- }
});
},
diff --git a/AxonIvyPortal/portal-selenium-test/resources/js/document-screenshot.js b/AxonIvyPortal/portal-selenium-test/resources/js/document-screenshot.js
index 1f3d7eb1efb..92d2ad81b8d 100644
--- a/AxonIvyPortal/portal-selenium-test/resources/js/document-screenshot.js
+++ b/AxonIvyPortal/portal-selenium-test/resources/js/document-screenshot.js
@@ -36,7 +36,6 @@ function createRedThickOutlineWithOffset($element) {
/***IMPLEMENTATION TO DECORATE PAGES - WHICH ARE CALLED IN SELENIUM****/
function highlightDashboardWidget() {
createRedMediumOutline($("#task-widget"));
- createRedMediumOutline($("#statistic-widget-container"));
createRedMediumOutline($("#process-widget"));
}
@@ -47,9 +46,6 @@ function highlightAndNumberingDashboardSections() {
var taskWidget = $("#task-widget");
createRedMediumOutline(taskWidget);
appendStepAnnotation(taskWidget, "2", 0, taskWidget.width()/2);
- var statisticWidget = $("#statistic-widget-container");
- createRedMediumOutline(statisticWidget);
- appendStepAnnotation(statisticWidget, "3", 0, statisticWidget.width()/2);
}
function numberingTaskFilter() {
@@ -190,14 +186,6 @@ function highlightProcessMoreMenuButton() {
appendStepAnnotation(processMoreMenuButton, "1", -10, -40);
}
-function numberingStatisticWidget() {
- var chartInfo = $('.chart-info:eq(0)');
- appendStepAnnotation(chartInfo, "1", -10, 25);
- var chartCanvas = $('.ui-carousel-items-content');
- appendStepAnnotation(chartCanvas, "2", chartCanvas.width()/4, chartCanvas.height()/2 + 10);
- appendStepAnnotation(chartCanvas, "3", 15, chartCanvas.width()*0.75);
-}
-
function highlightAdminSettings() {
createRedMediumOutline($("#adminui-menu-item"));
}
@@ -215,26 +203,6 @@ function highlightShowMoreNoteLink() {
createRedMediumOutline($('a.js-note-show-more-link'));
}
-function highlightStatisticNavigation() {
- createRedThickOutlineWithOffset($('.layout-menu .STATISTICS'));
-}
-
-function highlightTaskAnalysisNavigationLink() {
- createRedMediumOutline($("a[id$=':task-analysis-page-navigation-link']"));
-}
-
-function numberingChartPanel() {
- var chartName = $('.chart-name:eq(1)');
- appendStepAnnotation(chartName, "1", -30, -25);
- var chartInfo = $('.chart-info:eq(1)');
- appendStepAnnotation(chartInfo, "2", -20, 25);
- var chartActions = $('.chart-actions-container:eq(0)');
- appendStepAnnotation(chartActions, "3", -20, 0);
- var chartCanvas = $('.statistic-chart:eq(1)');
- appendStepAnnotation(chartCanvas, "4", chartCanvas.width()/4, chartCanvas.height()/2 + 10);
- appendStepAnnotation(chartCanvas, "5", 15, chartCanvas.width()*0.8);
-}
-
function highlightCustomCaseList() {
var caseHeader = $("[id$='case-widget:widget-column-header']");
createRedMediumOutline(caseHeader);
diff --git a/AxonIvyPortal/portal-selenium-test/resources/testFile/Dashboard_Dashboard_Export.json b/AxonIvyPortal/portal-selenium-test/resources/testFile/Dashboard_Dashboard_Export.json
index c69ee7024d2..fafb183dda2 100644
--- a/AxonIvyPortal/portal-selenium-test/resources/testFile/Dashboard_Dashboard_Export.json
+++ b/AxonIvyPortal/portal-selenium-test/resources/testFile/Dashboard_Dashboard_Export.json
@@ -532,65 +532,6 @@
"url": "https://www.google.com/search?q=danang&sca_esv=566561006&sxsrf=AM9HkKlUBz__VtVTES7NouybfOXwwRRccA%3A1695119592162&source=hp&ei=6HgJZZXzBpfj2roPnry2wAo&iflsig=AO6bgOgAAAAAZQmG-HMK6OQuwxM5-TaUgojXdqYC8KL4&oq=da&gs_lp=Egdnd3Mtd2l6IgJkYSoCCAAyBxAjGIoFGCcyBxAjGIoFGCcyBBAjGCcyBxAuGIoFGEMyCxAAGIAEGLEDGIMBMgsQABiABBixAxiDATILEAAYgAQYsQMYgwEyBBAAGAMyBBAAGAMyCxAAGIAEGLEDGIMBSNEKUABYZHAAeACQAQCYAZQBoAGlAqoBAzAuMrgBA8gBAPgBAcICDBAjGIoFGBMYgAQYJw&sclient=gws-wiz"
}
},
- {
- "type": "statistic",
- "id": "statistic_ff821a63a24d49c6a310fb83ce818a46",
- "names": [
- {
- "locale": "en",
- "value": "Tasks by Priority"
- },
- {
- "locale": "fr",
- "value": "Tasks by Priority"
- },
- {
- "locale": "de",
- "value": "Tasks by Priority"
- },
- {
- "locale": "es",
- "value": "Tasks by Priority"
- }
- ],
- "layout": {
- "w": 4,
- "h": 8,
- "x": 5,
- "y": 15
- },
- "chart": {
- "id": "0",
- "names": [
- {
- "locale": "de",
- "value": "Aufgaben nach Priorität"
- },
- {
- "locale": "en",
- "value": "Tasks by Priority"
- },
- {
- "locale": "fr",
- "value": "Tãches par priorité"
- },
- {
- "locale": "es",
- "value": "Tareas por prioridad"
- }
- ],
- "type": "TASK_BY_PRIORITY",
- "filter": {
- "timePeriodSelection": "CUSTOM",
- "isAllCategoriesSelected": false,
- "isAllRolesSelected": true,
- "isAllCaseStatesSelected": true,
- "isAllTaskPrioritiesSelected": true
- },
- "position": 0
- },
- "chartEmpty": true
- },
{
"type": "news",
"id": "news_bc977a31c02a446fb2f2cb68a6118344",
diff --git a/AxonIvyPortal/portal-selenium-test/resources/testFile/dashboard-has-chart-cases-by-category.json b/AxonIvyPortal/portal-selenium-test/resources/testFile/dashboard-has-chart-cases-by-category.json
deleted file mode 100644
index 808ab31f2d4..00000000000
--- a/AxonIvyPortal/portal-selenium-test/resources/testFile/dashboard-has-chart-cases-by-category.json
+++ /dev/null
@@ -1,67 +0,0 @@
-[
- {
- "id": "1",
- "title": "Dashboard",
- "widgets": [
- {
- "type": "statistic",
- "id": "statistic_1",
- "names": [
- {
- "locale": "en",
- "value": "Cases by Category"
- }
- ],
- "layout": {
- "id": null,
- "styleClass": "new-widget",
- "style": null,
- "w": 5,
- "h": 5,
- "x": 0,
- "y": 0
- },
- "chart": {
- "id": "0",
- "names": [
- {
- "locale": "de",
- "value": "Vorgänge nach Kategorie"
- },
- {
- "locale": "en",
- "value": "Cases by category"
- },
- {
- "locale": "fr",
- "value": "Affaires par catégorie"
- },
- {
- "locale": "es",
- "value": "Casos por categorÃa"
- }
- ],
- "type": "CASES_BY_CATEGORY",
- "filter": {
- "timePeriodSelection": "CUSTOM",
- "createdDateFrom": null,
- "createdDateTo": null,
- "selectedCaseCategories": [],
- "isAllCategoriesSelected": false,
- "selectedRoles": [],
- "isAllRolesSelected": true,
- "selectedCaseStates": [],
- "isAllCaseStatesSelected": true,
- "selectedTaskPriorities": [],
- "isAllTaskPrioritiesSelected": true,
- "customFieldFilters": null
- },
- "position": 0
- }
- }
- ],
- "permissions": [
- "Everybody"
- ]
- }
-]
\ No newline at end of file
diff --git a/AxonIvyPortal/portal-selenium-test/resources/testFile/dashboard-has-one-chart-example.json b/AxonIvyPortal/portal-selenium-test/resources/testFile/dashboard-has-one-chart-example.json
deleted file mode 100644
index 8ba27392dc2..00000000000
--- a/AxonIvyPortal/portal-selenium-test/resources/testFile/dashboard-has-one-chart-example.json
+++ /dev/null
@@ -1,71 +0,0 @@
-[
- {
- "id": "1",
- "title": "Dashboard",
- "widgets": [
- {
- "type": "statistic",
- "id": "statistic_1",
- "names": [
- {
- "locale": "en",
- "value": "Tasks by Priority"
- }
- ],
- "layout": {
- "id": null,
- "styleClass": "new-widget",
- "style": null,
- "w": 5,
- "h": 5,
- "x": 0,
- "y": 0
- },
- "chart": {
- "id": "0",
- "names": [
- {
- "locale": "de",
- "value": "Aufgaben nach Priorit�t"
- },
- {
- "locale": "en",
- "value": "Tasks by Priority"
- },
- {
- "locale": "fr",
- "value": "T�ches par priorit�"
- },
- {
- "locale": "es",
- "value": "Tareas por prioridad"
- }
- ],
- "type": "TASK_BY_PRIORITY",
- "filter": {
- "timePeriodSelection": "CUSTOM",
- "createdDateFrom": null,
- "createdDateTo": null,
- "selectedCaseCategories": [
- ],
- "isAllCategoriesSelected": false,
- "selectedRoles": [
- ],
- "isAllRolesSelected": true,
- "selectedCaseStates": [
- ],
- "isAllCaseStatesSelected": true,
- "selectedTaskPriorities": [
- ],
- "isAllTaskPrioritiesSelected": true,
- "customFieldFilters": null
- },
- "position": 0
- }
- }
- ],
- "permissions": [
- "Everybody"
- ]
- }
-]
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/NavigationHelper.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/NavigationHelper.java
index e057fbf9f42..37851aa5ec0 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/NavigationHelper.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/NavigationHelper.java
@@ -4,14 +4,12 @@
import com.axonivy.portal.selenium.page.CaseWidgetPage;
import com.axonivy.portal.selenium.page.ProcessWidgetPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
import com.axonivy.portal.selenium.page.TaskWidgetPage;
public class NavigationHelper {
private static final String TASK_LIST_PAGE_URL = "portal/1549F58C18A6C562/DefaultTaskListPage.ivp";
private static final String CASE_LIST_PAGE_URL = "portal/1549F58C18A6C562/CaseListPage.ivp";
private static final String PROCESS_LIST_PAGE_URL = "portal/1549F58C18A6C562/DefaultProcessStartListPage.ivp";
- private static final String STATISTIC_PAGE_URL = "portal/1549F58C18A6C562/StatisticPage.ivp";
public static void navigateToRelativeLink(String relativeProcessStartUrl) {
try {
@@ -36,8 +34,4 @@ public static ProcessWidgetPage navigateToProcessList() {
return new ProcessWidgetPage();
}
- public static StatisticWidgetPage navigateToStatisticPage() {
- navigateToRelativeLink(STATISTIC_PAGE_URL);
- return new StatisticWidgetPage();
- }
}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/ScreenshotUtils.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/ScreenshotUtils.java
index 91fd5c32fd3..9f52b6ed515 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/ScreenshotUtils.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/ScreenshotUtils.java
@@ -38,7 +38,6 @@ public class ScreenshotUtils {
public static final String CASE_DETAIL_FOLDER = "/case-detail/";
public static final String CASE_DETAIL_CUSTOMIZATION_FOLDER = "/case-detail/customization/";
public static final String STATISTIC_WIDGET_FOLDER = "/statistic/";
- public static final String TASK_ANALYSIS_FOLDER = "/statistic/task-analysis/";
public static final String SEARCH_FOLDER = "/search/";
public static final String SETTINGS_FOLDER = "/settings/";
public static final String MY_PROFILE_FOLDER = "/my-profile/";
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/Variable.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/Variable.java
index 14b8f91053e..32f5d61df88 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/Variable.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/common/Variable.java
@@ -12,7 +12,7 @@ public enum Variable {
HIDE_SYSTEM_TASKS_FROM_HISTORY_ADMINISTRATOR("Portal.Histories.HideSystemTasksForAdministrator"),
HIDE_SYSTEM_NOTES_FROM_HISTORY("Portal.Histories.HideSystemNotes"),
HIDE_SYSTEM_NOTES_FROM_HISTORY_ADMINISTRATOR("Portal.Histories.HideSystemNotesForAdministrator"),
- HIDE_STATISTIC_WIDGET("Portal.Dashboard.HideStatisticWidget"), ENABLE_GROUP_CHAT("Portal.Chat.EnableGroup"),
+ ENABLE_GROUP_CHAT("Portal.Chat.EnableGroup"),
ENABLE_PRIVATE_CHAT("Portal.Chat.EnablePrivate"), CHAT_RESPONSE_TIMEOUT("Portal.Chat.ResponseTimeout"),
CHAT_MAX_CONNECTION("Portal.Chat.MaxConnection"), ENABLE_CASE_OWNER("Portal.Cases.EnableOwner"),
DISABLE_CASE_COUNT("Portal.Cases.DisableCount"), DEFAULT_SORT_FIELD_OF_CASE_LIST("Portal.Cases.SortField"),
@@ -30,8 +30,8 @@ public enum Variable {
SHOW_BUTTON_ICON("Portal.ShowButtonIcon"), DEFAULT_HOMEPAGE("Portal.Homepage"),
HIDE_RELATED_CASE_INFO_FROM_HISTORY("Portal.Histories.HideRelatedCaseInfo"),
DISPLAY_USERS_OF_TASK_ACTIVATOR("Portal.DisplayUsersOfRole"), ANNOUNCEMENT("Portal.Announcement"),
- TASK_ANALYSIS_FILTER("Portal.TaskAnalysisFilters"), THIRD_PARTY_APP("Portal.ThirdPartyApplications"),
- STATISTIC_CHART("Portal.StatisticCharts"), EXTERNAL_LINK("Portal.Processes.ExternalLinks"),
+ THIRD_PARTY_APP("Portal.ThirdPartyApplications"),
+ EXTERNAL_LINK("Portal.Processes.ExternalLinks"),
EXPRESS_PROCESS("Portal.Processes.ExpressProcesses"), TASK_COLUMN("Portal.Tasks.TaskColumn"),
TASK_FILTER("Portal.Tasks.TaskFilters"),
TASK_BEHAVIOUR_WHEN_CLICKING_ON_LINE_IN_TASK_LIST("Portal.Tasks.BehaviourWhenClickingOnLineInTaskList"),
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/AdditionalComponentsScreenshotTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/AdditionalComponentsScreenshotTest.java
index 3d770f38673..02b81c32cbd 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/AdditionalComponentsScreenshotTest.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/AdditionalComponentsScreenshotTest.java
@@ -17,7 +17,6 @@
import com.axonivy.portal.selenium.page.NewDashboardPage;
import com.axonivy.portal.selenium.page.ProcessHistoryPage;
import com.axonivy.portal.selenium.page.ProcessViewerPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
import com.axonivy.portal.selenium.page.TaskTemplatePage;
import com.axonivy.portal.selenium.page.component.DocumentTableComponentPage;
import com.axonivy.portal.selenium.page.component.ProcessViewerComponentPage;
@@ -94,21 +93,6 @@ public void captureScreenshotDocumentTableComponent() throws IOException {
ScreenshotUtils.capturePageScreenshot(ScreenshotUtils.COMPONENTS_FOLDER + "document-table");
}
- @Test
- public void captureScreenshotTaskAnalysisComponent() throws IOException {
- redirectToRelativeLink(create12CasesWithCategoryUrl);
- redirectToRelativeLink(createTestingTasksUrl);
- login(TestAccount.ADMIN_USER);
- showNewDashboard();
- NewDashboardPage homepage = new NewDashboardPage();
- homepage.waitForCaseWidgetLoaded();
- MainMenuPage mainMenuPage = new MainMenuPage();
- StatisticWidgetPage statisticWidgetDashboardPage = mainMenuPage.openStatisticPage();
- statisticWidgetDashboardPage.navigateToTaskAnalysisPage();
- ScreenshotUtils.resizeBrowser(new Dimension(1500, 1000));
- ScreenshotUtils.capturePageScreenshot(ScreenshotUtils.COMPONENTS_FOLDER + "task-analysis");
- }
-
@Test
public void captureScreenshotUserSelectionComponent() throws IOException {
redirectToRelativeLink(userSelectionComponentShowcaseUrl);
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/StatisticScreenshotTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/StatisticScreenshotTest.java
index 766009f13bd..65896b7c228 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/StatisticScreenshotTest.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/StatisticScreenshotTest.java
@@ -13,12 +13,8 @@
import com.axonivy.portal.selenium.common.ScreenshotUtils;
import com.axonivy.portal.selenium.common.TestAccount;
import com.axonivy.portal.selenium.common.Variable;
-import com.axonivy.portal.selenium.common.WaitHelper;
import com.axonivy.portal.selenium.page.ClientStatisticWidgetNewDashboardPage;
-import com.axonivy.portal.selenium.page.MainMenuPage;
import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
-import com.axonivy.portal.selenium.page.TaskWidgetPage;
import ch.ivy.addon.portalkit.enums.PortalVariable;
@@ -34,53 +30,6 @@ public void setup() {
login(TestAccount.ADMIN_USER);
}
- @Test
- public void screenshotForStatistic() throws IOException {
- showNewDashboard();
- NewDashboardPage homePage = new NewDashboardPage();
- homePage.waitForCaseWidgetLoaded();
- MainMenuPage mainMenu = new MainMenuPage();
-
- TaskWidgetPage taskWidgetPage = mainMenu.openTaskList();
- taskWidgetPage.openTask("SupportTicket");
-
- ScreenshotUtils.resizeBrowser(new Dimension(1460, 800));
- WaitHelper.waitForNavigation(() -> redirectToRelativeLink(createTestingTasksUrl));
- homePage = new NewDashboardPage();
- homePage.waitForCaseWidgetLoaded();
- homePage.waitForGrowlMessageDisappear();
- mainMenu.expandMainMenu();
-
- ScreenshotUtils.executeDecorateJs("highlightStatisticNavigation()");
- ScreenshotUtils.capturePageScreenshot(ScreenshotUtils.STATISTIC_WIDGET_FOLDER + "navigate-to-full-statistics-page");
- ScreenshotUtils.resizeBrowser(new Dimension(1386, 2210));
-
- StatisticWidgetPage statisticWidgetPage = mainMenu.openStatisticPage();
- statisticWidgetPage.switchCreateMode();
- mainMenu.closeMainMenu();
-
- statisticWidgetPage.createTaskByPriorityChart();
- statisticWidgetPage.createTaskByExpiryChart();
- ScreenshotUtils.captureElementScreenshot(statisticWidgetPage.waitAndGetChartCreationContainer(),
- ScreenshotUtils.STATISTIC_WIDGET_FOLDER + "available-charts");
-
- WebElement chartCreationDialog = statisticWidgetPage.getCaseByFinishedTaskCreationDialog();
- ScreenshotUtils.captureElementWithMarginOptionScreenshot(chartCreationDialog,
- ScreenshotUtils.STATISTIC_WIDGET_FOLDER + "chart-creation-dialog", new ScreenshotMargin(10, 10));
-
- refreshPage();
- statisticWidgetPage.waitForChartCreationPageRendered();
- statisticWidgetPage.backToDashboard();
- statisticWidgetPage.waitForAllChartLoaded();
- ScreenshotUtils.executeDecorateJs("numberingChartPanel()");
- ScreenshotUtils.captureElementWithMarginOptionScreenshot(statisticWidgetPage.waitAndGetChartPanelByIndex(1),
- ScreenshotUtils.STATISTIC_WIDGET_FOLDER + "chart-detail-with-annotation", new ScreenshotMargin(20, 10));
- refreshPage();
- statisticWidgetPage.waitForAllChartLoaded();
- ScreenshotUtils.captureElementWithMarginOptionScreenshot(statisticWidgetPage.getChartInfoDialogOfChart(1),
- ScreenshotUtils.STATISTIC_WIDGET_FOLDER + "chart-info-dialog", new ScreenshotMargin(20, 10));
- }
-
@Test
public void screenshotStatisticWidgetList() throws IOException {
showNewDashboard();
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/TaskAnalysisScreenshotTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/TaskAnalysisScreenshotTest.java
deleted file mode 100644
index 90cf6f7274e..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/document/screenshot/TaskAnalysisScreenshotTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.axonivy.portal.selenium.document.screenshot;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.openqa.selenium.Dimension;
-
-import com.axonivy.ivy.webtest.IvyWebTest;
-import com.axonivy.portal.selenium.common.ScreenshotBaseTest;
-import com.axonivy.portal.selenium.common.ScreenshotMargin;
-import com.axonivy.portal.selenium.common.ScreenshotUtils;
-import com.axonivy.portal.selenium.common.TestAccount;
-import com.axonivy.portal.selenium.common.Variable;
-import com.axonivy.portal.selenium.page.MainMenuPage;
-import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
-import com.axonivy.portal.selenium.page.TaskAnalysisWidgetPage;
-
-@IvyWebTest
-public class TaskAnalysisScreenshotTest extends ScreenshotBaseTest {
-
- @Override
- @BeforeEach
- public void setup() {
- super.setup();
- updatePortalSetting(Variable.ENABLE_GROUP_CHAT.getKey(), "true");
- login(TestAccount.ADMIN_USER);
- redirectToRelativeLink(createTestingTasksUrl);
- }
-
- @Test
- public void screenshotTaskAnalysisPage() throws IOException {
- showNewDashboard();
- NewDashboardPage homePage = new NewDashboardPage();
- homePage.waitForCaseWidgetLoaded();
- MainMenuPage mainMenu = new MainMenuPage();
- StatisticWidgetPage statisticWidgetPage = mainMenu.openStatisticPage();
-
- ScreenshotUtils.executeDecorateJs("highlightTaskAnalysisNavigationLink()");
- ScreenshotUtils.resizeBrowser(new Dimension(1200, 800));
- ScreenshotUtils
- .captureHalfTopRightPageScreenShot(ScreenshotUtils.TASK_ANALYSIS_FOLDER + "navigate-to-task-analysis");
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
-
- ScreenshotUtils.resizeBrowser(new Dimension(1400, 900));
- ScreenshotUtils.capturePageScreenshot(ScreenshotUtils.TASK_ANALYSIS_FOLDER + "task-analysis");
-
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Priority", "priority");
- List selectedPriorities = new ArrayList<>();
- selectedPriorities.add("NORMAL");
- taskAnalysisWidgetPage.filterByTaskPriority(selectedPriorities);
- taskAnalysisWidgetPage.clickApplyFilter();
- ScreenshotUtils.resizeBrowser(new Dimension(1400, 800));
- ScreenshotUtils.capturePageScreenshot(ScreenshotUtils.TASK_ANALYSIS_FOLDER + "filtered-tasks");
- taskAnalysisWidgetPage.enterDataToSaveFilterSet("Normal Priority Task", true);
- ScreenshotUtils.captureElementWithMarginOptionScreenshot(taskAnalysisWidgetPage.waitAndGetSavingFilterDialog(),
- ScreenshotUtils.TASK_ANALYSIS_FOLDER + "saved-filter", new ScreenshotMargin(20));
- }
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/MainMenuPage.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/MainMenuPage.java
index 1ff015374d7..faf3fce9ea9 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/MainMenuPage.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/MainMenuPage.java
@@ -1,7 +1,6 @@
package com.axonivy.portal.selenium.page;
import static com.codeborne.selenide.Condition.appear;
-
import static com.codeborne.selenide.Condition.disappear;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$;
@@ -41,10 +40,6 @@ public ProcessWidgetPage openProcessList() {
return NavigationHelper.navigateToProcessList();
}
- public StatisticWidgetPage openStatisticPage() {
- return NavigationHelper.navigateToStatisticPage();
- }
-
public void openUserSettingMenu() {
$("#top-menu").shouldBe(appear, DEFAULT_TIMEOUT);
$("a[id='user-settings-menu']").shouldBe(clickable(), DEFAULT_TIMEOUT).click();
@@ -92,12 +87,6 @@ public CaseWidgetPage selectCaseMenu() {
return new CaseWidgetPage();
}
- public StatisticWidgetPage selectStatisticDashboard() {
- WaitHelper
- .waitForNavigation(() -> waitForElementClickableThenClick($(".layout-menu li[role='menuitem'] a.STATISTICS")));
- return new StatisticWidgetPage();
- }
-
private void waitForProcessesPageAfterSelectProcessesCategory() {
waitForElementDisplayed(By.id("process-widget:process-search:non-ajax-keyword-filter"), true);
}
@@ -146,10 +135,6 @@ public boolean isCasesDisplayed() {
return isMenuItemDisplayed("Cases");
}
- public boolean isStatisticsDisplayed() {
- return isMenuItemDisplayed("Statistics");
- }
-
public WorkingTaskDialogPageOfApplicationMenu selectDashboardMenu() {
waitForElementClickableThenClick(".layout-menu li[role='menuitem'] a.DASHBOARD");
return new WorkingTaskDialogPageOfApplicationMenu();
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardDetailsEditPage.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardDetailsEditPage.java
index c81eaa66fb7..a7ed76f4dc6 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardDetailsEditPage.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardDetailsEditPage.java
@@ -17,7 +17,6 @@ public class NewDashboardDetailsEditPage extends TemplatePage {
public static final String PROCESS_WIDGET = "Process List";
public static final String PROCESS_VIEWER_WIDGET = "Process Viewer";
public static final String CUSTOM_WIDGET = "Custom Widget";
- public static final String STATISTIC_WIDGET = "Statistic chart";
public static final String WELCOME_WIDGET = "Welcome widget";
public static final String NEWS_WIDGET = "News feed widget";
public static final String TASK_BY_PRIORITY = "Tasks by Priority";
@@ -161,10 +160,6 @@ public StatisticEditWidgetNewDashboardPage addNewStatisticWidget() {
return new StatisticEditWidgetNewDashboardPage();
}
- public StatisticWidgetDashboardPage selectStatisticWidget() {
- return new StatisticWidgetDashboardPage();
- }
-
public SelenideElement getTitleByIndex(int index) {
return $("a[id='dashboard-title-" + index + "']");
}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardPage.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardPage.java
index f9b9702d7f8..054fbd48fd2 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardPage.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/NewDashboardPage.java
@@ -15,7 +15,6 @@
import org.openqa.selenium.WebElement;
import com.axonivy.portal.selenium.common.LinkNavigator;
-import com.axonivy.portal.selenium.common.Sleeper;
import com.axonivy.portal.selenium.common.WaitHelper;
import com.codeborne.selenide.CollectionCondition;
import com.codeborne.selenide.Condition;
@@ -132,17 +131,6 @@ public MainMenuPage openMainMenu() {
return new MainMenuPage();
}
- public WebElement waitAndGetStatisticChart(int index) {
- var widget = $$(".statistic-chart-widget").shouldBe(CollectionCondition.sizeGreaterThan(index), DEFAULT_TIMEOUT)
- .get(index).shouldBe(appear, DEFAULT_TIMEOUT);
- widget.$("[id$='loading']").shouldBe(disappear, DEFAULT_TIMEOUT);
- waitForWidgetLoadedByExpandThenCollapse(widget);
- // We use Sleeper here to wait for chart render completely, because the
- // statistic dialog was render with an animation by canvas.
- Sleeper.sleep(1000);
- return widget.ancestor(".grid-stack-item");
- }
-
public SelenideElement waitAndGetClientStatisticChart(int index) {
var widget = $$("[id^='client-statistic-client_statistic']").shouldBe(CollectionCondition.sizeGreaterThan(index), DEFAULT_TIMEOUT)
.get(index)
@@ -779,10 +767,6 @@ public void selectDashboard(int index) {
selectDashboard.parent().shouldBe(Condition.cssClass("active-menuitem"), DEFAULT_TIMEOUT);
}
- public StatisticWidgetDashboardPage selectStatisticWidget() {
- return new StatisticWidgetDashboardPage();
- }
-
public void checkDisplayedCaseWidgetContainer() {
getCaseWidgetContainer().shouldBe(Condition.appear, DEFAULT_TIMEOUT);
}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/StatisticWidgetDashboardPage.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/StatisticWidgetDashboardPage.java
deleted file mode 100644
index c806b5f284f..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/StatisticWidgetDashboardPage.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.axonivy.portal.selenium.page;
-
-import static com.codeborne.selenide.Condition.appear;
-import static com.codeborne.selenide.Condition.disappear;
-import static com.codeborne.selenide.Selenide.$;
-import static com.codeborne.selenide.Selenide.$$;
-
-import com.codeborne.selenide.ElementsCollection;
-import com.codeborne.selenide.SelenideElement;
-
-public class StatisticWidgetDashboardPage extends TemplatePage {
-
- @Override
- protected String getLoadedLocator() {
- return ".statistic-chart-widget__content";
- }
-
- public ElementsCollection countStatisticCharts() {
- return $$(".statistic-chart-widget .widget__header-title");
- }
-
- public SelenideElement getStatisticInfoIconOfChart(String chartId) {
- return $(String.format("[id$='chart-%s:info-sidebar-link-0']", chartId)).shouldBe(appear, DEFAULT_TIMEOUT)
- .should(getClickableCondition());
- }
-
- public void openStatisticInfoPanel(String chartId) {
- getStatisticInfoIconOfChart(chartId).click();
- $(String.format("[id$='chart-%s:info-overlay-panel-0']", chartId)).shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public ElementsCollection countFilterOfStatistic(String chartId) {
- return $(String.format("[id$='chart-%s:info-overlay-panel-0']", chartId)).shouldBe(appear, DEFAULT_TIMEOUT)
- .$("table[id$=':chart-filter-container']").shouldBe(appear, DEFAULT_TIMEOUT).$$("tr");
- }
-
- public String getChartName(String chartId) {
- return $(String.format("span[id$='chart-%s:widget__header']", chartId)).shouldBe(appear, DEFAULT_TIMEOUT).getText();
- }
-
- public SelenideElement getEditIconOfChart(String chartId) {
- return $(String.format("[id$='chart-%s:widget-header-actions']", chartId)).shouldBe(appear, DEFAULT_TIMEOUT)
- .$(String.format("[id$='chart-%s:edit-widget-0']", chartId)).shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public String openEditStatisticWidgetDialog(String chartId) {
- getEditIconOfChart(chartId).should(getClickableCondition()).click();
- return $("[id$='new-widget-configuration-dialog']").shouldBe(appear, DEFAULT_TIMEOUT)
- .$("span[id$='new-widget-configuration-dialog_title']").shouldBe(appear, DEFAULT_TIMEOUT).getText();
- }
-
- public void clickOnCancelConfiguration() {
- $("[id$='new-widget-configuration-dialog']").shouldBe(appear, DEFAULT_TIMEOUT)
- .$("a[id$='task-configuration-cancel-link']").shouldBe(appear, DEFAULT_TIMEOUT)
- .shouldBe(getClickableCondition()).click();
- $("[id$='new-widget-configuration-dialog']").shouldBe(disappear, DEFAULT_TIMEOUT);
- }
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/StatisticWidgetPage.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/StatisticWidgetPage.java
deleted file mode 100644
index e84f360483d..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/StatisticWidgetPage.java
+++ /dev/null
@@ -1,270 +0,0 @@
-package com.axonivy.portal.selenium.page;
-
-import static com.codeborne.selenide.CollectionCondition.size;
-import static com.codeborne.selenide.Condition.appear;
-import static com.codeborne.selenide.Selenide.$;
-import static com.codeborne.selenide.Selenide.$$;
-
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebDriverException;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.ui.WebDriverWait;
-
-import com.axonivy.portal.selenium.common.WaitHelper;
-import com.codeborne.selenide.Condition;
-import com.codeborne.selenide.SelenideElement;
-import com.codeborne.selenide.WebDriverRunner;
-
-public class StatisticWidgetPage extends TemplatePage {
- public static final String TASK_BY_PRIORITY_CHART_NAME = "Task by priority chart";
- public static final String CASE_BY_STATE_CHART_NAME = "Case by state chart";
- public static final String TASK_BY_EXPIRY_CHART_NAME = "Task by expiry chart";
- public static final String ELAPSED_TIME_CHART_NAME = "Elapsed time chart";
- public static final String CASE_BY_FINISHED_TASK_CHART_NAME = "Case by finished task chart";
- public static final String CASE_BY_FINISHED_TIME_CHART_NAME = "Case by finished time chart";
- public static final String CASES_BY_CATEGORY_CHART_NAME = "Cases by category chart";
-
- @Override
- protected String getLoadedLocator() {
- return "[id='statistics-widget']";
- }
-
- public TaskAnalysisWidgetPage navigateToTaskAnalysisPage() {
- waitForPageLoad();
- var taskAnalysLink = $("a[id='statistics-widget:task-analysis-page-navigation-link']")
- .shouldBe(Condition.appear, DEFAULT_TIMEOUT).shouldBe(getClickableCondition(), DEFAULT_TIMEOUT);
- WaitHelper.waitForNavigation(() -> waitForElementClickableThenClick(taskAnalysLink));
- $("[id='task-widget']").shouldBe(Condition.appear, DEFAULT_TIMEOUT);
- return new TaskAnalysisWidgetPage();
- }
-
- public Set getAllChartNames() {
- $(By.id("chart-name-0")).shouldBe(Condition.appear, DEFAULT_TIMEOUT);
- return $$("div[id$=':chart-name-container'] .chart-name").shouldHave(size(1), DEFAULT_TIMEOUT).asFixedIterable()
- .stream().map(e -> e.getText()).collect(Collectors.toSet());
- }
-
- public String getRestoreDefaultButtonName() {
- return findElementByCssSelector("span[id$='restore-default-chart-link-label']").getText();
- }
-
- public boolean hasCreateChartsLink() {
- return isElementPresent(By.id("statistics-widget:create-chart-link-label"));
- }
-
- private boolean isCompactMode() {
- waitPageLoaded();
- waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
- WebElement statisticContainer = findElementById("statistics-widget:widget-container");
- return statisticContainer.getAttribute(CLASS_PROPERTY).contains("compact-mode");
- }
-
- public boolean isFullMode() {
- return !isCompactMode();
- }
-
- public void createCaseByStateChart() {
- waitForElementDisplayed(
- By.id("statistics-widget:chart-creation-widget:chart-management-form:create-case-by-state-link"), true, 30);
- SelenideElement createCaseByStateLink =
- findElementById("statistics-widget:chart-creation-widget:chart-management-form:create-case-by-state-link");
- waitForElementClickableThenClick(createCaseByStateLink);
-
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), true);
-
- inputNameForSupportedLanguages(CASE_BY_STATE_CHART_NAME);
- waitForElementClickableThenClick("button[id$='chart-save-command']");
-
- waitForElementExisted(By.cssSelector("span[class='ui-growl-title']"), true);
- }
-
- public void createCaseByFinishTime() {
- waitForElementDisplayed(
- By.id("statistics-widget:chart-creation-widget:chart-management-form:create-case-by-finished-time-link"), true,
- 30);
- SelenideElement createCaseByFinishedTaskLink = findElementById(
- "statistics-widget:chart-creation-widget:chart-management-form:create-case-by-finished-time-link");
- waitForElementClickableThenClick(createCaseByFinishedTaskLink);
-
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), true);
- inputNameForSupportedLanguages(CASE_BY_FINISHED_TIME_CHART_NAME);
- waitForElementClickableThenClick("button[id$='chart-save-command']");
-
- waitForElementExisted(By.cssSelector("span[class='ui-growl-title']"), true);
- }
-
- public void createTaskByPriorityChartMultiLanguage() {
- waitForElementDisplayed(
- By.id("statistics-widget:chart-creation-widget:chart-management-form:create-task-by-priority-link"), true, 30);
- waitForElementClickableThenClick(
- $(By.id("statistics-widget:chart-creation-widget:chart-management-form:create-task-by-priority-link")));
-
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), true);
-
- findElementByCssSelector("input[id$='0:chart-name-input']")
- .sendKeys(TASK_BY_PRIORITY_CHART_NAME.concat(" English"));
- findElementByCssSelector("input[id$='1:chart-name-input']").sendKeys(TASK_BY_PRIORITY_CHART_NAME.concat(" French"));
- findElementByCssSelector("input[id$='2:chart-name-input']").sendKeys(TASK_BY_PRIORITY_CHART_NAME.concat(" German"));
- findElementByCssSelector("input[id$='3:chart-name-input']")
- .sendKeys(TASK_BY_PRIORITY_CHART_NAME.concat(" Spanish"));
-
- waitForElementClickableThenClick("button[id$='chart-save-command']");
- waitForElementExisted(By.cssSelector("span[class='ui-growl-title']"), true);
- }
-
- public void createCasesByCategory() {
- waitForElementDisplayed(
- By.id("statistics-widget:chart-creation-widget:chart-management-form:create-cases-by-category-link"), true, 30);
- SelenideElement createCaseByFinishedTaskLink =
- findElementById("statistics-widget:chart-creation-widget:chart-management-form:create-cases-by-category-link");
- waitForElementClickableThenClick(createCaseByFinishedTaskLink);
-
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), true);
- inputNameForSupportedLanguages(CASES_BY_CATEGORY_CHART_NAME);
- waitForElementClickableThenClick("button[id$='chart-save-command']");
-
- waitForElementExisted(By.cssSelector("span[class='ui-growl-title']"), true);
- }
-
- public void createElapsedTimeChart() {
- waitForElementDisplayed(
- By.id("statistics-widget:chart-creation-widget:chart-management-form:create-elapsed-time-link"), true, 30);
- SelenideElement createElapsedTimeLink =
- findElementById("statistics-widget:chart-creation-widget:chart-management-form:create-elapsed-time-link");
- waitForElementClickableThenClick(createElapsedTimeLink);
-
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), true);
- inputNameForSupportedLanguages(ELAPSED_TIME_CHART_NAME);
- waitForElementClickableThenClick("button[id$='chart-save-command']");
-
- waitForElementExisted(By.cssSelector("span[class='ui-growl-title']"), true);
- }
-
- public void createCaseByFinishedTask() {
- var caseByFinishedTaskSelector = "button[id$=':chart-management-form:create-case-by-finished-task-link']";
- waitForElementClickableThenClick($(caseByFinishedTaskSelector));
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), true);
-
- inputNameForSupportedLanguages(CASE_BY_FINISHED_TASK_CHART_NAME);
- waitForElementClickableThenClick($(By.cssSelector("button[id$='chart-save-command']")));
- waitForElementDisplayed(By.cssSelector("div[id$='add-chart-dialog']"), false);
- waitForElementExisted(By.cssSelector("span[class='ui-growl-title']"), true);
- }
-
- public void restoreDefaultCharts() {
- new WebDriverWait(WebDriverRunner.getWebDriver(), DEFAULT_TIMEOUT).until((webDriver) -> {
- WebElement restoreDefault = findElementByCssSelector("span[id$='restore-default-chart-link-label']");
- try {
- return restoreDefault.getText().contains("Restore default");
- } catch (WebDriverException e) {
- System.out.println("Exception when waiting for element existed, try again.");
- }
- return false;
- });
- waitForElementClickableThenClick($("span[id$='restore-default-chart-link-label']"));
- waitForElementDisplayed(By.id("statistics-widget:restore-confirmation-dialog"), true, 30);
- waitForElementClickableThenClick($(By.id("statistics-widget:confirm-restore")));
- }
-
- public String getChartName(int chartIndex) {
- new WebDriverWait(WebDriverRunner.getWebDriver(), DEFAULT_TIMEOUT).until((webDriver) -> {
- try {
- return findElementByCssSelector(String.format("div[id$='%d:chart-name-container'] .chart-name", chartIndex))
- .getText().length() > 1;
- } catch (WebDriverException e) {
- System.out.println("Exception when waiting for element existed, try again.");
- }
- return false;
- });
- WebElement chartName =
- findElementByCssSelector(String.format("div[id$='%d:chart-name-container'] .chart-name", chartIndex));
- return chartName.getText();
- }
-
- public void switchCreateMode() {
- $("a[id$='create-chart-link']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("a[id$='statistics-widget:back-from-chart-creation']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public void waitForAllChartLoaded() {
- SelenideElement element =
- $("[id$='statistics-widget:statistic-dashboard-widget:statistic-chart-repeater:0:chart-name-container'] a");
- element.shouldBe(clickable(), DEFAULT_TIMEOUT).click();
- $("[id$='statistics-widget:statistic-dashboard-widget:chart-details-dialog']").shouldBe(appear, DEFAULT_TIMEOUT)
- .$("button.ui-button-text-icon-left").shouldBe(appear, DEFAULT_TIMEOUT).click();
- }
-
- public void createTaskByPriorityChart() {
- $("[id='statistics-widget:chart-creation-widget:chart-management-form:create-task-by-priority-link']")
- .shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("div[id$='add-chart-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
-
- inputNameForSupportedLanguages(TASK_BY_PRIORITY_CHART_NAME);
- $("button[id$='chart-save-command']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("span[class='ui-growl-title']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- private void inputNameForSupportedLanguages(String value) {
- for (int i = 0; i < 4; i++) {
- $("input[id$='" + i + ":chart-name-input']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).sendKeys(value);
- }
- }
-
- public void createTaskByExpiryChart() {
- $("[id='statistics-widget:chart-creation-widget:chart-management-form:create-task-by-expiry-link']")
- .shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
-
- $("div[id$='add-chart-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
- inputNameForSupportedLanguages(TASK_BY_EXPIRY_CHART_NAME);
- $("button[id$='chart-save-command']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
-
- $("span[class='ui-growl-title']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public SelenideElement getChartCreationContainer() {
- return $("[id='statistics-widget:chart-creation-widget:chart-management-form:chart-list']");
- }
-
- public WebElement waitAndGetChartCreationContainer() {
- return getChartCreationContainer().shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public WebElement getCaseByFinishedTaskCreationDialog() {
- $("[id='statistics-widget:chart-creation-widget:chart-management-form:create-case-by-finished-task-link']")
- .shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("div[id$='add-chart-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
-
- inputNameForSupportedLanguages(CASE_BY_FINISHED_TASK_CHART_NAME);
- return $("div[id$='add-chart-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public void waitForChartCreationPageRendered() {
- $("[id='statistics-widget:back-from-chart-creation']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public void backToDashboard() {
- $("a[id$='back-from-chart-creation']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("a[id$='create-chart-link']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public SelenideElement getChartPanelByIndex(int index) {
- return $(String.format("span[id$='%d:chart-panel']", index));
- }
-
- public WebElement waitAndGetChartPanelByIndex(int index) {
- return getChartPanelByIndex(index).shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public WebElement getChartInfoDialogOfChart(int chartIndex) {
- $("[id='"
- + String.format("statistics-widget:statistic-dashboard-widget:statistic-chart-repeater:%d:chart-name-container",
- chartIndex)
- + "']").shouldBe(appear, DEFAULT_TIMEOUT).$("a.chart-info").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT)
- .click();
- return $("[id='statistics-widget:statistic-dashboard-widget:chart-details-dialog']").shouldBe(appear,
- DEFAULT_TIMEOUT);
- }
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/TaskAnalysisWidgetPage.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/TaskAnalysisWidgetPage.java
deleted file mode 100644
index 9b690d99d2e..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/page/TaskAnalysisWidgetPage.java
+++ /dev/null
@@ -1,362 +0,0 @@
-package com.axonivy.portal.selenium.page;
-
-import static com.codeborne.selenide.Condition.appear;
-import static com.codeborne.selenide.Selenide.$;
-import static com.codeborne.selenide.Selenide.$$;
-
-import java.util.List;
-
-import org.openqa.selenium.By;
-import org.openqa.selenium.NoSuchElementException;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.ui.WebDriverWait;
-
-import com.codeborne.selenide.CollectionCondition;
-import com.codeborne.selenide.Condition;
-import com.codeborne.selenide.ElementsCollection;
-import com.codeborne.selenide.SelenideElement;
-import com.codeborne.selenide.WebDriverRunner;
-
-public class TaskAnalysisWidgetPage extends TemplatePage {
-
- private static final String TASK_FILTER_SELECTION = "task-widget:task-filter-add-form:task-filter-selection";
-
- @Override
- protected String getLoadedLocator() {
- return "div[id='task-widget']";
- }
-
- public void openAdvancedTaskFilter(String filterName, String filterIdName) {
- findTaskFilterButton().shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("[id='" + TASK_FILTER_SELECTION + "']").shouldBe(appear, DEFAULT_TIMEOUT).$$("label").asFixedIterable().stream()
- .filter(filter -> filter.getText().contentEquals(filterName)).findFirst().get()
- .shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("[id='task-widget:task-filter-add-form:update-task-filter-selected-command']")
- .shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("span[id$='" + filterIdName + "-filter:filter-open-form:advanced-filter-item-container']").shouldBe(appear,
- DEFAULT_TIMEOUT);
- }
-
- public void filterByTaskPriority(List selectedPriorities) {
- $("[id$='priority-filter:filter-open-form:advanced-filter-command']")
- .shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("[id$='priority-filter:filter-input-form:advanced-filter-panel-content']").shouldBe(appear, DEFAULT_TIMEOUT)
- .$$("label").asFixedIterable().stream().filter(filter -> !selectedPriorities.contains(filter.getText()))
- .forEach(filter -> filter.shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click());
-
- $("[id$='priority-filter:filter-input-form:update-command']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT)
- .click();
- }
-
- public void clickApplyFilter() {
- $("button[id$='task-widget:apply-filter']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- }
-
- private SelenideElement findTaskFilterButton() {
- return $("[id='task-widget:task-filter-add-action']");
- }
-
- public void enterDataToSaveFilterSet(String filterSetName, boolean isPersonalFilter) {
- $("[id='task-widget:filter-save-action']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
- $("[id='task-widget:filter-save-form:save-filter-set-name-input']").shouldBe(appear, DEFAULT_TIMEOUT)
- .sendKeys(filterSetName);
-
- SelenideElement filterVisibilityContainer = findElementById("task-widget:filter-save-form:save-filter-type-radio");
- if (isPersonalFilter) {
- filterVisibilityContainer.$$(By.tagName("LABEL")).get(0).shouldBe(clickable(), DEFAULT_TIMEOUT).click();
- } else {
- filterVisibilityContainer.$$(By.tagName("LABEL")).get(1).shouldBe(clickable(), DEFAULT_TIMEOUT).click();
- }
- }
-
- public WebElement waitAndGetSavingFilterDialog() {
- return $("div[id$='save-filter-set-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
- }
-
- public StatisticWidgetPage navigateToStatisticPage() {
- String backButtonId = "task-widget:back-button";
- waitForElementDisplayed(By.id(backButtonId), true);
- SelenideElement backButton = findElementById(backButtonId);
-
- clickByJavaScript(backButton);
- waitForElementDisplayed(By.id("statistics-widget"), true);
- return new StatisticWidgetPage();
- }
-
- public void clickOnColumnToggler() {
- String togglerId = "task-widget:statistic-result-form:toggler";
- waitForElementDisplayed(By.id(togglerId), true);
- clickByJavaScript(findElementById(togglerId));
- }
-
- public void filterByTaskName(String text) {
- waitForElementClickableThenClick($("[id$='task-name-filter:filter-open-form:advanced-filter-command']"));
- $("input[id$='task-name-filter:filter-input-form:name']").shouldBe(appear, DEFAULT_TIMEOUT).sendKeys(text);
- waitForElementClickableThenClick($("[id$='task-name-filter:filter-input-form:update-command']"));
- }
-
- public ElementsCollection getRowsInTaskTable() {
- return findElementById("task-widget:statistic-result-form:task-table_data")
- .$$(By.cssSelector("tr.ui-widget-content"));
- }
-
- private SelenideElement findCaseFilterButton() {
- String caseFilterButtonId = "task-widget:case-filter-add-action";
- waitForElementDisplayed(By.id(caseFilterButtonId), true);
- return findElementById(caseFilterButtonId);
- }
-
- public void openAdvancedCaseFilter(String filterName, String filterIdName) {
- waitForElementClickableThenClick(findCaseFilterButton());
- waitForElementDisplayed(findElementById("task-widget:case-filter-add-form:case-filter-selection"), true);
- SelenideElement filterSelectionElement = findElementById("task-widget:case-filter-add-form:case-filter-selection");
- for (SelenideElement filterElement : filterSelectionElement.$$(By.tagName("LABEL"))) {
- if (filterName.equals(filterElement.getText())) {
- waitForElementClickableThenClick(filterElement);
- waitForElementClickableThenClick(
- $("button[id$='task-widget:case-filter-add-form:update-task-filter-selected-command']"));
- break;
- }
- }
- waitForElementDisplayed(
- By.cssSelector("span[id$='" + filterIdName + "-filter:filter-open-form:advanced-filter-item-container']"),
- true);
- }
-
- public void filterByCaseName(String text) {
- waitForElementClickableThenClick($("[id$='case-name-filter:filter-open-form:advanced-filter-command']"));
- findElementByCssSelector("input[id$='case-name-filter:filter-input-form:name']").shouldBe(appear, DEFAULT_TIMEOUT)
- .sendKeys(text);
- waitForElementClickableThenClick($("[id$='case-name-filter:filter-input-form:update-command']"));
- }
-
- public void filterByCaseState(List selectedPriorities) {
- waitForElementClickableThenClick($(
- "div[id$='task-widget:case-filters-container'] button[id$='state-filter:filter-open-form:advanced-filter-command']"));
- SelenideElement selectionElement = findElementByCssSelector(
- "div[id$='task-widget:case-filters-container'] div[id$='state-filter:filter-input-form:advanced-filter-panel-content']");
- for (SelenideElement labelElement : selectionElement.$$(By.tagName("LABEL"))) {
- if (!selectedPriorities.contains(labelElement.getText())) {
- waitForElementClickableThenClick(labelElement);
- }
- }
- waitForElementClickableThenClick(
- $("div[id$='task-widget:case-filters-container'] button[id$='state-filter:filter-input-form:update-command']"));
- }
-
- public void filterByTaskCategory(String selectedCategory) {
- waitForElementClickableThenClick($("[id$='task-category-filter:filter-open-form:advanced-filter-command']"));
- waitForElementDisplayed($("div[id$=':task-category-filter-tree']"), true);
- SelenideElement selectionElement =
- findElementByCssSelector("[id$='task-category-filter:filter-input-form:advanced-filter-panel-content']");
- List categoryTreeLabels = selectionElement.$$(By.className("ui-treenode-label"));
- // Find parent node of tree first and uncheck it
- SelenideElement parentNodeOfTree = categoryTreeLabels.stream().findFirst().get();
- waitForElementDisplayed(parentNodeOfTree, true);
- waitForElementClickableThenClick(parentNodeOfTree);
- for (SelenideElement labelElement : categoryTreeLabels) {
- if (selectedCategory.contains(labelElement.getText())) {
- waitForElementClickableThenClick(labelElement);
- break;
- }
- }
- waitForElementClickableThenClick($("[id$='task-category-filter:filter-input-form:update-command']"));
- }
-
- public void filterByCaseCategory(String selectedCategory) {
- waitForElementClickableThenClick($("[id$='case-category-filter:filter-open-form:advanced-filter-command']"));
- waitForElementDisplayed($("div[id$=':case-category-filter-tree']"), true);
- SelenideElement selectionElement =
- findElementByCssSelector("[id$='case-category-filter:filter-input-form:advanced-filter-panel-content']");
- List categoryTreeLabels = selectionElement.$$(By.className("ui-treenode-label"));
- // Find parent node of tree first and uncheck it
- SelenideElement parentNodeOfTree = categoryTreeLabels.stream().findFirst().get();
- waitForElementDisplayed(parentNodeOfTree, true);
- waitForElementClickableThenClick(parentNodeOfTree);
- for (SelenideElement labelElement : categoryTreeLabels) {
- if (selectedCategory.contains(labelElement.getText())) {
- waitForElementClickableThenClick(labelElement);
- break;
- }
- }
- waitForElementClickableThenClick($("button[id$='case-category-filter:filter-input-form:update-command']"));
- }
-
- public void filterByOwner(String user) {
- openAdvancedCaseFilter("Owner", "owner");
- waitForElementClickableThenClick($("button[id$='owner-filter:filter-open-form:advanced-filter-command']"));
- findElementByCssSelector("input[id$='owner-filter:filter-input-form:owner_input']").sendKeys(user);
- waitForElementDisplayed($("span[id$='owner-filter:filter-input-form:owner_panel']"), true);
- waitForElementDisplayed($("div[id*='owner-filter'] .ui-avatar-text"), true);
- waitForElementClickableThenClick($("[id$=':owner-filter:filter-input-form:owner_panel']"));
- waitForElementClickableThenClick($("button[id$='owner-filter:filter-input-form:update-command']"));
- }
-
- public void saveFilterSet(String filterSetName, boolean isPersonalFilter) {
- enterDataToSaveFilterSet(filterSetName, isPersonalFilter);
- SelenideElement saveButton =
- $("button[id$='task-widget:filter-save-form:filter-save-command']").shouldBe(appear, DEFAULT_TIMEOUT);
- waitForElementClickableThenClick(saveButton);
- $("[id='task-widget:save-filter-set-dialog']").shouldBe(Condition.disappear, DEFAULT_TIMEOUT);
- saveButton.shouldBe(Condition.disappear, DEFAULT_TIMEOUT);
- }
-
- public void waitForTaskDataChangeToSpecificSize(int size) {
- new WebDriverWait(WebDriverRunner.getWebDriver(), DEFAULT_TIMEOUT).until((driver) -> {
- return getRowsInTaskTable().size() == size;
- });
- }
-
- public boolean loadFilterSet(String filterSetName, boolean isPersonalFilter) {
- waitPageLoaded();
- waitForElementDisplayed(
- $("a[id$='task-widget:filter-selection-form:filter-name']"), true);
- waitForElementClickableThenClick(
- "a[id$='task-widget:filter-selection-form:filter-name']");
- waitForElementDisplayed(
- findElementById(
- "task-widget:filter-selection-form:filter-name-overlay-panel"),
- true);
- SelenideElement filterContainer = null;
- if (isPersonalFilter) {
- try {
- filterContainer = findElementById(
- "task-widget:filter-selection-form:private-filters");
- } catch (NoSuchElementException e) {
- return false;
- }
- } else {
- try {
- filterContainer = findElementById(
- "task-widget:filter-selection-form:public-filters");
- } catch (NoSuchElementException e) {
- return false;
- }
- }
-
- if (!filterContainer.$(By.linkText(filterSetName)).isDisplayed()) {
- return false;
- }
- clickByJavaScript(filterContainer.$(By.linkText(filterSetName))
- .shouldBe(appear, DEFAULT_TIMEOUT));
- return true;
- }
-
- public String getFilterName() {
- new WebDriverWait(WebDriverRunner.getWebDriver(), DEFAULT_TIMEOUT).until((driver) ->
-
- $("a[id$='task-widget:filter-selection-form:filter-name'] > span:nth-child(2)").getText().length() > 1);
- WebElement filterName =
- findElementByCssSelector("a[id$='task-widget:filter-selection-form:filter-name'] > span:nth-child(2)");
- return filterName.getText();
- }
-
- private void filterByUserName(String user, String filterIdName) {
- waitForElementClickableThenClick(
- $("button[id$='" + filterIdName + "-filter:filter-open-form:advanced-filter-command']"));
- $("input[id*='" + filterIdName + "-filter:filter-input-form:']").sendKeys(user);
- waitForElementExisted(By.cssSelector("div[id*='" + filterIdName + "-filter'] .ui-avatar-text"), true);
- waitForElementClickableThenClick($("tr[class$='ui-state-highlight']"));
- waitForElementClickableThenClick($("button[id$='" + filterIdName + "-filter:filter-input-form:update-command']"));
- }
-
- public void filterByResponsible(String user, String filterName, String filterIdName) {
- openAdvancedTaskFilter(filterName, filterIdName);
- waitForElementClickableThenClick($("button[id$='responsible-filter:filter-open-form:advanced-filter-command']"));
- $("input[id$='responsible-filter:filter-input-form:responsible_input']").sendKeys(user);
- waitForElementDisplayed($("span[id$='responsible-filter:filter-input-form:responsible_panel']"), true);
- waitForElementDisplayed($("div[id*='responsible-filter'] .ui-avatar-text"), true);
- waitForElementClickableThenClick($("[id$=':responsible-filter:filter-input-form:responsible_panel']"));
- waitForElementClickableThenClick($("button[id$='responsible-filter:filter-input-form:update-command']"));
- }
-
- public void removeUserInFilter() {
- waitForElementDisplayed(By.cssSelector("button[id$='creator-filter:filter-open-form:advanced-filter-command']"),
- true);
- waitForElementClickableThenClick($("button[id$='creator-filter:filter-open-form:advanced-filter-command']"));
- waitForElementDisplayed(
- By.cssSelector("input[id$='creator-filter:filter-input-form:creator-component:creator-select_input']"), true);
- findElementByCssSelector("input[id$='creator-filter:filter-input-form:creator-component:creator-select_input']")
- .click();
- findElementByCssSelector("input[id$='creator-filter:filter-input-form:creator-component:creator-select_input']")
- .clear();
- waitForElementClickableThenClick($("button[id$='creator-filter:filter-input-form:update-command']"));
- }
-
- public void filterUserInCase(String user, String filterName, String filterIdName) {
- openAdvancedCaseFilter(filterName, filterIdName);
- filterByUserName(user, filterIdName);
- }
-
- public void removeResponsible() {
- waitForElementDisplayed(By.cssSelector("button[id$='responsible-filter:filter-open-form:advanced-filter-command']"),
- true);
- waitForElementClickableThenClick($("button[id$='responsible-filter:filter-open-form:advanced-filter-command']"));
- waitForElementDisplayed(By.cssSelector("input[id$='responsible-filter:filter-input-form:responsible_input']"),
- true);
- findElementByCssSelector("input[id$='responsible-filter:filter-input-form:responsible_input']").click();
- findElementByCssSelector("input[id$='responsible-filter:filter-input-form:responsible_input']").clear();
- waitForElementClickableThenClick($("button[id$='responsible-filter:filter-input-form:update-command']"));
- }
-
- public void openNoActivatorFilter(String filterName) {
- findTaskFilterButton().click();
- SelenideElement filterSelectionElement = findElementById(TASK_FILTER_SELECTION);
- for (SelenideElement filterElement : filterSelectionElement.$$(By.tagName("LABEL"))) {
- if (filterName.equals(filterElement.getText())) {
- filterElement.click();
- waitForElementClickableThenClick(
- $("button[id$='task-widget:task-filter-add-form:update-task-filter-selected-command']"));
- break;
- }
- }
- }
-
- public void filterByUnavailableActivator() {
- waitForElementDisplayed(
- By.cssSelector("button[id$='available-activator-filter:filter-open-form:advanced-filter-command']"), true);
- waitForElementClickableThenClick(
- $("button[id$='available-activator-filter:filter-open-form:advanced-filter-command']"));
-
- waitForElementDisplayed(By.cssSelector("[id$='available-activator-filter:filter-input-form:available-activator']"),
- true);
- WebElement displayOnlyUnavailableTaskCheckbox =
- findElementByCssSelector("[id$='available-activator-filter:filter-input-form:available-activator']");
- displayOnlyUnavailableTaskCheckbox.click();
- waitForElementClickableThenClick($("button[id$='available-activator-filter:filter-input-form:update-command']"));
- }
-
- public boolean isResetButtonShown() {
- waitForElementDisplayed(By.cssSelector("[id$='task-widget:filter-reset-action']"), true);
- return isElementDisplayed(By.cssSelector("[id$='task-widget:filter-reset-action']"));
- }
-
- public String getUser(String filterName) {
- waitForElementDisplayed($("button[id$='" + filterName + "-filter:filter-open-form:advanced-filter-command']"),
- true);
- new WebDriverWait(WebDriverRunner.getWebDriver(), DEFAULT_TIMEOUT).until((driver) -> findElementByCssSelector(
- "button[id$='" + filterName + "-filter:filter-open-form:advanced-filter-command'] > span").getText()
- .length() > 1);
- return findElementByCssSelector(
- "button[id$='" + filterName + "-filter:filter-open-form:advanced-filter-command'] > span").getText();
- }
-
- public void resetFilter() {
- waitForElementClickableThenClick($("[id$='task-widget:filter-reset-action']"));
- waitForElementDisplayed($("[id$='task-widget:filter-reset-command']"), true);
- waitForElementClickableThenClick($("[id$='task-widget:filter-reset-command']"));
- new WebDriverWait(WebDriverRunner.getWebDriver(), DEFAULT_TIMEOUT)
- .until((driver) -> $("a[id$='task-widget:filter-selection-form:filter-name'] > span:nth-child(2)").getText()
- .contains("Default"));
- }
-
- public SelenideElement findColumnContainer() {
- return $(By.tagName("body")).$(By.cssSelector(".ui-columntoggler"));
- }
-
- public void countSavedFilter(int size) {
- waitForElementDisplayed($("a[id$='task-widget:filter-selection-form:filter-name']"), true);
- waitForElementClickableThenClick("a[id$='task-widget:filter-selection-form:filter-name']");
- $$(".user-defined-filter-container").shouldBe(CollectionCondition.sizeGreaterThanOrEqual(size), DEFAULT_TIMEOUT);
- }
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/DefaultChartTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/DefaultChartTest.java
deleted file mode 100644
index 1d5570ff092..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/DefaultChartTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.axonivy.portal.selenium.test;
-
-import static com.codeborne.selenide.Selenide.$;
-
-import java.util.Set;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebElement;
-
-import com.axonivy.ivy.webtest.IvyWebTest;
-import com.axonivy.portal.selenium.common.BaseTest;
-import com.axonivy.portal.selenium.common.TestAccount;
-import com.axonivy.portal.selenium.page.MainMenuPage;
-import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
-
-@IvyWebTest
-public class DefaultChartTest extends BaseTest {
-
- private static final String DEFAULT_CHART = "Tasks by Priority";
- private static final String RESTORE_DEFAULT = "Restore default";
-
- @Override
- @BeforeEach
- public void setup() {
- super.setup();
- login(TestAccount.ADMIN_USER);
- grantPermissionToCreateChart();
- }
-
- @AfterEach
- public void clear() {
- resetLanguageOfCurrentUser();
- }
-
- @Test
- public void testCreateDefaultChart() {
- new NewDashboardPage();
- MainMenuPage mainMenuPage = new MainMenuPage();
- StatisticWidgetPage statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
- Set chartNames = statisticWidgetPage.getAllChartNames();
- assertTrue(chartNames.contains(DEFAULT_CHART));
- assertEquals(RESTORE_DEFAULT, statisticWidgetPage.getRestoreDefaultButtonName());
- }
-
- @Test
- public void testRestoreDefaultChart() {
- MainMenuPage mainMenuPage = new MainMenuPage();
- StatisticWidgetPage statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- resizeBrowserTo2kResolution();
- statisticWidgetPage.waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
- statisticWidgetPage.switchCreateMode();
- statisticWidgetPage.createCaseByFinishedTask();
- statisticWidgetPage.backToDashboard();
- statisticWidgetPage.restoreDefaultCharts();
-
- WebElement taskByExpiryChartName3 = null;
- try {
- taskByExpiryChartName3 =
- $("[id='statistics-widget:statistic-dashboard-widget:statistic-chart-repeater:2:chart-name']");
- } catch (Exception ex) {
- }
-
- assertEquals(DEFAULT_CHART, statisticWidgetPage.getChartName(0));
- assertEquals(false, taskByExpiryChartName3.isDisplayed());
- }
-
- private void grantPermissionToCreateChart() {
- redirectToRelativeLink(grantPortalPermission);
- }
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/MenuTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/MenuTest.java
index 74280e0f9f9..7d61c6bf1f2 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/MenuTest.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/MenuTest.java
@@ -1,19 +1,18 @@
package com.axonivy.portal.selenium.test;
import org.junit.jupiter.api.Assertions;
-
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.axonivy.ivy.webtest.IvyWebTest;
import com.axonivy.portal.selenium.common.BaseTest;
import com.axonivy.portal.selenium.common.TestAccount;
+import com.axonivy.portal.selenium.common.Variable;
+import com.axonivy.portal.selenium.page.CaseWidgetPage;
import com.axonivy.portal.selenium.page.MainMenuPage;
import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
import com.axonivy.portal.selenium.page.TaskWidgetPage;
import com.axonivy.portal.selenium.page.UserProfilePage;
-import com.axonivy.portal.selenium.common.Variable;
import ch.ivy.addon.portalkit.enums.PortalVariable;
@@ -47,7 +46,7 @@ public void testLoadCustomMenuItems() {
MainMenuPage mainMenuPage = new MainMenuPage();
String expected =
- "Dashboard,Processes,Tasks,Cases,Statistics,User example guide,Google,Testing link google,Testing example,A link,B link";
+ "Dashboard,Processes,Tasks,Cases,User example guide,Google,Testing link google,Testing example,A link,B link";
assertEquals(expected, mainMenuPage.getMenuItemsAsString());
}
@@ -69,7 +68,7 @@ public void testKeepClosedStateWhenNavigateToAnotherPage() {
NewDashboardPage newDashboardPage = new NewDashboardPage();
newDashboardPage.waitPageLoaded();
MainMenuPage mainMenuPage = newDashboardPage.openMainMenu();
- StatisticWidgetPage dashboardPage = mainMenuPage.selectStatisticDashboard();
+ CaseWidgetPage dashboardPage = mainMenuPage.openCaseList();
dashboardPage.waitForPageLoad();
dashboardPage.closeMainMenu();
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/PortalPermissionTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/PortalPermissionTest.java
index 5643b03f749..42db19d4e92 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/PortalPermissionTest.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/PortalPermissionTest.java
@@ -54,14 +54,12 @@ public void testShowHideSubMenuItems() {
assertFalse(mainMenuPage.isProcessesDisplayed());
assertFalse(mainMenuPage.isTasksDisplayed());
assertFalse(mainMenuPage.isCasesDisplayed());
- assertFalse(mainMenuPage.isStatisticsDisplayed());
grantAccessFullListPermissions();
newDashboardPage = new NewDashboardPage();
WaitHelper.assertTrueWithWait(() -> mainMenuPage.isProcessesDisplayed());
assertTrue(mainMenuPage.isTasksDisplayed());
assertTrue(mainMenuPage.isCasesDisplayed());
- assertTrue(mainMenuPage.isStatisticsDisplayed());
}
@Test
@@ -202,8 +200,6 @@ private void grantAccessFullListPermissions() {
String.format(grantSpecificPortalPermissionLink, PortalPermission.ACCESS_FULL_CASE_LIST.getValue()));
redirectToRelativeLink(
String.format(grantSpecificPortalPermissionLink, PortalPermission.ACCESS_FULL_TASK_LIST.getValue()));
- redirectToRelativeLink(
- String.format(grantSpecificPortalPermissionLink, PortalPermission.ACCESS_FULL_STATISTICS_LIST.getValue()));
}
private void denyAccessFullListPermissions() {
@@ -213,8 +209,6 @@ private void denyAccessFullListPermissions() {
String.format(denySpecificPortalPermissionLink, PortalPermission.ACCESS_FULL_CASE_LIST.getValue()));
redirectToRelativeLink(
String.format(denySpecificPortalPermissionLink, PortalPermission.ACCESS_FULL_TASK_LIST.getValue()));
- redirectToRelativeLink(
- String.format(denySpecificPortalPermissionLink, PortalPermission.ACCESS_FULL_STATISTICS_LIST.getValue()));
}
private void grantTaskActionsPermissions() {
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/StatisticDashboardWidgetTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/StatisticDashboardWidgetTest.java
deleted file mode 100644
index 9982f833da4..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/StatisticDashboardWidgetTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.axonivy.portal.selenium.test;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import com.axonivy.ivy.webtest.IvyWebTest;
-import com.axonivy.portal.selenium.common.BaseTest;
-import com.axonivy.portal.selenium.common.TestAccount;
-import com.axonivy.portal.selenium.page.DashboardModificationPage;
-import com.axonivy.portal.selenium.page.NewDashboardDetailsEditPage;
-import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.codeborne.selenide.CollectionCondition;
-import com.codeborne.selenide.Condition;
-
-import ch.ivy.addon.portalkit.enums.PortalVariable;
-
-@IvyWebTest
-public class StatisticDashboardWidgetTest extends BaseTest {
-
- private static final String CHART_ID = "statistic_1";
- private NewDashboardPage newDashboardPage;
-
- @Override
- @BeforeEach
- public void setup() {
- super.setup();
- newDashboardPage = new NewDashboardPage();
- }
-
- @Test
- public void testShowChartInfo() {
- login(TestAccount.ADMIN_USER);
- createJSonFile("dashboard-has-one-chart-example.json", PortalVariable.DASHBOARD.key);
- redirectToRelativeLink(createTestingTasksUrl);
- var chartWidget = newDashboardPage.selectStatisticWidget();
- var chartName = chartWidget.getChartName(CHART_ID);
- assertTrue(StringUtils.equalsIgnoreCase("Tasks by Priority", chartName));
- var infoIcon = chartWidget.getStatisticInfoIconOfChart(CHART_ID);
- infoIcon.should(Condition.appear);
- chartWidget.openStatisticInfoPanel(CHART_ID);
- var chartFilter = chartWidget.countFilterOfStatistic(CHART_ID);
- chartFilter.shouldHave(CollectionCondition.sizeGreaterThanOrEqual(4));
- }
-
- @Test
- public void testEditStatisticChart() {
- login(TestAccount.ADMIN_USER);
- createJSonFile("dashboard-has-one-chart-example.json", PortalVariable.DASHBOARD.key);
- NewDashboardDetailsEditPage newDashboardDetailsEditPage = gotoEditPublicDashboardPage();
- var chartWidget = newDashboardDetailsEditPage.selectStatisticWidget();
- chartWidget.getEditIconOfChart(CHART_ID).shouldBe(Condition.visible, Condition.enabled);
- var editChartDialog = chartWidget.openEditStatisticWidgetDialog(CHART_ID);
- assertTrue(StringUtils.equalsIgnoreCase(editChartDialog, "Edit Widget Configuration"));
- chartWidget.clickOnCancelConfiguration();
- }
-
- private NewDashboardDetailsEditPage gotoEditPublicDashboardPage() {
- newDashboardPage.waitForAbsencesGrowlMessageDisplay();
- var configurationPage = newDashboardPage.openDashboardConfigurationPage();
- DashboardModificationPage modificationPage = configurationPage.openEditPublicDashboardsPage();
- return modificationPage.navigateToEditDashboardDetailsByName("Dashboard");
- }
-
- @Test
- public void testShowChartCasesByCategoryInfo() {
- login(TestAccount.ADMIN_USER);
- createJSonFile("dashboard-has-chart-cases-by-category.json", PortalVariable.DASHBOARD.key);
- redirectToRelativeLink(createTestingTasksUrl);
- var chartWidget = newDashboardPage.selectStatisticWidget();
- var chartName = chartWidget.getChartName(CHART_ID);
- assertTrue(StringUtils.equalsIgnoreCase("Cases by Category", chartName));
- var infoIcon = chartWidget.getStatisticInfoIconOfChart(CHART_ID);
- infoIcon.should(Condition.appear);
- chartWidget.openStatisticInfoPanel(CHART_ID);
- var chartFilter = chartWidget.countFilterOfStatistic(CHART_ID);
- chartFilter.shouldHave(CollectionCondition.sizeGreaterThanOrEqual(4));
- }
-
- @Test
- public void testEditCasesByCategoryChart() {
- login(TestAccount.ADMIN_USER);
- createJSonFile("dashboard-has-chart-cases-by-category.json", PortalVariable.DASHBOARD.key);
- redirectToRelativeLink(createTestingTasksUrl);
- NewDashboardDetailsEditPage newDashboardDetailsEditPage = gotoEditPublicDashboardPage();
- var chartWidget = newDashboardDetailsEditPage.selectStatisticWidget();
- chartWidget.getEditIconOfChart(CHART_ID).shouldBe(Condition.visible, Condition.enabled);
- var editChartDialog = chartWidget.openEditStatisticWidgetDialog(CHART_ID);
- assertTrue(StringUtils.equalsIgnoreCase(editChartDialog, "Edit Widget Configuration"));
- chartWidget.clickOnCancelConfiguration();
- }
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/StatisticWidgetTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/StatisticWidgetTest.java
deleted file mode 100644
index 07aa7602b15..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/StatisticWidgetTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.axonivy.portal.selenium.test;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.openqa.selenium.By;
-
-import com.axonivy.ivy.webtest.IvyWebTest;
-import com.axonivy.portal.selenium.common.BaseTest;
-import com.axonivy.portal.selenium.common.TestAccount;
-import com.axonivy.portal.selenium.common.WaitHelper;
-import com.axonivy.portal.selenium.page.MainMenuPage;
-import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
-import com.axonivy.portal.selenium.page.UserProfilePage;
-
-@IvyWebTest
-public class StatisticWidgetTest extends BaseTest {
- private static final String TASK_BY_PRIORITY_DEFAULT_CHART_NAME = "Tasks by Priority";
- public static final String TASK_BY_PRIORITY_CHART_NAME = "Task by priority chart";
- public static final String CASE_BY_STATE_CHART_NAME = "Case by state chart";
- public static final String TASK_BY_EXPIRY_CHART_NAME = "Task by expiry chart";
- public static final String ELAPSED_TIME_CHART_NAME = "Elapsed time chart";
- public static final String CASE_BY_FINISHED_TASK_CHART_NAME = "Case by finished task chart";
- public static final String CASE_BY_FINISHED_TIME_CHART_NAME = "Case by finished time chart";
- public static final String CASES_BY_CATEGORY_CHART_NAME = "Cases by category chart";
-
- private NewDashboardPage newDashboardPage;
- private StatisticWidgetPage statisticWidgetPage;
- private MainMenuPage mainMenuPage;
-
- @Override
- @BeforeEach
- public void setup() {
- super.setup();
- redirectToRelativeLink(createTestingTasksUrl);
- login(TestAccount.ADMIN_USER);
- newDashboardPage = new NewDashboardPage();
- }
-
- @AfterEach
- public void clear() {
- resetLanguageOfCurrentUser();
- }
-
- @Test
- public void testNavigateToChartFromMenu() {
- grantPermissionToCreateChart();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
- assertTrue(statisticWidgetPage.isFullMode());
- }
-
- @Test
- public void testNavigateToChartWithoutPermissionFromMenu() {
- String denyPortalPermissionsURL = "portalKitTestHelper/14DE09882B540AD5/denyPortalPermission.ivp";
- redirectToRelativeLink(denyPortalPermissionsURL);
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- assertEquals(false, statisticWidgetPage.hasCreateChartsLink());
- redirectToRelativeLink(grantPortalPermission);
- }
-
- @Test
- public void testCreateCharts() {
- grantPermissionToCreateChart();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
- statisticWidgetPage.switchCreateMode();
-
- statisticWidgetPage.createTaskByPriorityChart();
- statisticWidgetPage.createTaskByExpiryChart();
- statisticWidgetPage.createCaseByStateChart();
- statisticWidgetPage.createElapsedTimeChart();
- statisticWidgetPage.createCaseByFinishedTask();
- statisticWidgetPage.createCaseByFinishTime();
- statisticWidgetPage.createCasesByCategory();
-
- statisticWidgetPage.backToDashboard();
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='0:chart-name-container'] .chart-name").getText()
- .equals(TASK_BY_PRIORITY_DEFAULT_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='1:chart-name-container'] .chart-name").getText()
- .equals(TASK_BY_PRIORITY_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='2:chart-name-container'] .chart-name").getText()
- .equals(TASK_BY_EXPIRY_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='3:chart-name-container'] .chart-name").getText()
- .equals(CASE_BY_STATE_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='4:chart-name-container'] .chart-name").getText()
- .equals(ELAPSED_TIME_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='5:chart-name-container'] .chart-name").getText()
- .equals(CASE_BY_FINISHED_TASK_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='6:chart-name-container'] .chart-name").getText()
- .equals(CASE_BY_FINISHED_TIME_CHART_NAME));
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='7:chart-name-container'] .chart-name").getText()
- .equals(CASES_BY_CATEGORY_CHART_NAME));
- }
-
- @Test
- public void testBreadCrumb() {
- grantPermissionToCreateChart();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
- assertEquals("Statistics", statisticWidgetPage.getTextOfCurrentBreadcrumb());
-
- statisticWidgetPage.switchCreateMode();
- assertEquals("Statistics", statisticWidgetPage.getTextOfCurrentBreadcrumb());
-
- statisticWidgetPage.goToHomeFromBreadcrumb();
- newDashboardPage = new NewDashboardPage();
- assertEquals(true, newDashboardPage.isDisplayed());
- }
-
- private void grantPermissionToCreateChart() {
- redirectToRelativeLink(grantPortalPermission);
- }
-
- @Test
- public void testChartNameMultiLanguage() {
- resetLanguageOfCurrentUser();
- grantPermissionToCreateChart();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.waitForElementDisplayed(By.id("statistics-widget:widget-container"), true);
-
- statisticWidgetPage.switchCreateMode();
- statisticWidgetPage.createTaskByPriorityChartMultiLanguage();
-
- statisticWidgetPage.backToDashboard();
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='1:chart-name-container'] .chart-name").getText()
- .equals("Task by priority chart English"));
-
- UserProfilePage userProfilePage = statisticWidgetPage.openMyProfilePage();
- userProfilePage.selectLanguage(3);
- newDashboardPage = userProfilePage.save();
-
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- WaitHelper.assertTrueWithWait(
- () -> statisticWidgetPage.findElementByCssSelector("div[id$='1:chart-name-container'] .chart-name").getText()
- .equals("Task by priority chart German"));
- }
-
-}
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/dashboard/DashboardRestoreConfigurationTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/dashboard/DashboardRestoreConfigurationTest.java
index 20b854694fa..4da38cdb138 100644
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/dashboard/DashboardRestoreConfigurationTest.java
+++ b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/dashboard/DashboardRestoreConfigurationTest.java
@@ -73,7 +73,7 @@ public void testRestorePublicDashboardToDefaultTemplate() {
@Test
public void testCannotRestoreDashboardWhenTemplateNotFound() {
var dashboardName = "Dashboard";
- createJSonFile("dashboard-has-one-chart-example.json", PortalVariable.DASHBOARD.key);
+ createJSonFile("dashboard-has-newsfeed.json", PortalVariable.DASHBOARD.key);
newDashboardPage.waitForAbsencesGrowlMessageDisplay();
var configurationPage = newDashboardPage.openDashboardConfigurationPage();
var modificationPage = configurationPage.openEditPublicDashboardsPage();
diff --git a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/task/TaskAnalysisWidgetTest.java b/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/task/TaskAnalysisWidgetTest.java
deleted file mode 100644
index 5129b83d9bc..00000000000
--- a/AxonIvyPortal/portal-selenium-test/src_test/com/axonivy/portal/selenium/test/task/TaskAnalysisWidgetTest.java
+++ /dev/null
@@ -1,348 +0,0 @@
-package com.axonivy.portal.selenium.test.task;
-
-import static com.codeborne.selenide.Condition.exist;
-import static com.codeborne.selenide.Condition.visible;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebElement;
-
-import com.axonivy.ivy.webtest.IvyWebTest;
-import com.axonivy.portal.selenium.common.BaseTest;
-import com.axonivy.portal.selenium.common.TestAccount;
-import com.axonivy.portal.selenium.common.Variable;
-import com.axonivy.portal.selenium.page.MainMenuPage;
-import com.axonivy.portal.selenium.page.NewDashboardPage;
-import com.axonivy.portal.selenium.page.StatisticWidgetPage;
-import com.axonivy.portal.selenium.page.TaskAnalysisWidgetPage;
-import com.codeborne.selenide.CollectionCondition;
-import com.codeborne.selenide.Condition;
-import com.codeborne.selenide.ElementsCollection;
-import com.codeborne.selenide.SelenideElement;
-
-@IvyWebTest
-public class TaskAnalysisWidgetTest extends BaseTest {
-
- private static final String ENABLE_CASE_OWNER_SETTING = Variable.ENABLE_CASE_OWNER.getKey();
- private NewDashboardPage newDashboardPage;
- private StatisticWidgetPage statisticWidgetPage;
- private MainMenuPage mainMenuPage;
-
- @Override
- @BeforeEach
- public void setup() {
- super.setup();
- createTestingTasks();
- createTestData();
- login(TestAccount.ADMIN_USER);
- grantPermissionOfPortal();
- newDashboardPage = new NewDashboardPage();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- }
-
- private void grantPermissionOfPortal() {
- redirectToRelativeLink(grantPortalPermission);
- }
-
- @Test
- public void testBackToStatisticPage() {
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- assertTrue(taskAnalysisWidgetPage.isDisplayed());
- statisticWidgetPage = taskAnalysisWidgetPage.navigateToStatisticPage();
- assertTrue(statisticWidgetPage.isDisplayed());
- }
-
- @Test
- public void testAddAndRemoveColumns() {
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
-
- taskAnalysisWidgetPage.clickOnColumnToggler();
-
- SelenideElement columnContainer = taskAnalysisWidgetPage.findColumnContainer();
- int numberOfCheckboxes = columnContainer.findElements(By.cssSelector(".ui-chkbox-box")).size();
- List unselectedColumnCheckboxes =
- columnContainer.$$(By.cssSelector(".ui-chkbox-box:not(.ui-state-active)"));
-
- unselectedColumnCheckboxes.forEach(elem -> elem.click());
- taskAnalysisWidgetPage.waitPageLoaded();
-
- int numberOfColumns = taskAnalysisWidgetPage.findElementById("task-widget:statistic-result-form:task-table_head")
- .findElements(By.cssSelector("th[scope='col']:not(.ui-helper-hidden)")).size();
- assertEquals(numberOfColumns, numberOfCheckboxes);
-
- refreshPage();
- taskAnalysisWidgetPage.waitPageLoaded();
- taskAnalysisWidgetPage.clickOnColumnToggler();
- List selectedColumnCheckboxes = columnContainer
- .$$(By.cssSelector(".ui-chkbox-box.ui-state-active"));
-
- selectedColumnCheckboxes.get(0)
- .shouldBe(Condition.and("should be clickable", visible, exist),
- DEFAULT_TIMEOUT)
- .click();
- selectedColumnCheckboxes.get(1)
- .shouldBe(Condition.and("should be clickable", visible, exist),
- DEFAULT_TIMEOUT)
- .click();
-
- taskAnalysisWidgetPage.waitPageLoaded();
-
- numberOfColumns = taskAnalysisWidgetPage
- .findElementById("task-widget:statistic-result-form:task-table_head")
- .$$(By.cssSelector("th[scope='col']:not(.ui-helper-hidden)"))
- .shouldBe(CollectionCondition.sizeGreaterThanOrEqual(0)).size();
-
- assertEquals(numberOfColumns, selectedColumnCheckboxes.size());
- }
-
- @Test
- public void testApplyTaskFilters() {
- String nameKeyword = "request";
- String prioritySeletion = "NORMAL";
-
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Name", "name");
- taskAnalysisWidgetPage.filterByTaskName(nameKeyword);
-
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Priority", "priority");
- List selectedPriorities = new ArrayList<>();
- selectedPriorities.add(prioritySeletion);
- taskAnalysisWidgetPage.filterByTaskPriority(selectedPriorities);
- taskAnalysisWidgetPage.clickApplyFilter();
-
- ElementsCollection results = taskAnalysisWidgetPage.getRowsInTaskTable();
- results.shouldHave(CollectionCondition.size(2), DEFAULT_TIMEOUT);
-
- for (WebElement resultRow : results) {
- List resultCells = resultRow.findElements(By.cssSelector("td:not([class='ui-helper-hidden'])"));
- assertTrue(resultCells.get(2).getText().toLowerCase().contains(nameKeyword));
- assertTrue(resultCells.get(3).getText().equals(prioritySeletion));
- }
- }
-
- @Test
- public void testApplyCaseFilters() {
- String keyword = "request";
- String stateSeletion = "In progress";
-
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.openAdvancedCaseFilter("State", "state");
- taskAnalysisWidgetPage.openAdvancedCaseFilter("Name", "case-name");
- taskAnalysisWidgetPage.filterByCaseName(keyword);
-
- List selectedStates = new ArrayList<>();
- selectedStates.add(stateSeletion);
- taskAnalysisWidgetPage.filterByCaseState(selectedStates);
- taskAnalysisWidgetPage.clickApplyFilter();
-
- ElementsCollection results = taskAnalysisWidgetPage.getRowsInTaskTable();
- results.shouldHave(CollectionCondition.size(4), DEFAULT_TIMEOUT);
-
- for (WebElement resultRow : results) {
- List resultCells = resultRow.findElements(By.cssSelector("td:not([class='ui-helper-hidden'])"));
- assertTrue(resultCells.get(0).getText().toLowerCase().contains(keyword));
- assertTrue("RUNNING".equals(resultCells.get(1).getText()));
- }
- }
-
- @Test
- public void testApplyCategoryFilters() {
- resizeBrowserTo2kResolution();
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
-
- // Task category filter
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Category", "task-category");
- taskAnalysisWidgetPage.filterByTaskCategory("Other Leave");
- taskAnalysisWidgetPage.clickApplyFilter();
- ElementsCollection results = taskAnalysisWidgetPage.getRowsInTaskTable();
- results.shouldHave(CollectionCondition.size(2), DEFAULT_TIMEOUT);
-
- // Case category filter
- taskAnalysisWidgetPage.resetFilter();
- taskAnalysisWidgetPage.openAdvancedCaseFilter("Case category",
- "case-category");
- taskAnalysisWidgetPage.filterByCaseCategory("Leave Request");
- taskAnalysisWidgetPage.clickApplyFilter();
-
- results = taskAnalysisWidgetPage.getRowsInTaskTable();
- results.shouldHave(CollectionCondition.size(4), DEFAULT_TIMEOUT);
- }
-
- @Test
- public void testApplyCaseOwnerFilter() {
- updatePortalSetting(ENABLE_CASE_OWNER_SETTING, "true");
- redirectToRelativeLink(userIsOwnerUrl);
- newDashboardPage = new NewDashboardPage();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.filterByOwner("Demo");
- taskAnalysisWidgetPage.clickApplyFilter();
-
- ElementsCollection results = taskAnalysisWidgetPage.getRowsInTaskTable();
- results.shouldHave(CollectionCondition.size(2), DEFAULT_TIMEOUT);
- updatePortalSetting(ENABLE_CASE_OWNER_SETTING, "false");
- }
-
- @Test
- public void testAddCaseOwnerColumn() {
- updatePortalSetting(ENABLE_CASE_OWNER_SETTING, "true");
- newDashboardPage = new NewDashboardPage();
- mainMenuPage = newDashboardPage.openMainMenu();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
-
- taskAnalysisWidgetPage.clickOnColumnToggler();
-
- WebElement columnContainer = taskAnalysisWidgetPage.getDriver().findElement(By.tagName("body"))
- .findElement(By.cssSelector(".ui-columntoggler"));
- List checkboxes = columnContainer.findElements(By.cssSelector("li.ui-columntoggler-item"));
-
- checkboxes.forEach(elem -> {
- if (StringUtils.equals(elem.getText(), "Case Owner")) {
- elem.findElement(By.className("ui-chkbox")).click();
- }
- });
- updatePortalSetting(ENABLE_CASE_OWNER_SETTING, "false");
- }
-
- @Test
- public void testSavePublicFilterSet() {
- String filterSetName = "Filters for annual";
-
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- resizeBrowserTo2kResolution();
- addFilters(taskAnalysisWidgetPage);
- taskAnalysisWidgetPage.saveFilterSet(filterSetName, false);
- taskAnalysisWidgetPage.countSavedFilter(2);
- statisticWidgetPage = taskAnalysisWidgetPage.navigateToStatisticPage();
- TaskAnalysisWidgetPage secondTaskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- boolean isFilterSetloaded = secondTaskAnalysisWidgetPage.loadFilterSet(filterSetName, false);
-
- // Sometimes ES take longer time to save data...
- if (!isFilterSetloaded) {
- refreshPage();
- secondTaskAnalysisWidgetPage.loadFilterSet(filterSetName, false);
- }
-
- secondTaskAnalysisWidgetPage.waitForTaskDataChangeToSpecificSize(1);
- List resultCells = secondTaskAnalysisWidgetPage.getRowsInTaskTable().get(0)
- .findElements(By.cssSelector("td:not([class='ui-helper-hidden'])"));
- assertTrue(resultCells.get(0).getText().toLowerCase().contains("request"));
- assertTrue("RUNNING".equals(resultCells.get(1).getText()));
- assertTrue(resultCells.get(2).getText().toLowerCase().contains("annual"));
- }
-
- @Test
- public void testSavePrivateFilterSet() {
- String filterSetName = "Filters for annual";
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- resizeBrowserTo2kResolution();
- addFilters(taskAnalysisWidgetPage);
- taskAnalysisWidgetPage.saveFilterSet(filterSetName, true);
- taskAnalysisWidgetPage.countSavedFilter(2);
- statisticWidgetPage = taskAnalysisWidgetPage.navigateToStatisticPage();
- TaskAnalysisWidgetPage secondTaskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- boolean isFilterSetloaded = secondTaskAnalysisWidgetPage.loadFilterSet(filterSetName, true);
-
- // Sometimes ES take longer time to save data...
- if (!isFilterSetloaded) {
- refreshPage();
- secondTaskAnalysisWidgetPage.loadFilterSet(filterSetName, true);
- }
-
- secondTaskAnalysisWidgetPage.waitForTaskDataChangeToSpecificSize(1);
-
- List resultCells = secondTaskAnalysisWidgetPage.getRowsInTaskTable().get(0)
- .findElements(By.cssSelector("td:not([class='ui-helper-hidden'])"));
- assertTrue(resultCells.get(0).getText().toLowerCase().contains("request"));
- assertTrue("RUNNING".equals(resultCells.get(1).getText()));
- assertTrue(resultCells.get(2).getText().toLowerCase().contains("annual"));
- }
-
- private void createTestData() {
- redirectToRelativeLink(create12CasesWithCategoryUrl);
- }
-
- private void addFilters(TaskAnalysisWidgetPage taskAnalysisWidgetPage) {
- String taskNameKeyword = "annual";
- String taskCategory = "Annual Leave";
- String caseNameKeyword = "request";
- String caseCategory = "Leave Request";
- String caseState = "In progress";
-
- taskAnalysisWidgetPage.openAdvancedCaseFilter("State", "state");
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Name", "name");
- taskAnalysisWidgetPage.filterByTaskName(taskNameKeyword);
-
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Category", "task-category");
- taskAnalysisWidgetPage.filterByTaskCategory(taskCategory);
-
- taskAnalysisWidgetPage.openAdvancedCaseFilter("Name", "case-name");
- taskAnalysisWidgetPage.filterByCaseName(caseNameKeyword);
-
- taskAnalysisWidgetPage.openAdvancedCaseFilter("Case category", "case-category");
- taskAnalysisWidgetPage.filterByCaseCategory(caseCategory);
-
- List selectedStates = new ArrayList<>();
- selectedStates.add(caseState);
- taskAnalysisWidgetPage.filterByCaseState(selectedStates);
- }
-
- @Test
- public void testDefaultAndResetFilter() {
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- assertTrue(taskAnalysisWidgetPage.getFilterName().contains("Default filter"));
-
- taskAnalysisWidgetPage.openAdvancedTaskFilter("Name", "name");
- taskAnalysisWidgetPage.filterByTaskName("request");
- assertTrue(taskAnalysisWidgetPage.isResetButtonShown());
-
- taskAnalysisWidgetPage.resetFilter();
- assertTrue(taskAnalysisWidgetPage.getFilterName().contains("Default filter"));
- }
-
- @Test
- public void testRemoveAndReloadFilter() {
- // Task Responsible, Case Creator
- String filterSetName = "saveUserFilter";
-
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.filterByResponsible("Demo", "Responsible", "responsible");
- taskAnalysisWidgetPage.filterUserInCase("Demo", "Creator", "creator");
- resizeBrowserTo2kResolution();
- taskAnalysisWidgetPage.saveFilterSet(filterSetName, false);
- taskAnalysisWidgetPage.countSavedFilter(2);
-
- MainMenuPage mainMenuPage = new MainMenuPage();
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.loadFilterSet(filterSetName, false);
-
- taskAnalysisWidgetPage.removeResponsible();
- taskAnalysisWidgetPage.removeUserInFilter();
-
- statisticWidgetPage = mainMenuPage.selectStatisticDashboard();
- statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.loadFilterSet(filterSetName, false);
-
- assertTrue(taskAnalysisWidgetPage.getUser("responsible").contains("Demo"));
- assertTrue(taskAnalysisWidgetPage.getUser("creator").contains("Demo"));
- }
-
- @Test
- public void testTaskFilterForUnavailableActivator() {
- TaskAnalysisWidgetPage taskAnalysisWidgetPage = statisticWidgetPage.navigateToTaskAnalysisPage();
- taskAnalysisWidgetPage.openNoActivatorFilter("Missing activator");
- taskAnalysisWidgetPage.filterByUnavailableActivator();
- taskAnalysisWidgetPage.clickApplyFilter();
- ElementsCollection results = taskAnalysisWidgetPage.getRowsInTaskTable();
- results.shouldHave(CollectionCondition.size(2), DEFAULT_TIMEOUT);
- }
-}
diff --git a/AxonIvyPortal/portal/cms/cms.yaml b/AxonIvyPortal/portal/cms/cms.yaml
index f036beb4fa2..0a2e406ac75 100644
--- a/AxonIvyPortal/portal/cms/cms.yaml
+++ b/AxonIvyPortal/portal/cms/cms.yaml
@@ -209,7 +209,6 @@ ch.ivy.addon.portalkit.ui.jsf:
hideChangePasswordButtonNote: Set this variable to true to hide the "Change Password" option in the top menu and the "Forgotten Password" option on the login page. If set to false, these options will be shown.
hideLogoutButtonNote: If true, the logout button on top menu will be hidden, otherwise it will be shown.
hideRelatedCaseInfoFromHistory: If true, case history does not display the related case information in the history table.
- hideStatisticWidget: Set to true to hide Statistic widget from homepage and application menu.
hideSystemNotesFromHistory: If true, case/task note does not display any system notes for non-administrator users.
hideSystemNotesFromHistoryAdministrator: If true, case/task note does not display any system notes for administrator.
hideSystemTasksFromHistory: If true, case note does not display any system tasks for non-administrator users.
@@ -227,7 +226,6 @@ ch.ivy.addon.portalkit.ui.jsf:
showProcessInformation: Set to false to disable link to Show Information of process on Processes page (grid mode) and Case Details.
showQuickGlobalSearch: For switch on/off the display of the quick global search.
showTaskDurationTime: For switch on/off the display of the duration time in task details page.
- statisticChartScalingInterval: Interval in seconds to do periodic statistic chart scaling requests. If the interval value is less than 10, periodic statistic chart scaling is disabled.
uploadDocumentWhiteListExtensionNote: 'Leave value empty if you allow all extensions. If just allow some extensions, list out extensions here, separated by comma. Example: pdf, txt, doc, docx.'
key: Key
link: Link
@@ -378,6 +376,7 @@ ch.ivy.addon.portalkit.ui.jsf:
backgroundColor: Background color
cancel: Cancel
case: Case
+ caseCategory: Case category
caseInformation: Case Information
caseName: Case name
categories: Categories
@@ -590,10 +589,6 @@ ch.ivy.addon.portalkit.ui.jsf:
waitingMessage: 'Data is collecting ... '
processChain:
currentStepIsNotDefined: Current step ({0}) of process chain is not defined
- statisticWidget:
- chartDeletionConfirmation: Are you sure you want to delete this statistic chart?
- contextMenuDrilldown: Drilldown
- contextMenuToTaskList: Go to task list
taskStart:
cannotDelegateTaskMessage: This task cannot be delegated to any other user or group.
cannotStartMessages:
@@ -645,14 +640,7 @@ ch.ivy.addon.portalkit.ui.jsf:
SavedFilterHeader: Saved filters
SearchForFilter: Search for filter
StatisticWidget:
- AvailableCharts: Available statistics charts
- Charts: 'Chart(s): {0}'
- ConfigurationDescription: You can configure your widget in this configuration area. Please define the chart which will be shown on your dashboard.
EmptyChartDataMessage: We do not have enough data to create a nice chart!
- FilterChartText: Filter a chart by name
- PlaceholderChartOption: Select a chart
- PleaseSelectChart: Please select a chart
- PreviewText: Please select a chart to see the canvas data
WidgetFilterName: Widget filter name
WidgetFilters: Widget filters
actionSelection: Action selection
@@ -756,7 +744,6 @@ ch.ivy.addon.portalkit.ui.jsf:
yourCustomWidget: Your Custom Widget
yourProcessViewer: Your Process Viewer
yourProcesses: Your Processes
- yourStatistics: Your Statistics
yourTasks: Your Tasks
documentFiles:
deleteDocumentNote: '{0} has deleted {1}'
@@ -913,147 +900,6 @@ ch.ivy.addon.portalkit.ui.jsf:
searchResultsFor: '{0} search results for "{1}"'
sidestep:
addAdhocTask: Add Ad-hoc Task
- statistic:
- chart:
- ExpandOrCollapseColumn: Expand/Collapse Columns
- addChart: Add new chart
- addChartDialogHeader: Add statistic chart to dashboard
- backToDashboard: Back to dashboard
- barchart:
- Percentage: Percentage
- daysOfWeek:
- friday: Friday
- monday: Monday
- saturday: Saturday
- sunday: Sunday
- thursday: Thursday
- tuesday: Tuesday
- wednesday: Wednesday
- expired: Expired
- in2Days: In 2 days
- in3Days: In 3 days
- monthsOfYear:
- April: April
- August: August
- December: December
- February: February
- January: January
- July: July
- June: June
- March: March
- May: May
- November: November
- October: October
- September: September
- today: Today
- tomorrow: Tomorrow
- weeksOfMonth:
- fifthWeek: Fifth week
- firstWeek: First week
- fourthWeek: Fourth week
- secondWeek: Second week
- sixthWeek: Sixth week
- thirdWeek: Third week
- caseCategory: Case category
- chartCreationSuccessDetailMsg: Chart with name {0} was created successfully
- chartCreationSuccessTitle: Chart was created successfully
- elapsedTime: Elapsed Time
- elapsedTimeChart:
- compareButton: Compare
- compareRole: 'Compare Role:'
- elapsedTimeInHours: Elapsed time in hours
- noEntriesFound: No entries found with given criteria
- taskCategory: Task category
- withRole: 'With Role:'
- emptystate:
- defaultEmptyMessages: No statistic chart to display.
- expiryPeriod: Expiry period
- loadingCharts: Please wait, charts are loading...
- notAllowedToCreateChart: You are not allowed to create a chart before clicking Apply Filters button
- other: Others
- restoreDefaultChart: If you proceed, you will loose all charts created by yourself. The standard settings will be applied.
- second: sec
- showAllCharts: Show all charts
- statisticCarousel: Statistics Carousel
- statistics: Statistics
- taskByExpiry:
- hour: (Hour)
- thisMonth: This Month
- thisWeek: This Week
- thisYear: This Year
- taskByPriority:
- addToDashboardLink: Add to dashboard
- exception: Exception
- high: High
- low: Low
- normal: Normal
- taskExpiry: Task expiry
- chartInfo:
- chartDetailsHeader: Chart Details
- chartName: Chart Name
- chartType: Chart Type
- chartType:
- caseByFinishedTask: Processed cases in time period
- caseByFinishedTaskDescription: Cases where a task was finished in the selected time period
- caseByFinishedTime: Done cases in time period
- caseByFinishedTimeDescription: Cases which are done in the selected time period
- caseByState: Case by state
- elapsedTimeByCaseCategory: Elapsed time of done cases
- elapsedTimeByCaseCategoryDescription: Elapsed time of finished cases by category
- taskByExpiry: Task by expiry
- taskByPriority: Task by priority
- defaultChart:
- newChart: New chart
- tasksByPriority: Tasks by Priority
- filter:
- affectedCharts: Affected charts
- allSelected: All
- caseCategoriesLabel: Case Categories
- caseCategoryFilterDescription: You can find all available case categories here. Only selected Case Categories are considered in the affected charts.
- caseStateFilterDescription: Only selected States are considered in the affected charts.
- filter: Filters
- noRoles: There are no roles
- noSelectionCustomVarChar: No selection.
- noneSelected: None
- roleFilterDescription: You can find all available process roles here. Only selected roles are considered in the affected charts
- rolesLabel: Roles
- selectAll: Select All
- taskPrioritiesLabel: Task Priorities
- taskPriorityFilterDescription: Tasks can be selected depending on their priority.
- timePeriod: Time period
- timePeriodFilterDescription: Restricts the time period for cases and tasks.
- workflowStatesLabel: Workflow States
- taskAnalysis:
- applyFilter: Apply filters
- caseCategory: Case category
- caseCreator: Case creator
- caseDescription: Case description
- caseFilter: Case filters
- caseID: Case ID
- caseName: Case name
- caseOwner: Case owner
- caseState: Case state
- downloadZipFileExplanation: The number of tasks to export exceeds the limit of Excel rows. Therefore, data will be split to multiple Excel files, then compressed in a Zip file to download.
- taskAnalysis: Task Analysis
- taskCategory: Task category
- taskCreationTime: Task created
- taskDescription: Task description
- taskExpiryTime: Task expiry
- taskFilter: Task filters
- taskFinishedTime: Task completed on
- taskID: Task ID
- taskPriority: Task priority
- taskResponsible: Task responsible
- taskState: Task state
- taskWorker: Task editor
- waitingDownloadMessage: We are creating the Export, this can take a few minutes
- timePeriod:
- custom: Custom
- last6Month: Last 6 month
- lastMonth: Last month
- lastWeek: Last week
- validationErrors:
- nameIsExisted: A chart with this name already exists
taskActivator:
assign: Assign
cannotAssignTask: This task cannot be assigned to any other user or group.
diff --git a/AxonIvyPortal/portal/cms/cms_de.yaml b/AxonIvyPortal/portal/cms/cms_de.yaml
index 1a3d9030a8a..bbb5cc393cc 100644
--- a/AxonIvyPortal/portal/cms/cms_de.yaml
+++ b/AxonIvyPortal/portal/cms/cms_de.yaml
@@ -260,7 +260,6 @@ ch.ivy.addon.portalkit.ui.jsf:
hideChangePasswordButtonNote: Setzen Sie diese Variable auf true, um die Option "Passwort ändern" im oberen Menü und die Option "Passwort vergessen" auf der Anmeldeseite auszublenden. Wenn sie auf false gesetzt ist, werden diese Optionen angezeigt.
hideLogoutButtonNote: 'Auf "true" setzen, um die Logout Funktion im Top Menu zu deaktivieren. '
hideRelatedCaseInfoFromHistory: Wenn diese Option auf "true" gesetzt ist, werden die zugehörigen Fallinformationen nicht in der Tabelle "Historie" angezeigt.
- hideStatisticWidget: Setzen Sie den Wert auf "true", um das Statistik-Widget auf der Startseite und im Anwendungsmenü auszublenden.
hideSystemNotesFromHistory: Wenn diese Option aktiviert ist, werden in den Vorgangs-/Aufgabennotizen keine Systemnotizen für Benutzer ohne Administratorrechte angezeigt.
hideSystemNotesFromHistoryAdministrator: Wenn diese Option aktiviert ist, werden in den Vorgangs-/Aufgabennotizen keine Systemnotizen für Administratoren angezeigt.
hideSystemTasksFromHistory: Wenn diese Option aktiviert ist, zeigt die Vorgangs- / Aufgabennotiz keine technischen Verlaufseinträge für Benutzer ohne Administratorrechte an.
@@ -279,7 +278,6 @@ ch.ivy.addon.portalkit.ui.jsf:
showProcessInformation: Auf "false" setzen, um die Verknüpfung zu Informationen des Prozesses auf der Seite Prozesse (Gittermodus) und Falldetails anzeigen zu deaktivieren.
showQuickGlobalSearch: Zum Ein-/Ausschalten der Anzeige der globalen Schnellsuche.
showTaskDurationTime: Zum Ein-/Ausschalten der Anzeige der Bearbeitungszeit auf der Aufgabendetailseite.
- statisticChartScalingInterval: Intervall in Sekunden, in dem die Skalierung des statistischen Diagramms regelmäßig angefordert wird. Ist der Intervallwert kleiner als 10, wird die periodische Skalierung des statistischen Diagramms deaktiviert.
uploadDocumentWhiteListExtensionNote: 'Leer lassen, falls Sie alle Formate erlauben. Falls Sie nur eine geringe Anzahl an Formate erlauben möchten (White list), können Sie diese hier, mit Komma getrennt, aufführen. Z.B.: pdf, txt, doc, docx.'
key: Schlüssel
link: Link
@@ -441,6 +439,7 @@ ch.ivy.addon.portalkit.ui.jsf:
backgroundColor: Hintergrundfarbe
cancel: Abbrechen
case: Vorgang
+ caseCategory: Vorgangskategorie
caseInformation: Vorgangsinformationen
caseName: Vorgangsname
categories: Kategorien
@@ -703,11 +702,6 @@ ch.ivy.addon.portalkit.ui.jsf:
titlePage: Passwort-Überprüfung
processChain:
currentStepIsNotDefined: Aktueller Schritt ({0}) der Prozesskette ist nicht definiert
- statisticWidget:
- chartDeletionConfirmation: Wollen Sie dieses Diagramm wirklich löschen?
- contextMenuDrilldown: Drilldown
- contextMenuToCaseList: Zur Fallliste gehen
- contextMenuToTaskList: Zur Aufgabenliste
taskStart:
cannotDelegateTaskMessage: Diese Aufgabe kann an keinen anderen Benutzer oder keine andere Gruppe delegiert werden.
cannotStartMessages:
@@ -780,14 +774,7 @@ ch.ivy.addon.portalkit.ui.jsf:
ShareThisDashboard: Teilen Sie dieses Dashboard
StandardWidgets: Standard-Widgets
StatisticWidget:
- AvailableCharts: Verfügbare Statistikdiagramme
- Charts: 'Diagramm(e): {0}'
- ConfigurationDescription: Sie können Ihr Widget in diesem Konfigurationsbereich konfigurieren. Bitte definieren Sie die Grafik, die auf Ihrem Dashboard angezeigt werden soll.
EmptyChartDataMessage: Wir haben nicht genug Daten, um ein schönes Diagramm zu erstellen!
- FilterChartText: Filtern eines Diagramms nach Name
- PlaceholderChartOption: Wählen Sie ein Diagramm
- PleaseSelectChart: Bitte wählen Sie ein Diagramm aus
- PreviewText: Bitte wählen Sie ein Diagramm aus, um die Canvas-Daten zu sehen
WelcomeWidgetIntroduction: Dieses Widget zeigt einen Willkommenstext und ein Bild auf dem Dashboard an.
WelcomeWidgetNotFoundMessage: Wir können das Bild des Widgets nicht finden, bitte konfigurieren Sie Ihr Bild neu!
WidgetFilterName: Name des Widget-Filters
@@ -931,7 +918,6 @@ ch.ivy.addon.portalkit.ui.jsf:
yourNotifications: Ihre Benachrichtigungen
yourProcessViewer: Ihr Prozessbetrachter
yourProcesses: Ihre Prozesse
- yourStatistics: Ihre Statistiken
yourTasks: Ihre Aufgaben
documentFiles:
deleteDocumentNote: '{0} hat folgendes gelöscht: {1}'
@@ -1133,154 +1119,6 @@ ch.ivy.addon.portalkit.ui.jsf:
searchResultsFor: '{0} Suchresultate für "{1}"'
sidestep:
addAdhocTask: Ad-hoc Aufgabe hinzufügen
- statistic:
- chart:
- ExpandOrCollapseColumn: Spalten auf-/zuklappen
- addChart: Neues Diagramm hinzufügen
- addChartDialogHeader: Diagramm zum Dashboard hinzufügen
- backToDashboard: Zurück zum Dashboard
- barchart:
- Percentage: Prozent
- daysOfWeek:
- friday: Freitag
- monday: Montag
- saturday: Samstag
- sunday: Sonntag
- thursday: Donnerstag
- tuesday: Dienstag
- wednesday: Mittwoch
- expired: Abgelaufen
- in2Days: In 2 Tagen
- in3Days: In 3 Tagen
- monthsOfYear:
- April: April
- August: August
- December: Dezember
- February: Februar
- January: Januar
- July: Juli
- June: Juni
- March: März
- May: Mai
- November: November
- October: Oktober
- September: September
- today: Heute
- tomorrow: Morgen
- weeksOfMonth:
- fifthWeek: Fünfte Woche
- firstWeek: Erste Woche
- fourthWeek: Vierte Woche
- secondWeek: Zweite Woche
- sixthWeek: Sechste Woche
- thirdWeek: Dritte Woche
- caseCategory: Vorgangskategorie
- chartCreationSuccessDetailMsg: Diagramm mit Name {0} wurde erfolgreich erstellt
- chartCreationSuccessTitle: Diagramm wurde erfolgreich erstellt
- elapsedTime: Verstrichene Zeit
- elapsedTimeChart:
- compareButton: Vergleichen
- compareRole: Rollen vergleichen
- elapsedTimeInHours: Laufzeit in Std.
- noEntriesFound: Keine übereinstimmende Kriterien gefunden
- taskCategory: Aufgabenkategorie
- withRole: 'Mit Rolle:'
- emptystate:
- defaultEmptyMessages: Es sind keine Auswertungen vorhanden.
- exception:
- idNotFound: 'Diagramm-ID mit der ID: {0} nicht gefunden'
- noPermission: Sie haben keine Berechtigung, diese Anfrage zu senden!
- expiryPeriod: Fristende
- loadingCharts: Bitte warten während die Diagramme geladen werden…
- moveLeft: Nach links bewegen
- moveRight: Nach rechts bewegen
- notAllowedToCreateChart: Sie haben die Filtereinstellungen geändert. Bitte aktualisieren Sie gesetzten Filter mit "Filter anwenden", um das Diagramm anschließend erstellen zu können
- other: Andere
- restoreDefaultChart: Wenn Sie fortfahren, werden alle selbsterstellten Diagramme gelöscht. Die Standardeinstellung wird angewendet.
- second: sek
- showAllCharts: Alle Diagramme anzeigen
- statisticCarousel: Statistik-Karussell
- statistics: Statistiken
- taskByExpiry:
- hour: (Stunde)
- thisMonth: Diesen Monat
- thisWeek: Diese Woche
- thisYear: Dieses Jahr
- taskByPriority:
- addToDashboardLink: Zum Dashboard hinzufügen
- exception: Ausnahme
- high: Hoch
- low: Niedrig
- normal: Normal
- taskExpiry: Aufgabenfristen
- chartInfo:
- chartDetailsHeader: Diagrammdetails
- chartName: Diagrammname
- chartType: Diagrammtyp
- name: Diagramm-Informationen
- chartType:
- caseByFinishedTask: Bearbeitete Vorgänge im Zeitraum
- caseByFinishedTaskDescription: Vorgänge, in denen eine Aufgabe in der ausgewählten Zeitspanne abgeschlossen wurde
- caseByFinishedTime: Abgeschlossene Vorgänge im Zeitraum
- caseByFinishedTimeDescription: Vorgänge die in der ausgewählten Zeitspanne abgeschlossen wurden
- caseByState: Vorgänge nach Status
- casesByCategory: Vorgänge nach Kategorie
- elapsedTimeByCaseCategory: Durchlaufzeit abgeschlossener Vorgänge
- elapsedTimeByCaseCategoryDescription: Durchlaufszeit (Start bis Ende des Vorgangs) abgeschlossener Vorgänge nach Kategorie
- taskByExpiry: Aufgaben nach Ablaufdatum
- taskByPriority: Aufgaben nach Priorität
- defaultChart:
- newChart: Neues Diagramm
- tasksByPriority: Aufgaben nach Priorität
- filter:
- affectedCharts: Betroffene Diagramme
- allSelected: Alle
- caseCategoriesLabel: Vorgangskategorien
- caseCategoryFilterDescription: Hier sehen Sie alle verfügbaren Vorgangskategorien. Nur ausgewählte Vorgangskategorien werden in den betroffenen Diagrammen berücksichtigt.
- caseStateFilterDescription: Nur ausgewählte Status werden in den betroffenen Diagrammen berücksichtigt.
- filter: Filter
- noRoles: Keine Rollen vorhanden
- noSelectionCustomVarChar: Keine Auswahl
- noneSelected: Keine
- roleFilterDescription: Hier sehen Sie alle verfügbaren Prozessrollen. Nur ausgewählte Rollen werden in den betroffenen Diagrammen berücksichtigt.
- rolesLabel: Rollen
- selectAll: Alle selektieren
- taskPrioritiesLabel: Aufgabenprioritäten
- taskPriorityFilterDescription: Aufgaben können nach Ihrer Priorität gefiltert werden.
- timePeriod: Zeitspanne
- timePeriodFilterDescription: 'Schränkt den Zeitraum der Vorgänge und Aufgaben ein. '
- workflowStatesLabel: Workflowstatus
- taskAnalysis:
- applyFilter: Filter anwenden
- caseCategory: Vorgangskategorie
- caseCreator: Ersteller
- caseDescription: Vorgangsbeschreibung
- caseFilter: Vorgangsfilter
- caseID: Vorgangs Id
- caseName: Vorgangsname
- caseOwner: Vorgangs Owner
- caseState: Vorgangsstatus
- downloadZipFileExplanation: Die Anzahl der zu exportierenden Aufgaben überschreitet die Grenze der Excel-Zeilen. Daher werden die Daten in mehrere Excel-Dateien aufgeteilt und dann in einer ZIP-Datei zum Herunterladen komprimiert.
- taskAnalysis: Aufgabenanalyse
- taskCategory: Aufgabenkategorie
- taskCreationTime: Aufgabe erstellt
- taskDescription: Aufgabenbeschreibung
- taskExpiryTime: Aufgabenfälligkeit
- taskFilter: Aufgabenfilter
- taskFinishedTime: Aufgabe abgeschlossen am
- taskID: Aufgabe Id
- taskPriority: Aufgabenpriorität
- taskResponsible: Aufgabenverantwortlicher
- taskState: Aufgabenstatus
- taskWorker: Aufgabenbearbeiter
- waitingDownloadMessage: Bitte um Geduld. Wir erstellen gerade den Export. Das kann einige Minuten dauern.
- timePeriod:
- custom: Benutzerdefiniert
- last6Month: Letzte 6 Monate
- lastMonth: Letzter Monat
- lastWeek: Letzte Woche
- validationErrors:
- nameIsExisted: Ein Diagramm mit dem selben Namen existiert bereits
taskActivator:
assign: Zuweisen
cannotAssignTask: Diese Aufgabe kann keinem anderen Benutzer oder keiner anderen Gruppe zugewiesen werden.
@@ -1612,6 +1450,7 @@ Dialogs:
CaseWidgetConfiguration:
AddFilter: Filter hinzufügen
ClientStatisticWidget:
+ IdNotFound: 'Chart Id not found with id: {0}'
NoPermissionChartMessage: Sie haben nicht die erforderliche Berechtigung, um diese Karte zu sehen.
DashboardImportDetails:
FileInfomation: Dateiinformationen
diff --git a/AxonIvyPortal/portal/cms/cms_en.yaml b/AxonIvyPortal/portal/cms/cms_en.yaml
index d793c1f43b1..50b16a225cf 100644
--- a/AxonIvyPortal/portal/cms/cms_en.yaml
+++ b/AxonIvyPortal/portal/cms/cms_en.yaml
@@ -259,7 +259,6 @@ ch.ivy.addon.portalkit.ui.jsf:
hideChangePasswordButtonNote: Set this variable to true to hide the "Change Password" option in the top menu and the "Forgotten Password" option on the login page. If set to false, these options will be shown.
hideLogoutButtonNote: If true, the logout button on top menu will be hidden, otherwise it will be shown.
hideRelatedCaseInfoFromHistory: If true, case history does not display the related case information in the history table.
- hideStatisticWidget: Set to true to hide Statistic widget from homepage and application menu.
hideSystemNotesFromHistory: If true, case/task note does not display any system notes for non-administrator users.
hideSystemNotesFromHistoryAdministrator: If true, case/task note does not display any system notes for administrator.
hideSystemTasksFromHistory: If true, case note does not display any system tasks for non-administrator users.
@@ -278,7 +277,6 @@ ch.ivy.addon.portalkit.ui.jsf:
showProcessInformation: Set to false to disable link to Show Information of process on Processes page (grid mode) and Case Details.
showQuickGlobalSearch: For switch on/off the display of the quick global search.
showTaskDurationTime: For switch on/off the display of the duration time in task details page.
- statisticChartScalingInterval: Interval in seconds to do periodic statistic chart scaling requests. If the interval value is less than 10, periodic statistic chart scaling is disabled.
uploadDocumentWhiteListExtensionNote: 'Leave value empty if you allow all extensions. If just allow some extensions, list out extensions here, separated by comma. Example: pdf, txt, doc, docx.'
key: Key
link: Link
@@ -440,6 +438,7 @@ ch.ivy.addon.portalkit.ui.jsf:
backgroundColor: Background color
cancel: Cancel
case: Case
+ caseCategory: Case category
caseInformation: Case Information
caseName: Case name
categories: Categories
@@ -707,11 +706,6 @@ ch.ivy.addon.portalkit.ui.jsf:
titlePage: Password Validation
processChain:
currentStepIsNotDefined: Current step ({0}) of process chain is not defined
- statisticWidget:
- chartDeletionConfirmation: Are you sure you want to delete this statistic chart?
- contextMenuDrilldown: Drilldown
- contextMenuToCaseList: Go to case list
- contextMenuToTaskList: Go to task list
taskStart:
cannotDelegateTaskMessage: This task cannot be delegated to any other user or group.
cannotStartMessages:
@@ -782,14 +776,7 @@ ch.ivy.addon.portalkit.ui.jsf:
ShareThisDashboard: Share this dashboard
StandardWidgets: Standard Widgets
StatisticWidget:
- AvailableCharts: Available statistics charts
- Charts: 'Chart(s): {0}'
- ConfigurationDescription: You can configure your widget in this configuration area. Please define the chart which will be shown on your dashboard.
EmptyChartDataMessage: We do not have enough data to create a nice chart!
- FilterChartText: Filter a chart by name
- PlaceholderChartOption: Select a chart
- PleaseSelectChart: Please select a chart
- PreviewText: Please select a chart to see the canvas data
WelcomeWidgetIntroduction: This widget displays a welcome text and image on dashboard.
WelcomeWidgetNotFoundMessage: We cannot find the image of widget, please reconfigure your image!
WidgetFilterName: Widget filter name
@@ -933,7 +920,6 @@ ch.ivy.addon.portalkit.ui.jsf:
yourNotifications: Your Notifications
yourProcessViewer: Your Process Viewer
yourProcesses: Your Processes
- yourStatistics: Your Statistics
yourTasks: Your Tasks
documentFiles:
deleteDocumentNote: '{0} has deleted {1}'
@@ -1135,154 +1121,6 @@ ch.ivy.addon.portalkit.ui.jsf:
searchResultsFor: '{0} search results for "{1}"'
sidestep:
addAdhocTask: Add Ad-hoc Task
- statistic:
- chart:
- ExpandOrCollapseColumn: Expand/Collapse Columns
- addChart: Add new chart
- addChartDialogHeader: Add statistic chart to dashboard
- backToDashboard: Back to dashboard
- barchart:
- Percentage: Percentage
- daysOfWeek:
- friday: Friday
- monday: Monday
- saturday: Saturday
- sunday: Sunday
- thursday: Thursday
- tuesday: Tuesday
- wednesday: Wednesday
- expired: Expired
- in2Days: In 2 days
- in3Days: In 3 days
- monthsOfYear:
- April: April
- August: August
- December: December
- February: February
- January: January
- July: July
- June: June
- March: March
- May: May
- November: November
- October: October
- September: September
- today: Today
- tomorrow: Tomorrow
- weeksOfMonth:
- fifthWeek: Fifth week
- firstWeek: First week
- fourthWeek: Fourth week
- secondWeek: Second week
- sixthWeek: Sixth week
- thirdWeek: Third week
- caseCategory: Case category
- chartCreationSuccessDetailMsg: Chart with name {0} was created successfully
- chartCreationSuccessTitle: Chart was created successfully
- elapsedTime: Elapsed Time
- elapsedTimeChart:
- compareButton: Compare
- compareRole: 'Compare Role:'
- elapsedTimeInHours: Elapsed time in hours
- noEntriesFound: No entries found with given criteria
- taskCategory: Task category
- withRole: 'With Role:'
- emptystate:
- defaultEmptyMessages: No statistic chart to display.
- exception:
- idNotFound: 'Chart Id not found with id: {0}'
- noPermission: You do not have the permission to send this request!
- expiryPeriod: Expiry period
- loadingCharts: Please wait, charts are loading...
- moveLeft: Move left
- moveRight: Move right
- notAllowedToCreateChart: You are not allowed to create a chart before clicking Apply Filters button
- other: Others
- restoreDefaultChart: If you proceed, you will loose all charts created by yourself. The standard settings will be applied.
- second: sec
- showAllCharts: Show all charts
- statisticCarousel: Statistics Carousel
- statistics: Statistics
- taskByExpiry:
- hour: (Hour)
- thisMonth: This Month
- thisWeek: This Week
- thisYear: This Year
- taskByPriority:
- addToDashboardLink: Add to dashboard
- exception: Exception
- high: High
- low: Low
- normal: Normal
- taskExpiry: Task expiry
- chartInfo:
- chartDetailsHeader: Chart Details
- chartName: Chart Name
- chartType: Chart Type
- name: Chart info
- chartType:
- caseByFinishedTask: Processed cases in time period
- caseByFinishedTaskDescription: Cases where a task was finished in the selected time period
- caseByFinishedTime: Done cases in time period
- caseByFinishedTimeDescription: Cases which are done in the selected time period
- caseByState: Case by state
- casesByCategory: Cases by category
- elapsedTimeByCaseCategory: Elapsed time of done cases
- elapsedTimeByCaseCategoryDescription: Elapsed time of finished cases by category
- taskByExpiry: Task by expiry
- taskByPriority: Task by priority
- defaultChart:
- newChart: New chart
- tasksByPriority: Tasks by Priority
- filter:
- affectedCharts: Affected charts
- allSelected: All
- caseCategoriesLabel: Case Categories
- caseCategoryFilterDescription: You can find all available case categories here. Only selected Case Categories are considered in the affected charts.
- caseStateFilterDescription: Only selected States are considered in the affected charts.
- filter: Filters
- noRoles: There are no roles
- noSelectionCustomVarChar: No selection.
- noneSelected: None
- roleFilterDescription: You can find all available process roles here. Only selected roles are considered in the affected charts
- rolesLabel: Roles
- selectAll: Select All
- taskPrioritiesLabel: Task Priorities
- taskPriorityFilterDescription: Tasks can be selected depending on their priority.
- timePeriod: Time period
- timePeriodFilterDescription: Restricts the time period for cases and tasks.
- workflowStatesLabel: Workflow States
- taskAnalysis:
- applyFilter: Apply filters
- caseCategory: Case category
- caseCreator: Case creator
- caseDescription: Case description
- caseFilter: Case filters
- caseID: Case ID
- caseName: Case name
- caseOwner: Case owner
- caseState: Case state
- downloadZipFileExplanation: The number of tasks to export exceeds the limit of Excel rows. Therefore, data will be split to multiple Excel files, then compressed in a Zip file to download.
- taskAnalysis: Task Analysis
- taskCategory: Task category
- taskCreationTime: Task created
- taskDescription: Task description
- taskExpiryTime: Task expiry
- taskFilter: Task filters
- taskFinishedTime: Task completed on
- taskID: Task ID
- taskPriority: Task priority
- taskResponsible: Task responsible
- taskState: Task state
- taskWorker: Task editor
- waitingDownloadMessage: We are creating the Export, this can take a few minutes
- timePeriod:
- custom: Custom
- last6Month: Last 6 month
- lastMonth: Last month
- lastWeek: Last week
- validationErrors:
- nameIsExisted: A chart with this name already exists
taskActivator:
assign: Assign
cannotAssignTask: This task cannot be assigned to any other user or group.
@@ -1613,6 +1451,7 @@ Dialogs:
CaseWidgetConfiguration:
AddFilter: Add filter
ClientStatisticWidget:
+ IdNotFound: 'Chart Id not found with id: {0}'
NoPermissionChartMessage: You do not have the required permission to see this chart.
DashboardImportDetails:
FileInfomation: File Infomation
diff --git a/AxonIvyPortal/portal/cms/cms_es.yaml b/AxonIvyPortal/portal/cms/cms_es.yaml
index 1e93492e7ba..ff26912e4bf 100644
--- a/AxonIvyPortal/portal/cms/cms_es.yaml
+++ b/AxonIvyPortal/portal/cms/cms_es.yaml
@@ -261,7 +261,6 @@ ch.ivy.addon.portalkit.ui.jsf:
hideChangePasswordButtonNote: Establezca esta variable a true para ocultar la opción "Cambiar contraseña" en el menú superior y la opción "Contraseña olvidada" en la página de inicio de sesión. Si se establece en false, estas opciones se mostrarán.
hideLogoutButtonNote: Cambiar a "true" para ocultar la opción de logout.
hideRelatedCaseInfoFromHistory: Si es verdadero, el historial de casos no muestra la información de los casos relacionados en la tabla de historial.
- hideStatisticWidget: Cambiar a "true" para ocultar la estadÃstica de la página principal y del menu lateral
hideSystemNotesFromHistory: Si esto es cierto, no se muestran notas del sistema para los usuarios en las notas de tarea/tarea.
hideSystemNotesFromHistoryAdministrator: Si esto es cierto, no se muestran notas de sistema para los administradores en las notas de tarea/tarea.
hideSystemTasksFromHistory: Cambiar a "true" para ocultar notas técnicas del historial de tareas del caso para usuarios
@@ -280,7 +279,6 @@ ch.ivy.addon.portalkit.ui.jsf:
showProcessInformation: Cambiar a falso para desactivar el enlace "Más información" en la página de Procesos (modo cuadrÃcula) y Detalles del caso.
showQuickGlobalSearch: Para activar/desactivar la visualización de la búsqueda global rápida.
showTaskDurationTime: Activar o desactivar la visibilidad de la duración de la tarea en detalles de tarea.
- statisticChartScalingInterval: Intervalo en segundos para realizar peticiones periódicas de escalado de gráficos estadÃsticos. Si el valor del intervalo es inferior a 10, se desactiva el escalado periódico de gráficos estadÃsticos.
uploadDocumentWhiteListExtensionNote: 'Dejar libre, sie quiere permitir todos los anexos. Si quiere reducir los formatos permitidos, cree una lista separada por coma. Por ejemplo: pdf, txt, doc, docx.'
key: Llave
link: Enlazar
@@ -442,6 +440,7 @@ ch.ivy.addon.portalkit.ui.jsf:
backgroundColor: Color de fondo
cancel: Cancelar
case: Caso
+ caseCategory: CategorÃa de caso
caseInformation: Informaciones del caso
caseName: Nombre del caso
categories: Categorias
@@ -704,11 +703,6 @@ ch.ivy.addon.portalkit.ui.jsf:
titlePage: Validación de contraseñas
processChain:
currentStepIsNotDefined: El paso ({0}) de la cadena de proceso no está definido
- statisticWidget:
- chartDeletionConfirmation: ¿Seguro que quiere eliminar esta tabla de estadÃsticas?
- contextMenuDrilldown: Drilldown
- contextMenuToCaseList: Ir a la lista de casos
- contextMenuToTaskList: Ir a la lista de tareas
taskStart:
cannotDelegateTaskMessage: Esta tarea no se puede delegar a ningún otro usuario o grupo.
cannotStartMessages:
@@ -779,14 +773,7 @@ ch.ivy.addon.portalkit.ui.jsf:
ShareThisDashboard: Comparte este panel
StandardWidgets: Widgets estándar
StatisticWidget:
- AvailableCharts: Gráficos estadÃsticos disponibles
- Charts: 'Gráfico(s): {0}'
- ConfigurationDescription: Puede configurar su widget en esta área de configuración. Por favor, defina el gráfico que se mostrará en su panel de control.
EmptyChartDataMessage: No tenemos suficientes datos para crear un buen gráfico.
- FilterChartText: Filtrar un gráfico por nombre
- PlaceholderChartOption: Seleccione un gráfico
- PleaseSelectChart: Seleccione un gráfico
- PreviewText: Seleccione un gráfico para ver los datos del lienzo
WelcomeWidgetIntroduction: Este widget muestra un texto y una imagen de bienvenida en el panel de control.
WelcomeWidgetNotFoundMessage: No podemos encontrar la imagen del widget, por favor reconfigure su imagen.
WidgetFilterName: Nombre del filtro del widget
@@ -930,7 +917,6 @@ ch.ivy.addon.portalkit.ui.jsf:
yourNotifications: Sus notificaciones
yourProcessViewer: Su visor de procesos
yourProcesses: Sus procesos
- yourStatistics: Sus estadÃsticas
yourTasks: Sus tareas
documentFiles:
deleteDocumentNote: '{0} ha eliminado {1}'
@@ -1132,157 +1118,6 @@ ch.ivy.addon.portalkit.ui.jsf:
searchResultsFor: '{0} resultados de búsqueda para "{1}"'
sidestep:
addAdhocTask: Añadir tarea Ad-hoc
- statistic:
- chart:
- ExpandOrCollapseColumn: Abrir/Cerrar columnas
- addChart: Agregar nueva grafica
- addChartDialogHeader: Agregar grafica estadÃstica al tablero
- backToDashboard: Regresar al tablero
- barchart:
- Percentage: Porcentaje
- daysOfWeek:
- friday: Viernes
- monday: Lunes
- saturday: Sábado
- sunday: Domingo
- thursday: Jueves
- tuesday: Martes
- wednesday: Miércoles
- expired: Vencido
- in2Days: En 2 dÃas
- in3Days: En 3 dÃas
- monthsOfYear:
- April: Abril
- August: Agosto
- December: Diciembre
- February: Febrero
- January: Enero
- July: Julio
- June: Junio
- March: Marzo
- May: Mayo
- November: Noviembre
- October: Octubre
- September: Septiembre
- today: Hoy
- tomorrow: Mañana
- weeksOfMonth:
- fifthWeek: Quinta semana
- firstWeek: Primera semana
- fourthWeek: Cuarta semana
- secondWeek: Segunda semana
- sixthWeek: Sexta semana
- thirdWeek: Tercera semana
- caseCategory: CategorÃa de caso
- chartCreationSuccessDetailMsg: El gráfico con el nombre {0} se creó con éxito
- chartCreationSuccessTitle: El gráfico fue creado con éxito
- elapsedTime: Tiempo transcurrido
- elapsedTimeChart:
- compareButton: Comparar
- compareRole: 'Comparar el rol:'
- elapsedTimeInHours: Tiempo transcurrido en horas
- noEntriesFound: No se encontraron entradas con los criterios dados
- taskCategory: CategorÃa de tarea
- withRole: 'Con Rol:'
- emptystate:
- defaultEmptyMessages: No hay tabla de estadÃsticas para mostrar.
- exception:
- idNotFound: 'Grafico ID no encontrado con id: {0}'
- noPermission: ¡No tienes permiso para enviar esta solicitud!
- expiryPeriod: PerÃodo de caducidad
- loadingCharts: Por favor espere, los diagramas se están cargando
- moveLeft: Muévete a la izquierda
- moveRight: Muévete a la derecha
- notAllowedToCreateChart: Ha cambiado los filtros aplicados. Por favor aplique los filtros.
- other: Otros
- restoreDefaultChart: Si continúa, todos los diagramas hechos por usted serán borrados. Los valores iniciales serán reestablecidos.
- second: segundo
- showAllCharts: Mostrar todas las estadÃsticas
- statisticCarousel: Tiovivo de estadÃsticas
- statistics: EstadÃsticas
- taskByExpiry:
- hour: (Hora)
- thisMonth: Este mes
- thisWeek: Esta semana
- thisYear: Este año
- taskByPriority:
- addToDashboardLink: Agregar al tablero
- exception: Excepción
- high: Alto
- low: Bajo
- normal: Normal
- taskExpiry: Vencimiento de tareas
- chartInfo:
- chartDetailsHeader: Detalles del gráfico
- chartName: Nombre del gráfico
- chartType: Tipo de gráfico
- name: Información gráfica
- chartType:
- caseByFinishedTask: Caso por Tarea Terminada
- caseByFinishedTaskDescription: Casos en los que al menos una tarea ha sido finalizada en el tiempo seleccionado
- caseByFinishedTime: Caso por tiempo finalizado
- caseByFinishedTimeDescription: Casos terminados en el periodo de tiempo seleccionado
- caseByState: Caso por estado
- casesByCategory: Casos por categorÃa
- elapsedTimeByCaseCategory: Tiempo transcurrido por categorÃa de caso
- elapsedTimeByCaseCategoryDescription: Tiempo de duración para casos terminados por categorÃa
- taskByExpiry: Tarea por vencimiento
- taskByPriority: Tarea por prioridad
- defaultChart:
- newChart: Diagrama nuevo
- tasksByPriority: Tareas por prioridad
- filter:
- affectedCharts: Diagramas afectados
- allSelected: Todos
- caseCategoriesLabel: CategorÃas de casos
- caseCategoryFilterDescription: Puede encontrar todos las categorias disponibles aqui. Solo las categorÃas seleccionadas serán consideradas en los diagramas creados
- caseStateFilterDescription: Solo los estados seleccionados serán considerados en los diagramas
- filter: Filtros
- noRoles: No hay Roles
- noSelectionCustomVarChar: Sin selección
- noneSelected: Ninguno
- roleFilterDescription: Puede encontra todos los roles disponibles aquÃ. Solo los roles seleccionados serán considerados en los diagramas
- rolesLabel: Roles
- selectAll: Seleccionar todo
- taskPrioritiesLabel: Prioridades de tareas
- taskPriorityFilterDescription: Puede filtrar tareas por prioridad.
- timePeriod: Periodo de tiempo
- timePeriodFilterDescription: Restringir el periodo de tiempo para casos y tareas
- workflowStatesLabel: Estados de flujo de trabajo
- taskAnalysis:
- applyFilter: Aplicar filtros
- caseCategory: CategorÃa de caso
- caseCreator: Creador del caso
- caseDescription: Descripción del caso
- caseFilter: Filtros del caso
- caseID: ID del caso
- caseName: Nombre del caso
- caseOwner: Propietario del caso
- caseState: Estado del caso
- downloadZipFileExplanation: |-
- El número de tareas excede el LÃmite de Excel. Por ello se crearán varios archivos y se comprimirán en un archivo Zip.
-
- El número de tareas excede el LÃmite de Excel. Por ello se crearán varios archivos y se comprimirán en un archivo Zip.
- taskAnalysis: Análisis de tareas
- taskCategory: CategorÃa de la tarea
- taskCreationTime: Tarea creada
- taskDescription: Descripción de la tarea
- taskExpiryTime: Fecha de expiración de la tarea
- taskFilter: Filtros de tareas
- taskFinishedTime: Tarea completada
- taskID: ID de la tarea
- taskPriority: Prioridad de tarea
- taskResponsible: Resonsable de tarea
- taskState: Estado de tarea
- taskWorker: Editor de tareas
- waitingDownloadMessage: 'Estamos creando su exporte, esto puede tardar unos minutos. '
- timePeriod:
- custom: Personalizado
- last6Month: Último 6 meses
- lastMonth: El mes pasado
- lastWeek: La semana pasada
- validationErrors:
- nameIsExisted: Ya existe una tabla con este nombre
taskActivator:
assign: Asignar
cannotAssignTask: Esta tarea no puede ser asignada a otro usuario o grupo.
@@ -1614,6 +1449,7 @@ Dialogs:
CaseWidgetConfiguration:
AddFilter: Añadir filtro
ClientStatisticWidget:
+ IdNotFound: 'Chart Id not found with id: {0}'
NoPermissionChartMessage: No tiene permiso para ver este gráfico.
DashboardImportDetails:
FileInfomation: Informacion del archivo
diff --git a/AxonIvyPortal/portal/cms/cms_fr.yaml b/AxonIvyPortal/portal/cms/cms_fr.yaml
index 9c4fd15c57c..4fe4a3ffa1b 100644
--- a/AxonIvyPortal/portal/cms/cms_fr.yaml
+++ b/AxonIvyPortal/portal/cms/cms_fr.yaml
@@ -258,7 +258,6 @@ ch.ivy.addon.portalkit.ui.jsf:
hideChangePasswordButtonNote: Attribuez la valeur true à cette variable pour masquer l'option "Changer de mot de passe" dans le menu supérieur et l'option "Mot de passe oublié" sur la page de connexion. Si elle vaut false, ces options seront affichées.
hideLogoutButtonNote: Si true, le bouton de déconnexion du menu supérieur sera masqué, sinon il sera affiché.
hideRelatedCaseInfoFromHistory: Si la valeur est vraie, l'historique des cas n'affiche pas les informations relatives aux cas dans le tableau de l'historique.
- hideStatisticWidget: Définissez la valeur sur "true" pour masquer le widget de statistiques de la page d'accueil et du menu de l'application.
hideSystemNotesFromHistory: Si vrai, la remarque sur le cas/la tâche n'affiche aucune note de système pour les utilisateurs non administrateurs.
hideSystemNotesFromHistoryAdministrator: Si vrai, la remarque sur le cas/la tâche n'affiche aucune note de système pour l'administrateur.
hideSystemTasksFromHistory: Si vrai, la remarque sure le cas / de la tâche n'affiche aucune tâche du système pour les utilisateurs non administrateurs.
@@ -277,7 +276,6 @@ ch.ivy.addon.portalkit.ui.jsf:
showProcessInformation: Définissez la valeur false pour désactiver le lien vers l'option Afficher les informations du processus sur la page processus (mode grille) et détails du cas.
showQuickGlobalSearch: Pour activer/désactiver l'affichage de la recherche globale rapide.
showTaskDurationTime: Pour activer/désactiver l'affichage de la durée dans la page des détails de la tâche.
- statisticChartScalingInterval: Intervalle en secondes pour effectuer les demandes de mise à l'échelle périodique des graphiques statistiques. Si la valeur de l'intervalle est inférieure à 10, la mise à l'échelle périodique des graphiques statistiques est désactivée.
uploadDocumentWhiteListExtensionNote: 'Laissez la valeur vide si vous autorisez toutes les extensions. Si juste autoriser quelques extensions, listez les extensions ici, séparées par des virgules. Exemple: pdf, txt, doc, docx.'
key: Clé
link: Lien
@@ -439,6 +437,7 @@ ch.ivy.addon.portalkit.ui.jsf:
backgroundColor: Couleur de fond
cancel: Annuler
case: Dossier
+ caseCategory: Catégorie des cas
caseInformation: Information sur le cas
caseName: Nom de cas
categories: Catégories
@@ -701,11 +700,6 @@ ch.ivy.addon.portalkit.ui.jsf:
titlePage: Validation du mot de passe
processChain:
currentStepIsNotDefined: L'étape actuelle ({0}) de la chaîne de processus n'est pas définie
- statisticWidget:
- chartDeletionConfirmation: Êtes-vous sûr de vouloir supprimer cette statistique?
- contextMenuDrilldown: Drilldown
- contextMenuToCaseList: Aller à la liste des affaires
- contextMenuToTaskList: Aller à la liste des tâches
taskStart:
cannotDelegateTaskMessage: Cette tâche ne peut pas être déléguée ä un autre utilisateur ou une autre groupe.
cannotStartMessages:
@@ -776,14 +770,7 @@ ch.ivy.addon.portalkit.ui.jsf:
ShareThisDashboard: Partager ce tableau de bord
StandardWidgets: Widgets standard
StatisticWidget:
- AvailableCharts: Graphiques de statistiques disponibles
- Charts: 'Graphique(s) : {0}'
- ConfigurationDescription: Vous pouvez configurer votre widget dans cette zone de configuration. Veuillez définir le graphique qui sera affiché sur votre tableau de bord.
EmptyChartDataMessage: Nous n'avons pas assez de données pour créer un beau graphique !
- FilterChartText: Filtrer un graphique par nom
- PlaceholderChartOption: Sélectionnez un graphique
- PleaseSelectChart: Veuillez sélectionner un graphique
- PreviewText: Veuillez sélectionner un graphique pour voir les données du canevas
WelcomeWidgetIntroduction: Ce widget affiche un texte et une image de bienvenue sur le tableau de bord.
WelcomeWidgetNotFoundMessage: Nous ne pouvons pas trouver l'image du widget, veuillez reconfigurer votre image !
WidgetFilterName: Nom du filtre du widget
@@ -927,7 +914,6 @@ ch.ivy.addon.portalkit.ui.jsf:
yourNotifications: Vos notifications
yourProcessViewer: Votre visualisateur de processus
yourProcesses: Vos processus
- yourStatistics: Vos statistiques
yourTasks: Vos tâches
documentFiles:
deleteDocumentNote: '{0} a supprimé(e) {1}'
@@ -1129,154 +1115,6 @@ ch.ivy.addon.portalkit.ui.jsf:
searchResultsFor: '{0} résultats pour "{1}"'
sidestep:
addAdhocTask: Ajouter une Ad-hoc tâche
- statistic:
- chart:
- ExpandOrCollapseColumn: Agrandir/réduire les colonnes
- addChart: Ajouter un nouveau diagramme
- addChartDialogHeader: Ajouter un diagramme au tableau de bord
- backToDashboard: Retour au tableau de bord
- barchart:
- Percentage: Pourcentage
- daysOfWeek:
- friday: Vendredi
- monday: Lundi
- saturday: samedi
- sunday: dimanche
- thursday: Jeudi
- tuesday: Mardi
- wednesday: Mercredi
- expired: Expiré
- in2Days: Dans 2 jours
- in3Days: Dans 3 jours
- monthsOfYear:
- April: avril
- August: août
- December: décembre
- February: février
- January: janvier
- July: juillet
- June: juin
- March: Mars
- May: Mai
- November: novembre
- October: octobre
- September: septembre
- today: Aujourd'hui
- tomorrow: Demain
- weeksOfMonth:
- fifthWeek: Cinquième semaine
- firstWeek: Première semaine
- fourthWeek: Quatrième semaine
- secondWeek: Deuxième semaine
- sixthWeek: Sixième semaine
- thirdWeek: Troisième semaine
- caseCategory: Catégorie des cas
- chartCreationSuccessDetailMsg: Diagramme avec le nom {0} a été créé avec succès
- chartCreationSuccessTitle: Diagramme a été créé avec succès
- elapsedTime: Temps écoulé
- elapsedTimeChart:
- compareButton: Comparer
- compareRole: Comparer les rôles
- elapsedTimeInHours: Temps écoulé en heures
- noEntriesFound: Aucun critère correspondant trouvé
- taskCategory: Catégorie de tâche
- withRole: 'Avec rôle:'
- emptystate:
- defaultEmptyMessages: Pas de diagrammes à afficher
- exception:
- idNotFound: "Identifiant du diagramme non trouvé avec l'identifiant : {0}"
- noPermission: Vous n'avez pas la permission d'envoyer cette demande !
- expiryPeriod: Période d'expiration
- loadingCharts: Veuillez patienter, les graphiques sont en cours de chargement …
- moveLeft: Déplacer vers la gauche
- moveRight: Déplacer vers la droite
- notAllowedToCreateChart: Vous n'êtes pas autorisé à créer un diagramme avant de cliquer sur le bouton Appliquer les filtres
- other: Outres
- restoreDefaultChart: Si vous continuez, vous perdrez tous les graphiques créés par vous-même. Les paramètres standard seront appliqués.
- second: sec
- showAllCharts: Voir tous les diagrammes
- statisticCarousel: Carrousel de statistiques
- statistics: Statistiques
- taskByExpiry:
- hour: (Heure)
- thisMonth: Ce mois
- thisWeek: Cette semaine
- thisYear: Cette année
- taskByPriority:
- addToDashboardLink: Ajouter au tableau de bord
- exception: Exception
- high: Haute
- low: Basse
- normal: Normale
- taskExpiry: Expiration de la tâche
- chartInfo:
- chartDetailsHeader: Détails du diagramme
- chartName: Nom du diagramme
- chartType: Type du diagramme
- name: Infos graphiques
- chartType:
- caseByFinishedTask: Cas traités en période de temps
- caseByFinishedTaskDescription: Cas où une tâche s'est terminée dans la période sélectionnée
- caseByFinishedTime: Cas traités dans le temps
- caseByFinishedTimeDescription: Cas qui se font dans la période sélectionnée
- caseByState: Cas par état
- casesByCategory: Affaires par catégorie
- elapsedTimeByCaseCategory: Temps écoulé des cas accomplis
- elapsedTimeByCaseCategoryDescription: Temps écoulé des cas finis par catégorie
- taskByExpiry: Tâche par échéance
- taskByPriority: Tâche par priorité
- defaultChart:
- newChart: Nouveau diagramme
- tasksByPriority: Tãches par priorité
- filter:
- affectedCharts: Diagrammes concernés
- allSelected: Tous
- caseCategoriesLabel: Catégories de cas
- caseCategoryFilterDescription: Vous pouvez trouver toutes les catégories de cas disponibles ici. Seules les catégories de cas sélectionnées sont prises en compte dans les diagrammes concernés.
- caseStateFilterDescription: Seuls les états sélectionnés sont pris en compte dans les diagrammes concernés.
- filter: Filtres
- noRoles: Aucun rôle disponible
- noSelectionCustomVarChar: Pas de choix.
- noneSelected: Aucun
- roleFilterDescription: Vous pouvez trouver tous les rôles de processus disponibles ici. Seuls les rôles sélectionnés sont pris en compte dans le diagramme concerné
- rolesLabel: Rôle
- selectAll: Tout sélectionner
- taskPrioritiesLabel: Priorités de tâches
- taskPriorityFilterDescription: Les tâches peuvent être sélectionnées en fonction de leur priorité.
- timePeriod: Période de temps
- timePeriodFilterDescription: Limite la période de temps pour les cas et les tâches.
- workflowStatesLabel: État de flux de travail
- taskAnalysis:
- applyFilter: Appliquer les filtres
- caseCategory: Catégorie de cas
- caseCreator: Créateur de cas
- caseDescription: Description du cas
- caseFilter: Filtres de cas
- caseID: ID de cas
- caseName: Nom de cas
- caseOwner: Propriétaire du cas
- caseState: État du cas
- downloadZipFileExplanation: Le nombre de tâches à exporter dépasse la limite des lignes Excel. Par conséquent, les données seront divisées en plusieurs fichiers Excel, puis compressées dans un fichier ZIP à télécharger.
- taskAnalysis: Analyse des tâches
- taskCategory: Catégorie de tâche
- taskCreationTime: Tâche créée
- taskDescription: Description de la tâche
- taskExpiryTime: Expiration de la tâche
- taskFilter: Filtres de la tâche
- taskFinishedTime: Tâche terminée le
- taskID: Id de tâche
- taskPriority: Priorité de la tâche
- taskResponsible: Tâche responsable
- taskState: État de la tâche
- taskWorker: Éditeur de tâche
- waitingDownloadMessage: Nous créons l'export, cela peut prendre quelques minutes
- timePeriod:
- custom: Coutume
- last6Month: Six derniers mois
- lastMonth: Dernier Mois
- lastWeek: Dernière semaine
- validationErrors:
- nameIsExisted: Un diagramme avec ce nom existe déjÃ
taskActivator:
assign: Assigner
cannotAssignTask: Cette tâche ne peut être assignée à aucun autre utilisateur ou groupe.
@@ -1608,6 +1446,7 @@ Dialogs:
CaseWidgetConfiguration:
AddFilter: Ajouter un filtre
ClientStatisticWidget:
+ IdNotFound: 'Chart Id not found with id: {0}'
NoPermissionChartMessage: Vous n'avez pas l'autorisation requise pour consulter ce graphique.
DashboardImportDetails:
FileInfomation: Informations sur le fichier
diff --git a/AxonIvyPortal/portal/config/variables.yaml b/AxonIvyPortal/portal/config/variables.yaml
index 2413a3697dd..8a4d45cbd59 100644
--- a/AxonIvyPortal/portal/config/variables.yaml
+++ b/AxonIvyPortal/portal/config/variables.yaml
@@ -41,11 +41,6 @@ Variables:
# If set to true, icon info is shown beside the role name.
DisplayUsersOfRole: false
- # The standard sets of filters that Portal used to define the public filters set in the task analysis page.
- # It will be shown as the public filters in the task analysis page.
- # [file: json]
- TaskAnalysisFilters:
-
# You can define your custom menu item via this JSON file.
# It will be included to the left menu.
# [file: json]
@@ -84,9 +79,6 @@ Variables:
# This setting will be taken over for all other dashboard.
# [file: json]
Dashboard:
- # Set to true to hide Statistic widget from homepage and application menu.
- HideStatisticWidget: false
-
# You can customize the name and icon of the main menu entry for Portal dashboards via this JSON file.
# [file: json]
MainMenuEntry:
@@ -247,10 +239,6 @@ Variables:
# For switch on/off the display of user/role avatars.
ShowAvatar: true
-
- # Interval in seconds to do periodic statistic chart scaling requests.
- # If the interval value is less than 10, periodic statistic chart scaling is disabled.
- StatisticChartScalingInterval: 0
# The set number controls the amount of direct children roles that is shown in Role Management tab.
# [enum: 10, 50, 100]
diff --git a/AxonIvyPortal/portal/config/variables/Portal/StatisticCharts.json b/AxonIvyPortal/portal/config/variables/Portal/StatisticCharts.json
deleted file mode 100644
index cdf9515e0ec..00000000000
--- a/AxonIvyPortal/portal/config/variables/Portal/StatisticCharts.json
+++ /dev/null
@@ -1,25 +0,0 @@
-[
- {
- "id": "0",
- "names": [
- {
- "locale": "de",
- "value": "Aufgaben nach Priorität"
- },
- {
- "locale": "en",
- "value": "Tasks by Priority"
- },
- {
- "locale": "fr",
- "value": "Tãches par priorité"
- },
- {
- "locale": "es",
- "value": "Tareas por prioridad"
- }
- ],
- "type": "TASK_BY_PRIORITY",
- "filter": {}
- }
-]
\ No newline at end of file
diff --git a/AxonIvyPortal/portal/config/variables/Portal/TaskAnalysisFilters.json b/AxonIvyPortal/portal/config/variables/Portal/TaskAnalysisFilters.json
deleted file mode 100644
index 9e26dfeeb6e..00000000000
--- a/AxonIvyPortal/portal/config/variables/Portal/TaskAnalysisFilters.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/AxonIvyPortal/portal/processes/Start Processes/PortalStart.p.json b/AxonIvyPortal/portal/processes/Start Processes/PortalStart.p.json
index cb92d8cb9bf..788d1b0623c 100644
--- a/AxonIvyPortal/portal/processes/Start Processes/PortalStart.p.json
+++ b/AxonIvyPortal/portal/processes/Start Processes/PortalStart.p.json
@@ -81,85 +81,6 @@
"connect" : [
{ "id" : "f196", "to" : "f143" }
]
- }, {
- "id" : "S32",
- "type" : "EmbeddedProcess",
- "name" : "Authorize",
- "elements" : [ {
- "id" : "S32-f167",
- "type" : "Script",
- "name" : "Init isAuthorized",
- "config" : {
- "output" : {
- "code" : [
- "import ch.ivy.addon.portalkit.util.PermissionUtils;",
- "import ch.ivy.addon.portalkit.enums.PortalPermission;",
- "",
- "in.isAuthorized = PermissionUtils.hasPermission(PortalPermission.STATISTIC_ANALYZE_TASK.getPermission());"
- ]
- }
- },
- "visual" : {
- "at" : { "x" : 176, "y" : 160 }
- },
- "connect" : [
- { "id" : "S32-f170", "to" : "S32-f165" }
- ]
- }, {
- "id" : "S32-f79",
- "type" : "TaskEnd",
- "visual" : {
- "at" : { "x" : 296, "y" : 240 }
- }
- }, {
- "id" : "S32-f165",
- "type" : "Alternative",
- "name" : "Authorized?",
- "config" : {
- "conditions" : {
- "S32-f1" : "in.isAuthorized"
- }
- },
- "visual" : {
- "at" : { "x" : 296, "y" : 160 },
- "labelOffset" : { "y" : -16 }
- },
- "connect" : [
- { "id" : "S32-f1", "to" : "S32-g1", "label" : {
- "name" : "Yes"
- } },
- { "id" : "S32-f161", "to" : "S32-f79", "label" : {
- "name" : "No",
- "segment" : 0.55,
- "offset" : { "x" : 11, "y" : -13 }
- } }
- ]
- }, {
- "id" : "S32-g0",
- "type" : "EmbeddedStart",
- "name" : "in 1",
- "visual" : {
- "at" : { "x" : 64, "y" : 160 }
- },
- "parentConnector" : "f171",
- "connect" : [
- { "id" : "S32-f0", "to" : "S32-f167" }
- ]
- }, {
- "id" : "S32-g1",
- "type" : "EmbeddedEnd",
- "name" : "out 1",
- "visual" : {
- "at" : { "x" : 448, "y" : 160 }
- },
- "parentConnector" : "f194"
- } ],
- "visual" : {
- "at" : { "x" : 200, "y" : 3160 }
- },
- "connect" : [
- { "id" : "f194", "to" : "f166" }
- ]
}, {
"id" : "S22",
"type" : "EmbeddedProcess",
@@ -358,7 +279,7 @@
"parentConnector" : "f192"
} ],
"visual" : {
- "at" : { "x" : 200, "y" : 3480 }
+ "at" : { "x" : 200, "y" : 3400 }
},
"connect" : [
{ "id" : "f192", "to" : "f137" }
@@ -438,7 +359,7 @@
]
} ],
"visual" : {
- "at" : { "x" : 200, "y" : 3400 }
+ "at" : { "x" : 200, "y" : 3320 }
},
"connect" : [
{ "id" : "f190", "to" : "f237" }
@@ -518,7 +439,7 @@
]
} ],
"visual" : {
- "at" : { "x" : 200, "y" : 3320 }
+ "at" : { "x" : 200, "y" : 3240 }
},
"connect" : [
{ "id" : "f187", "to" : "f232" }
@@ -965,64 +886,6 @@
"connect" : [
{ "id" : "f210", "to" : "f65" }
]
- }, {
- "id" : "S00",
- "type" : "EmbeddedProcess",
- "name" : "Authorize",
- "elements" : [ {
- "id" : "S00-f281",
- "type" : "TaskEnd",
- "visual" : {
- "at" : { "x" : 152, "y" : 232 }
- }
- }, {
- "id" : "S00-f279",
- "type" : "Alternative",
- "name" : "Authorized?",
- "config" : {
- "conditions" : {
- "S00-f1" : "ch.ivy.addon.portalkit.util.PermissionUtils.checkAccessFullStatisticsListPermission()"
- }
- },
- "visual" : {
- "at" : { "x" : 152, "y" : 144 },
- "labelOffset" : { "y" : -16 }
- },
- "connect" : [
- { "id" : "S00-f1", "to" : "S00-g1", "label" : {
- "name" : "Yes"
- } },
- { "id" : "S00-f282", "to" : "S00-f281", "label" : {
- "name" : "No",
- "segment" : 0.56
- } }
- ]
- }, {
- "id" : "S00-g0",
- "type" : "EmbeddedStart",
- "name" : "in 1",
- "visual" : {
- "at" : { "x" : 64, "y" : 144 }
- },
- "parentConnector" : "f26",
- "connect" : [
- { "id" : "S00-f0", "to" : "S00-f279" }
- ]
- }, {
- "id" : "S00-g1",
- "type" : "EmbeddedEnd",
- "name" : "out 1",
- "visual" : {
- "at" : { "x" : 320, "y" : 144 }
- },
- "parentConnector" : "f27"
- } ],
- "visual" : {
- "at" : { "x" : 200, "y" : 960 }
- },
- "connect" : [
- { "id" : "f27", "to" : "f32" }
- ]
}, {
"id" : "S90",
"type" : "EmbeddedProcess",
@@ -1076,7 +939,7 @@
"parentConnector" : "f209"
} ],
"visual" : {
- "at" : { "x" : 344, "y" : 880 }
+ "at" : { "x" : 344, "y" : 960 }
},
"connect" : [
{ "id" : "f209", "to" : "f274" }
@@ -1159,7 +1022,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 400 },
+ "at" : { "x" : 96, "y" : 480 },
"labelOffset" : { "x" : -23, "y" : 41 }
},
"connect" : [
@@ -1223,7 +1086,7 @@
"sudo" : true
},
"visual" : {
- "at" : { "x" : 488, "y" : 400 }
+ "at" : { "x" : 488, "y" : 480 }
},
"connect" : [
{ "id" : "f2", "to" : "f1" }
@@ -1253,7 +1116,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 240 },
+ "at" : { "x" : 96, "y" : 320 },
"labelOffset" : { "x" : -55, "y" : 41 }
},
"connect" : [
@@ -1263,7 +1126,7 @@
"id" : "f57",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 592, "y" : 640 }
+ "at" : { "x" : 592, "y" : 720 }
}
}, {
"id" : "f58",
@@ -1276,7 +1139,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 640 },
+ "at" : { "x" : 96, "y" : 720 },
"labelOffset" : { "x" : -15, "y" : 41 }
},
"connect" : [
@@ -1301,7 +1164,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 880 },
+ "at" : { "x" : 96, "y" : 960 },
"labelOffset" : { "x" : -23, "y" : 33 }
},
"connect" : [
@@ -1318,7 +1181,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 800 },
+ "at" : { "x" : 96, "y" : 880 },
"labelOffset" : { "x" : -31, "y" : 41 }
},
"connect" : [
@@ -1328,13 +1191,13 @@
"id" : "f105",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 736, "y" : 880 }
+ "at" : { "x" : 736, "y" : 960 }
}
}, {
"id" : "f64",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 592, "y" : 800 }
+ "at" : { "x" : 592, "y" : 880 }
}
}, {
"id" : "f1",
@@ -1346,18 +1209,18 @@
}
},
"visual" : {
- "at" : { "x" : 592, "y" : 400 }
+ "at" : { "x" : 592, "y" : 480 }
},
"connect" : [
{ "id" : "f30", "to" : "f22" },
{ "id" : "f36", "to" : "S70" },
- { "id" : "f19", "to" : "f5", "via" : [ { "x" : 592, "y" : 448 }, { "x" : 1008, "y" : 448 } ] }
+ { "id" : "f19", "to" : "f5", "via" : [ { "x" : 592, "y" : 528 }, { "x" : 1008, "y" : 528 } ] }
]
}, {
"id" : "f0",
"type" : "Alternative",
"visual" : {
- "at" : { "x" : 1008, "y" : 240 }
+ "at" : { "x" : 1008, "y" : 320 }
},
"connect" : [
{ "id" : "f92", "to" : "S60" }
@@ -1371,7 +1234,7 @@
}
},
"visual" : {
- "at" : { "x" : 1008, "y" : 400 }
+ "at" : { "x" : 1008, "y" : 480 }
},
"connect" : [
{ "id" : "f20", "to" : "f0" },
@@ -1397,48 +1260,12 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 480 },
+ "at" : { "x" : 96, "y" : 560 },
"labelOffset" : { "x" : -39, "y" : 41 }
},
"connect" : [
- { "id" : "f13", "to" : "f4", "via" : [ { "x" : 344, "y" : 480 } ] }
+ { "id" : "f13", "to" : "f4", "via" : [ { "x" : 344, "y" : 560 } ] }
]
- }, {
- "id" : "f32",
- "type" : "DialogCall",
- "name" : "Statistic",
- "config" : {
- "dialog" : "ch.ivy.addon.portal.generic.admin.PortalDashBoard:start()"
- },
- "visual" : {
- "at" : { "x" : 344, "y" : 960 }
- },
- "connect" : [
- { "id" : "f35", "to" : "f34" }
- ]
- }, {
- "id" : "f70",
- "type" : "RequestStart",
- "name" : "StatisticPage.ivp",
- "config" : {
- "signature" : "StatisticPage",
- "request" : {
- "isVisibleOnStartList" : false
- }
- },
- "visual" : {
- "at" : { "x" : 96, "y" : 960 },
- "labelOffset" : { "x" : -15, "y" : 33 }
- },
- "connect" : [
- { "id" : "f26", "to" : "S00" }
- ]
- }, {
- "id" : "f34",
- "type" : "TaskEnd",
- "visual" : {
- "at" : { "x" : 448, "y" : 960 }
- }
}, {
"id" : "f39",
"type" : "RequestStart",
@@ -1888,7 +1715,7 @@
"homepage if you have"
],
"visual" : {
- "at" : { "x" : 1240, "y" : 240 },
+ "at" : { "x" : 1240, "y" : 320 },
"size" : { "width" : 144, "height" : 44 }
}
}, {
@@ -1910,7 +1737,7 @@
"id" : "f22",
"type" : "Alternative",
"visual" : {
- "at" : { "x" : 592, "y" : 240 }
+ "at" : { "x" : 592, "y" : 320 }
},
"connect" : [
{ "id" : "f141", "to" : "f0" }
@@ -1924,7 +1751,7 @@
}
},
"visual" : {
- "at" : { "x" : 344, "y" : 400 }
+ "at" : { "x" : 344, "y" : 480 }
},
"connect" : [
{ "id" : "f29", "to" : "f31" },
@@ -1943,7 +1770,7 @@
}
},
"visual" : {
- "at" : { "x" : 344, "y" : 240 }
+ "at" : { "x" : 344, "y" : 320 }
},
"connect" : [
{ "id" : "f49", "to" : "f31" },
@@ -1968,7 +1795,7 @@
}
},
"visual" : {
- "at" : { "x" : 344, "y" : 320 }
+ "at" : { "x" : 344, "y" : 400 }
}
}, {
"id" : "f12",
@@ -2324,11 +2151,11 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 160 },
+ "at" : { "x" : 96, "y" : 240 },
"labelOffset" : { "x" : -39, "y" : 33 }
},
"connect" : [
- { "id" : "f47", "to" : "f21", "via" : [ { "x" : 344, "y" : 160 } ] }
+ { "id" : "f47", "to" : "f21", "via" : [ { "x" : 344, "y" : 240 } ] }
]
}, {
"id" : "f122",
@@ -2440,7 +2267,7 @@
"sudo" : true
},
"visual" : {
- "at" : { "x" : 488, "y" : 241 },
+ "at" : { "x" : 488, "y" : 321 },
"size" : { "height" : 62 }
},
"connect" : [
@@ -2541,7 +2368,7 @@
}
} ],
"visual" : {
- "at" : { "x" : 1096, "y" : 240 }
+ "at" : { "x" : 1096, "y" : 320 }
}
}, {
"id" : "S10",
@@ -2765,7 +2592,7 @@
}
} ],
"visual" : {
- "at" : { "x" : 1165, "y" : 399 },
+ "at" : { "x" : 1165, "y" : 479 },
"size" : { "width" : 251, "height" : 65 }
}
}, {
@@ -2864,7 +2691,7 @@
"parentConnector" : "f25"
} ],
"visual" : {
- "at" : { "x" : 488, "y" : 640 }
+ "at" : { "x" : 488, "y" : 720 }
},
"connect" : [
{ "id" : "f25", "to" : "f57" }
@@ -2963,7 +2790,7 @@
"parentConnector" : "f17"
} ],
"visual" : {
- "at" : { "x" : 488, "y" : 800 }
+ "at" : { "x" : 488, "y" : 880 }
},
"connect" : [
{ "id" : "f17", "to" : "f64" }
@@ -3063,7 +2890,7 @@
"parentConnector" : "f40"
} ],
"visual" : {
- "at" : { "x" : 848, "y" : 400 },
+ "at" : { "x" : 848, "y" : 480 },
"size" : { "width" : 248, "height" : 64 }
},
"connect" : [
@@ -3316,42 +3143,6 @@
"connect" : [
{ "id" : "f160", "to" : "f158" }
]
- }, {
- "id" : "f163",
- "type" : "RequestStart",
- "name" : "showTaskAnalysis.ivp",
- "config" : {
- "signature" : "showTaskAnalysis",
- "request" : {
- "isVisibleOnStartList" : false
- }
- },
- "visual" : {
- "at" : { "x" : 96, "y" : 3160 },
- "labelOffset" : { "x" : -31, "y" : 41 }
- },
- "connect" : [
- { "id" : "f171", "to" : "S32" }
- ]
- }, {
- "id" : "f164",
- "type" : "TaskEnd",
- "visual" : {
- "at" : { "x" : 448, "y" : 3160 }
- }
- }, {
- "id" : "f166",
- "type" : "DialogCall",
- "name" : "Task Analysis dialog",
- "config" : {
- "dialog" : "ch.ivy.addon.portal.generic.TaskAnalysis:start()"
- },
- "visual" : {
- "at" : { "x" : 344, "y" : 3160 }
- },
- "connect" : [
- { "id" : "f169", "to" : "f164" }
- ]
}, {
"id" : "f188",
"type" : "RequestStart",
@@ -3413,7 +3204,7 @@
"signature" : "DefaultApplicationHomePageInTeams"
},
"visual" : {
- "at" : { "x" : 96, "y" : 320 },
+ "at" : { "x" : 96, "y" : 400 },
"labelOffset" : { "x" : -79, "y" : 41 }
},
"connect" : [
@@ -3435,7 +3226,7 @@
}
},
"visual" : {
- "at" : { "x" : 200, "y" : 320 }
+ "at" : { "x" : 200, "y" : 400 }
},
"connect" : [
{ "id" : "f205", "to" : "f203" }
@@ -3444,7 +3235,7 @@
"id" : "f203",
"type" : "Alternative",
"visual" : {
- "at" : { "x" : 200, "y" : 240 }
+ "at" : { "x" : 200, "y" : 320 }
},
"connect" : [
{ "id" : "f43", "to" : "f21" }
@@ -3457,7 +3248,7 @@
"signature" : "DefaultCaseListPageInTeams"
},
"visual" : {
- "at" : { "x" : 96, "y" : 560 },
+ "at" : { "x" : 96, "y" : 640 },
"labelOffset" : { "x" : -55, "y" : 41 }
},
"connect" : [
@@ -3479,10 +3270,10 @@
}
},
"visual" : {
- "at" : { "x" : 200, "y" : 560 }
+ "at" : { "x" : 200, "y" : 640 }
},
"connect" : [
- { "id" : "f61", "to" : "S71", "via" : [ { "x" : 344, "y" : 560 } ] }
+ { "id" : "f61", "to" : "S71", "via" : [ { "x" : 344, "y" : 640 } ] }
]
}, {
"id" : "f214",
@@ -3500,10 +3291,10 @@
}
},
"visual" : {
- "at" : { "x" : 200, "y" : 720 }
+ "at" : { "x" : 200, "y" : 800 }
},
"connect" : [
- { "id" : "f24", "to" : "S80", "via" : [ { "x" : 344, "y" : 720 } ] }
+ { "id" : "f24", "to" : "S80", "via" : [ { "x" : 344, "y" : 800 } ] }
]
}, {
"id" : "f215",
@@ -3513,7 +3304,7 @@
"signature" : "DefaultTaskListPageInTeams"
},
"visual" : {
- "at" : { "x" : 96, "y" : 720 },
+ "at" : { "x" : 96, "y" : 800 },
"labelOffset" : { "x" : -55, "y" : 41 }
},
"connect" : [
@@ -3558,7 +3349,7 @@
"id" : "f224",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 304, "y" : 3240 }
+ "at" : { "x" : 304, "y" : 3160 }
}
}, {
"id" : "f225",
@@ -3575,7 +3366,7 @@
}
},
"visual" : {
- "at" : { "x" : 200, "y" : 3240 },
+ "at" : { "x" : 200, "y" : 3160 },
"size" : { "width" : 116 }
},
"connect" : [
@@ -3604,7 +3395,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3240 },
+ "at" : { "x" : 96, "y" : 3160 },
"labelOffset" : { "x" : -31, "y" : 33 }
},
"connect" : [
@@ -3629,7 +3420,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3320 },
+ "at" : { "x" : 96, "y" : 3240 },
"labelOffset" : { "x" : -31, "y" : 33 }
},
"connect" : [
@@ -3639,7 +3430,7 @@
"id" : "f230",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 448, "y" : 3320 }
+ "at" : { "x" : 448, "y" : 3240 }
}
}, {
"id" : "f232",
@@ -3654,7 +3445,7 @@
}
},
"visual" : {
- "at" : { "x" : 344, "y" : 3320 }
+ "at" : { "x" : 344, "y" : 3240 }
},
"connect" : [
{ "id" : "f231", "to" : "f230" }
@@ -3678,7 +3469,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3400 },
+ "at" : { "x" : 96, "y" : 3320 },
"labelOffset" : { "x" : -31, "y" : 33 }
},
"connect" : [
@@ -3688,7 +3479,7 @@
"id" : "f235",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 448, "y" : 3400 }
+ "at" : { "x" : 448, "y" : 3320 }
}
}, {
"id" : "f237",
@@ -3703,7 +3494,7 @@
}
},
"visual" : {
- "at" : { "x" : 344, "y" : 3400 }
+ "at" : { "x" : 344, "y" : 3320 }
},
"connect" : [
{ "id" : "f236", "to" : "f235" }
@@ -3719,7 +3510,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3480 },
+ "at" : { "x" : 96, "y" : 3400 },
"labelOffset" : { "x" : -31, "y" : 33 }
},
"connect" : [
@@ -3729,7 +3520,7 @@
"id" : "f41",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 448, "y" : 3480 }
+ "at" : { "x" : 448, "y" : 3400 }
}
}, {
"id" : "f137",
@@ -3739,7 +3530,7 @@
"dialog" : "ch.ivy.addon.portal.setting.PortalManagement:start()"
},
"visual" : {
- "at" : { "x" : 344, "y" : 3480 }
+ "at" : { "x" : 344, "y" : 3400 }
},
"connect" : [
{ "id" : "f129", "to" : "f41" }
@@ -3821,7 +3612,7 @@
"sudo" : true
},
"visual" : {
- "at" : { "x" : 200, "y" : 880 }
+ "at" : { "x" : 200, "y" : 960 }
},
"connect" : [
{ "id" : "f15", "to" : "S90" }
@@ -3840,7 +3631,7 @@
}
},
"visual" : {
- "at" : { "x" : 560, "y" : 880 },
+ "at" : { "x" : 560, "y" : 960 },
"size" : { "width" : 256 }
},
"connect" : [
@@ -3910,7 +3701,7 @@
"parentConnector" : "f176"
} ],
"visual" : {
- "at" : { "x" : 344, "y" : 640 }
+ "at" : { "x" : 344, "y" : 720 }
},
"connect" : [
{ "id" : "f176", "to" : "S30" }
@@ -3978,7 +3769,7 @@
"parentConnector" : "f179"
} ],
"visual" : {
- "at" : { "x" : 344, "y" : 800 }
+ "at" : { "x" : 344, "y" : 880 }
},
"connect" : [
{ "id" : "f179", "to" : "S20" }
@@ -4115,7 +3906,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3568 },
+ "at" : { "x" : 96, "y" : 3488 },
"labelOffset" : { "x" : -31, "y" : 41 }
},
"connect" : [
@@ -4125,7 +3916,7 @@
"id" : "f251",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 952, "y" : 3568 }
+ "at" : { "x" : 952, "y" : 3488 }
}
}, {
"id" : "f252",
@@ -4146,7 +3937,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3752 },
+ "at" : { "x" : 96, "y" : 3672 },
"labelOffset" : { "x" : -31, "y" : 41 }
},
"connect" : [
@@ -4156,7 +3947,7 @@
"id" : "f253",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 920, "y" : 3752 }
+ "at" : { "x" : 920, "y" : 3672 }
}
}, {
"id" : "S63",
@@ -4211,7 +4002,7 @@
"parentConnector" : "f260"
} ],
"visual" : {
- "at" : { "x" : 504, "y" : 3752 }
+ "at" : { "x" : 504, "y" : 3672 }
},
"connect" : [
{ "id" : "f260", "to" : "f255" }
@@ -4231,7 +4022,7 @@
}
},
"visual" : {
- "at" : { "x" : 332, "y" : 3752 },
+ "at" : { "x" : 332, "y" : 3672 },
"size" : { "width" : 136 }
},
"connect" : [
@@ -4251,7 +4042,7 @@
}
},
"visual" : {
- "at" : { "x" : 720, "y" : 3752 },
+ "at" : { "x" : 720, "y" : 3672 },
"size" : { "width" : 256 }
},
"connect" : [
@@ -4310,7 +4101,7 @@
"parentConnector" : "f261"
} ],
"visual" : {
- "at" : { "x" : 504, "y" : 3568 }
+ "at" : { "x" : 504, "y" : 3488 }
},
"connect" : [
{ "id" : "f261", "to" : "f256" }
@@ -4329,7 +4120,7 @@
}
},
"visual" : {
- "at" : { "x" : 720, "y" : 3568 },
+ "at" : { "x" : 720, "y" : 3488 },
"size" : { "width" : 260, "height" : 58 }
},
"connect" : [
@@ -4349,7 +4140,7 @@
}
},
"visual" : {
- "at" : { "x" : 332, "y" : 3568 },
+ "at" : { "x" : 332, "y" : 3488 },
"size" : { "width" : 136 }
},
"connect" : [
@@ -4376,7 +4167,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 72 }
+ "at" : { "x" : 96, "y" : 152 }
},
"connect" : [
{ "id" : "f212", "to" : "f170" }
@@ -4403,10 +4194,10 @@
}
},
"visual" : {
- "at" : { "x" : 216, "y" : 72 }
+ "at" : { "x" : 216, "y" : 152 }
},
"connect" : [
- { "id" : "f218", "to" : "f21", "via" : [ { "x" : 344, "y" : 72 } ] }
+ { "id" : "f218", "to" : "f21", "via" : [ { "x" : 344, "y" : 152 } ] }
]
}, {
"id" : "f219",
@@ -4417,7 +4208,7 @@
}
},
"visual" : {
- "at" : { "x" : 192, "y" : 3568 }
+ "at" : { "x" : 192, "y" : 3488 }
},
"connect" : [
{ "id" : "f233", "to" : "f223" },
@@ -4439,7 +4230,7 @@
}
},
"visual" : {
- "at" : { "x" : 192, "y" : 3656 }
+ "at" : { "x" : 192, "y" : 3576 }
}
}, {
"id" : "f239",
@@ -4451,7 +4242,7 @@
}
},
"visual" : {
- "at" : { "x" : 192, "y" : 3752 }
+ "at" : { "x" : 192, "y" : 3672 }
},
"connect" : [
{ "id" : "f244", "to" : "f254" },
@@ -4528,7 +4319,7 @@
]
} ],
"visual" : {
- "at" : { "x" : 200, "y" : 3840 }
+ "at" : { "x" : 200, "y" : 3760 }
},
"connect" : [
{ "id" : "f266", "to" : "f247" }
@@ -4537,7 +4328,7 @@
"id" : "f246",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 592, "y" : 3840 }
+ "at" : { "x" : 592, "y" : 3760 }
}
}, {
"id" : "f247",
@@ -4552,7 +4343,7 @@
}
},
"visual" : {
- "at" : { "x" : 416, "y" : 3840 },
+ "at" : { "x" : 416, "y" : 3760 },
"size" : { "width" : 256 }
},
"connect" : [
@@ -4577,7 +4368,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3840 },
+ "at" : { "x" : 96, "y" : 3760 },
"labelOffset" : { "x" : -55, "y" : 33 }
},
"connect" : [
@@ -4594,7 +4385,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 3952 }
+ "at" : { "x" : 96, "y" : 3872 }
},
"connect" : [
{ "id" : "f267", "to" : "f16" }
@@ -4607,7 +4398,7 @@
"dialog" : "com.axonivy.portal.component.NotificationFullPage:start()"
},
"visual" : {
- "at" : { "x" : 240, "y" : 3952 }
+ "at" : { "x" : 240, "y" : 3872 }
},
"connect" : [
{ "id" : "f268", "to" : "f50" }
@@ -4616,7 +4407,7 @@
"id" : "f50",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 376, "y" : 3952 }
+ "at" : { "x" : 376, "y" : 3872 }
}
}, {
"id" : "f269",
@@ -4637,7 +4428,7 @@
}
},
"visual" : {
- "at" : { "x" : 96, "y" : 4056 }
+ "at" : { "x" : 96, "y" : 3976 }
},
"connect" : [
{ "id" : "f273", "to" : "f281" }
@@ -4662,7 +4453,7 @@
}
},
"visual" : {
- "at" : { "x" : 488, "y" : 4056 }
+ "at" : { "x" : 488, "y" : 3976 }
},
"connect" : [
{ "id" : "f277", "to" : "f278" }
@@ -4671,7 +4462,7 @@
"id" : "f270",
"type" : "TaskEnd",
"visual" : {
- "at" : { "x" : 936, "y" : 4056 }
+ "at" : { "x" : 936, "y" : 3976 }
}
}, {
"id" : "f278",
@@ -4687,7 +4478,7 @@
}
},
"visual" : {
- "at" : { "x" : 703, "y" : 4055 },
+ "at" : { "x" : 703, "y" : 3975 },
"size" : { "width" : 255, "height" : 61 }
},
"connect" : [
@@ -4796,7 +4587,7 @@
}
},
"visual" : {
- "at" : { "x" : 200, "y" : 4056 }
+ "at" : { "x" : 200, "y" : 3976 }
},
"connect" : [
{ "id" : "f293", "to" : "S02" }
@@ -4869,7 +4660,7 @@
"parentConnector" : "f294"
} ],
"visual" : {
- "at" : { "x" : 344, "y" : 4056 }
+ "at" : { "x" : 344, "y" : 3976 }
},
"connect" : [
{ "id" : "f294", "to" : "f271" }
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/MenuView.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/MenuView.java
index 060210c7591..e6cdba4d490 100644
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/MenuView.java
+++ b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/MenuView.java
@@ -1,7 +1,6 @@
package ch.addon.portal.generic.menu;
import static ch.ivy.addon.portalkit.util.DashboardUtils.DASHBOARD_MENU_ITEM_PATTERN;
-
import static ch.ivy.addon.portalkit.util.DashboardUtils.DASHBOARD_MENU_JS_CLASS;
import static ch.ivy.addon.portalkit.util.DashboardUtils.DASHBOARD_MENU_PATTERN;
import static ch.ivy.addon.portalkit.util.DashboardUtils.DASHBOARD_PAGE_URL;
@@ -48,7 +47,6 @@
import ch.ivy.addon.portalkit.service.ApplicationMultiLanguage;
import ch.ivy.addon.portalkit.service.IvyCacheService;
import ch.ivy.addon.portalkit.service.MainMenuEntryService;
-import ch.ivy.addon.portalkit.service.StatisticService;
import ch.ivy.addon.portalkit.util.DashboardUtils;
import ch.ivy.addon.portalkit.util.UrlUtils;
import ch.ivy.addon.portalkit.util.UserUtils;
@@ -178,7 +176,7 @@ private MenuElement buildDashboardItem() {
String defaultTitle = (String) dashboardMenu.getValue();
String title = board.getTitles().stream()
- .filter(name -> StatisticService.equalsLanguageLocale(name, currentLanguage)
+ .filter(name -> StringUtils.equalsIgnoreCase(name.getLocale().toString(), currentLanguage)
&& StringUtils.isNotBlank(name.getValue()))
.map(DisplayName::getValue).findFirst().orElse(defaultTitle);
dashboardMenu.setValue(title);
@@ -274,7 +272,6 @@ public void loadBreadcrumb(String viewName, ITask userTask, ICase userCase) {
case TECHNICAL_CASE -> buildBreadCrumbForTechnicalCaseList(userCase);
case RELATED_TASK -> buildBreadCrumbForRelatedTask(userCase);
case PROCESS -> buildBreadCrumbForProcess();
- case STATISTICS -> buildBreadCrumbForStatistic();
case TASK_DETAIL -> buildBreadCrumbForTaskDetails(userTask);
case CASE_DETAIL -> buildBreadCrumbForCaseDetails(userCase);
case EXPRESS -> buildBreadCrumbForExpress();
@@ -358,14 +355,6 @@ private void buildBreadCrumbForProcess() {
breadcrumbModel.getElements().add(processListSubmenuItem);
}
- private void buildBreadCrumbForStatistic() {
- setPortalHomeMenuToBreadcrumbModel();
-
- DefaultMenuItem statisticListSubmenuItem = buildStatisticListMenuItem();
- statisticListSubmenuItem.setDisabled(true);
- breadcrumbModel.getElements().add(statisticListSubmenuItem);
- }
-
private void buildBreadCrumbForTaskDetails(ITask userTask) {
setPortalHomeMenuToBreadcrumbModel();
breadcrumbModel.getElements().add(buildTaskListMenuItem());
@@ -433,11 +422,6 @@ private DefaultMenuItem buildProcessListMenuItem() {
return buildMenuItemFromPortalSubMenuItem(processSubMenuItem);
}
- private DefaultMenuItem buildStatisticListMenuItem() {
- StatisticSubMenuItem statisticSubMenuItem = new StatisticSubMenuItem();
- return buildMenuItemFromPortalSubMenuItem(statisticSubMenuItem);
- }
-
private MenuItem buildTaskDetailsMenuItem(ITask userTask) {
String taskName = StringUtils.isEmpty(userTask.getName()) ? Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/components/taskStart/taskNameNotAvailable") : userTask.names().current();
return DefaultMenuItem.builder()
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuItem.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuItem.java
index 7755d32184b..c9ecce281e4 100644
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuItem.java
+++ b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuItem.java
@@ -109,7 +109,6 @@ private String generateMenuId(MenuKind menuKind) {
case PROCESS:
case TASK:
case CASE:
- case STATISTICS:
case CUSTOM:
menuFormat = SUB_MENU_ID_FORMAT;
break;
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuNavigator.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuNavigator.java
index aab7bffe407..cbc352d7266 100644
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuNavigator.java
+++ b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/PortalMenuNavigator.java
@@ -26,10 +26,8 @@
import ch.ivy.addon.portalkit.configuration.Application;
import ch.ivy.addon.portalkit.constant.IvyCacheIdentifier;
import ch.ivy.addon.portalkit.enums.BreadCrumbKind;
-import ch.ivy.addon.portalkit.enums.GlobalVariable;
import ch.ivy.addon.portalkit.enums.MenuKind;
import ch.ivy.addon.portalkit.enums.SessionAttribute;
-import ch.ivy.addon.portalkit.service.GlobalSettingService;
import ch.ivy.addon.portalkit.service.IvyCacheService;
import ch.ivy.addon.portalkit.service.RegisteredApplicationService;
import ch.ivy.addon.portalkit.util.PermissionUtils;
@@ -64,9 +62,6 @@ public static void navigateToTargetPage(Map> params) throws
case CASE:
PortalNavigator.navigateToPortalCase();
break;
- case STATISTICS:
- PortalNavigator.navigateToPortalStatistic();
- break;
default:
break;
}
@@ -162,7 +157,6 @@ private record PortalSubMenuItemWrapper(Locale loadedLocale, List p
private static List getSubmenuList() {
List subMenuItems = new ArrayList<>();
- GlobalSettingService globalSettingService = GlobalSettingService.getInstance();
if(PermissionUtils.checkAccessFullProcessListPermission()) {
subMenuItems.add(new ProcessSubMenuItem());
@@ -176,11 +170,6 @@ private static List getSubmenuList() {
subMenuItems.add(new CaseSubMenuItem());
}
- if(PermissionUtils.checkAccessFullStatisticsListPermission()
- && !globalSettingService.findBooleanGlobalSettingValue(GlobalVariable.HIDE_STATISTIC_WIDGET)) {
- subMenuItems.add(new StatisticSubMenuItem());
- }
-
subMenuItems.addAll(CustomSubMenuItemService.findAll());
return subMenuItems;
}
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/StatisticSubMenuItem.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/StatisticSubMenuItem.java
deleted file mode 100644
index 1701385cb82..00000000000
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/menu/StatisticSubMenuItem.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ch.addon.portal.generic.menu;
-
-import com.axonivy.portal.components.publicapi.ApplicationMultiLanguageAPI;
-
-import ch.addon.portal.generic.userprofile.homepage.HomepageType;
-import ch.ivy.addon.portal.generic.navigation.PortalNavigator;
-import ch.ivy.addon.portalkit.enums.MenuKind;
-
-public class StatisticSubMenuItem extends SubMenuItem {
- public StatisticSubMenuItem() {
- this.icon = "si si-pie-line-graph";
- this.menuKind = MenuKind.STATISTICS;
- this.label = ApplicationMultiLanguageAPI.getCmsValueByUserLocale("/ch.ivy.addon.portalkit.ui.jsf/statistic/chart/statistics");
- this.name = HomepageType.STATISTICS.name();
- this.link = PortalNavigator.getSubMenuItemUrlOfCurrentApplication(MenuKind.STATISTICS);
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageMapper.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageMapper.java
index 241838b8613..07a8c049dbf 100644
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageMapper.java
+++ b/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageMapper.java
@@ -23,8 +23,6 @@ public static Homepage toHomepage(SubMenuItem menuItem) {
homepage.setType(HomepageType.TASK);
} else if (menuItem.getMenuKind() == MenuKind.CASE) {
homepage.setType(HomepageType.CASE);
- } else if (menuItem.getMenuKind() == MenuKind.STATISTICS) {
- homepage.setType(HomepageType.STATISTICS);
} else if (menuItem.getMenuKind() == MenuKind.CUSTOM) {
homepage.setType(HomepageType.CUSTOM);
} else {
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageType.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageType.java
index c0b0487db9a..1daa0efa627 100644
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageType.java
+++ b/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageType.java
@@ -1,7 +1,7 @@
package ch.addon.portal.generic.userprofile.homepage;
public enum HomepageType {
- DASHBOARD, PROCESS, TASK, CASE, STATISTICS, CUSTOM;
+ DASHBOARD, PROCESS, TASK, CASE, CUSTOM;
public static HomepageType getType(String typeName) {
for (HomepageType type : HomepageType.values()) {
diff --git a/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageUtils.java b/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageUtils.java
index 8df31614d0c..a0e09fa30ed 100644
--- a/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageUtils.java
+++ b/AxonIvyPortal/portal/src/ch/addon/portal/generic/userprofile/homepage/HomepageUtils.java
@@ -88,7 +88,6 @@ private static void adjustHomepageStartLink(Homepage homepage) {
case PROCESS -> findRelativeUrlByKeywork(PortalNavigator.PORTAL_PROCESS_START);
case TASK -> findRelativeUrlByKeywork(PortalNavigator.PORTAL_TASK_START);
case CASE -> findRelativeUrlByKeywork(PortalNavigator.PORTAL_CASE_START);
- case STATISTICS -> findRelativeUrlByKeywork(PortalNavigator.PORTAL_STATISTIC_START);
default -> "";
};
if (StringUtils.isNotEmpty(relativeUrl)) {
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/DashboardDetailModificationBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/DashboardDetailModificationBean.java
index 6925c0484af..3c0483041ba 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/DashboardDetailModificationBean.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/DashboardDetailModificationBean.java
@@ -7,7 +7,6 @@
import static ch.ivy.addon.portalkit.enums.DashboardWidgetType.NOTIFICATION;
import static ch.ivy.addon.portalkit.enums.DashboardWidgetType.PROCESS;
import static ch.ivy.addon.portalkit.enums.DashboardWidgetType.PROCESS_VIEWER;
-import static ch.ivy.addon.portalkit.enums.DashboardWidgetType.STATISTIC;
import static ch.ivy.addon.portalkit.enums.DashboardWidgetType.TASK;
import static ch.ivy.addon.portalkit.enums.DashboardWidgetType.WELCOME;
import static org.apache.commons.lang3.StringUtils.EMPTY;
@@ -70,7 +69,6 @@
import ch.ivy.addon.portalkit.dto.dashboard.ProcessDashboardWidget;
import ch.ivy.addon.portalkit.dto.dashboard.ProcessViewerDashboardWidget;
import ch.ivy.addon.portalkit.dto.dashboard.SingleProcessDashboardWidget;
-import ch.ivy.addon.portalkit.dto.dashboard.StatisticDashboardWidget;
import ch.ivy.addon.portalkit.dto.dashboard.TaskDashboardWidget;
import ch.ivy.addon.portalkit.dto.dashboard.WelcomeDashboardWidget;
import ch.ivy.addon.portalkit.dto.dashboard.WidgetSample;
@@ -84,7 +82,6 @@
import ch.ivy.addon.portalkit.jsf.Attrs;
import ch.ivy.addon.portalkit.jsf.ManagedBeans;
import ch.ivy.addon.portalkit.service.DashboardService;
-import ch.ivy.addon.portalkit.service.StatisticService;
import ch.ivy.addon.portalkit.service.exception.PortalException;
import ch.ivy.addon.portalkit.util.CustomWidgetUtils;
import ch.ivy.addon.portalkit.util.DashboardUtils;
@@ -274,11 +271,6 @@ public void create(WidgetSample sample) {
widget = getDefaultCustomDashboardWidget();
((CustomDashboardWidget) widget).getData().setType(DashboardCustomWidgetType.EXTERNAL_URL);
}
- case STATISTIC -> {
- newWidgetHeader = translate("/ch.ivy.addon.portalkit.ui.jsf/dashboard/configuration/newWidgetHeader",
- Arrays.asList(translate("/ch.ivy.addon.portalkit.ui.jsf/dashboard/statisticChartWidget")));
- widget = getDefaultStatisticDashboardWidget();
- }
case PROCESS_VIEWER -> {
newWidgetHeader = translate("/ch.ivy.addon.portalkit.ui.jsf/dashboard/configuration/newWidgetHeader",
Arrays.asList(translate("/ch.ivy.addon.portalkit.ui.jsf/ProcessViewer/ProcessViewerText")));
@@ -382,12 +374,6 @@ private ProcessDashboardWidget getDefaultProcessDashboardWidget() {
return (ProcessDashboardWidget) DashboardWidgetUtils.buildDefaultWidget(widgetId, widgetName, PROCESS);
}
- private StatisticDashboardWidget getDefaultStatisticDashboardWidget() {
- String widgetId = DashboardWidgetUtils.generateNewWidgetId(STATISTIC);
- String widgetName = translate("/ch.ivy.addon.portalkit.ui.jsf/dashboard/yourStatistics");
- return (StatisticDashboardWidget) DashboardWidgetUtils.buildDefaultWidget(widgetId, widgetName, STATISTIC);
- }
-
private ClientStatisticDashboardWidget getDefaultClientStatisticDashboardWidget(String widgetName, String chartId) {
String widgetId = DashboardWidgetUtils.generateNewWidgetId(CLIENT_STATISTIC);
ClientStatisticDashboardWidget widget = null;
@@ -479,9 +465,6 @@ public void saveWidget() {
CustomDashboardWidget customWidget = (CustomDashboardWidget) widget;
unifyCustomWidgetData(customWidget);
}
- case STATISTIC -> {
- updateStatisticWidgetData(widget);
- }
case WELCOME -> {
updateWelcomeWidget(widget);
}
@@ -541,14 +524,6 @@ private void updateProcessWidgetSize(ProcessDashboardWidget processWidget, int h
}
}
- private void updateStatisticWidgetData(DashboardWidget widget) {
- var statisticWidget = (StatisticDashboardWidget) widget;
- var displayName = StatisticService.getInstance().getDisplayNameInUserLanguageForChart(statisticWidget.getChart());
- if (displayName != null) {
- statisticWidget.setName(displayName.getValue());
- }
- }
-
/**
* Add image to CMS, remove temp image CMS
*
@@ -814,11 +789,6 @@ public void prepareEditWidget(DashboardWidget widget) {
};
setWidget(clonedWidget);
}
- case STATISTIC -> {
- var statisticDashboardWidget = new StatisticDashboardWidget((StatisticDashboardWidget) widget);
- setWidget(statisticDashboardWidget);
- }
-
default -> {
setWidget(editWidget);
}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/NavigatorBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/NavigatorBean.java
index b7b95b68259..c354bba7337 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/NavigatorBean.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/NavigatorBean.java
@@ -28,8 +28,5 @@ public String getTaskPage() {
public String getCasePage() {
return MenuKind.CASE.toString();
}
-
- public String getStatisticPage() {
- return MenuKind.STATISTICS.toString();
- }
+
}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/StatisticBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/StatisticBean.java
deleted file mode 100644
index 8320f00ff36..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/StatisticBean.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package ch.ivy.addon.portal.generic.bean;
-
-import java.io.Serializable;
-
-import javax.annotation.PostConstruct;
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ViewScoped;
-
-import org.apache.commons.lang3.StringUtils;
-
-import ch.ivy.addon.portalkit.enums.GlobalVariable;
-import ch.ivy.addon.portalkit.service.GlobalSettingService;
-
-@ManagedBean
-@ViewScoped
-public class StatisticBean implements Serializable {
- private static final long serialVersionUID = 1L;
-
- private String isHideStatisticWidget;
-
- @PostConstruct
- public void init() {
- GlobalSettingService globalSettingService = GlobalSettingService.getInstance();
- isHideStatisticWidget =
- globalSettingService.findGlobalSettingValue(GlobalVariable.HIDE_STATISTIC_WIDGET);
- }
-
- public boolean isHiddenStatisticWidget() {
- return StringUtils.isNotBlank(isHideStatisticWidget) ? Boolean.parseBoolean(isHideStatisticWidget) : false;
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/UserMenuBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/UserMenuBean.java
index e600c320266..2872c437bc5 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/UserMenuBean.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/UserMenuBean.java
@@ -110,10 +110,6 @@ private boolean loggedByExternalSecuritySystem() {
return Ivy.session().getSessionUser() != null && Ivy.session().getSessionUser().getExternalId() != null;
}
- public boolean isHiddenStatisticWidget() {
- return GlobalSettingService.getInstance().findGlobalSettingValueAsBoolean(GlobalVariable.HIDE_STATISTIC_WIDGET);
- }
-
public boolean getIsShowGlobalSearch() {
return isShowGlobalSearch;
}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/navigation/PortalNavigator.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/navigation/PortalNavigator.java
index 230f77efb2f..b02592f9776 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/navigation/PortalNavigator.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/navigation/PortalNavigator.java
@@ -24,7 +24,6 @@ public final class PortalNavigator extends BaseNavigator{
private static final String PORTAL_PROCESS = "Start Processes/PortalStart/DefaultProcessStartListPage.ivp";
private static final String PORTAL_TASK = "Start Processes/PortalStart/DefaultTaskListPage.ivp";
private static final String PORTAL_CASE = "Start Processes/PortalStart/CaseListPage.ivp";
- private static final String PORTAL_STATISTIC = "Start Processes/PortalStart/StatisticPage.ivp";
private static final String PORTAL_CASE_DETAILS = "Start Processes/PortalStart/DefaultCaseDetailPage.ivp";
private static final String PORTAL_RELATED_TASKS_OF_CASE = "Start Processes/PortalStart/RelatedTasksOfCasePage.ivp";
private static final String PORTAL_RELATED_TASKS_OF_CASE_IN_FRAME = "Start Processes/PortalStart/RelatedTasksOfCasePageInFrame.ivp";
@@ -45,7 +44,6 @@ public final class PortalNavigator extends BaseNavigator{
public static final String PORTAL_PROCESS_START = "/DefaultProcessStartListPage.ivp";
public static final String PORTAL_TASK_START = "/DefaultTaskListPage.ivp";
public static final String PORTAL_CASE_START = "/CaseListPage.ivp";
- public static final String PORTAL_STATISTIC_START = "/StatisticPage.ivp";
public static final String PORTAL_USER_PROFILE_START = "/UserProfile.ivp";
public static final String PORTAL_CASE_DETAILS_IN_IFRAME_START = "/CaseDetailsInIFrame.ivp";
private static final String UUID = "uuid";
@@ -99,7 +97,6 @@ public static String getSubMenuItemUrlOfCurrentApplication(MenuKind menuKind) {
case PROCESS -> PORTAL_PROCESS;
case TASK -> PORTAL_TASK;
case CASE -> PORTAL_CASE;
- case STATISTICS -> PORTAL_STATISTIC;
default -> StringUtils.EMPTY;
};
return ProcessStartAPI.findRelativeUrlByProcessStartFriendlyRequestPath(subMenuUrl);
@@ -123,10 +120,6 @@ public static void navigateToPortalTask() {
navigateByKeyword(PORTAL_TASK_START, PORTAL_TASK, new HashMap<>());
}
- public static void navigateToPortalStatistic() {
- navigateByKeyword(PORTAL_STATISTIC_START, PORTAL_STATISTIC, new HashMap<>());
- }
-
public static void navigateToPortalCaseDetails(String uuid) {
Map params = new HashMap<>();
params.put(ID, uuid);
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/view/TaskAnalysisView.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/view/TaskAnalysisView.java
deleted file mode 100644
index c993547f8a6..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/view/TaskAnalysisView.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package ch.ivy.addon.portal.generic.view;
-
-import org.apache.commons.lang3.StringUtils;
-
-import ch.ivy.addon.portalkit.datamodel.internal.TaskAnalysisLazyDataModel;
-import ch.ivyteam.ivy.environment.Ivy;
-
-public class TaskAnalysisView {
-
- public static class Builder {
-
- private String pageTitle = StringUtils.EMPTY;
- private TaskAnalysisLazyDataModel dataModel;
- private String keyword = StringUtils.EMPTY;
- private long taskId = -1L;
- private boolean canLinkBackCaseDetail = Boolean.FALSE;
- private String caseName = StringUtils.EMPTY;
- private boolean hideTaskFilter = Boolean.FALSE;
- private boolean showHeaderToolbar = Boolean.TRUE;
- private String noTaskFoundMessage = Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/components/taskView/noTask");
- private boolean compactMode = Boolean.TRUE;
- private Integer chunkSize = 10;
-
- public Builder pageTitle(String pageTitle) {
- this.pageTitle = pageTitle;
- return this;
- }
-
- public Builder caseName(String caseName) {
- this.caseName = caseName;
- return this;
- }
-
- public Builder dataModel(TaskAnalysisLazyDataModel taskAnalysisLazyDataModel) {
- this.dataModel = taskAnalysisLazyDataModel;
- return this;
- }
-
- public Builder keyword(String keyword) {
- this.keyword = keyword;
- return this;
- }
-
- public Builder taskId(long taskId) {
- this.taskId = taskId;
- return this;
- }
-
- public Builder canLinkBackCaseDetail(boolean canLinkBackCaseDetail) {
- this.canLinkBackCaseDetail = canLinkBackCaseDetail;
- return this;
- }
-
- public Builder hideTaskFilter(boolean hideTaskFilter) {
- this.hideTaskFilter = hideTaskFilter;
- return this;
- }
-
- public Builder showHeaderToolbar(boolean showHeaderToolbar) {
- this.showHeaderToolbar = showHeaderToolbar;
- return this;
- }
-
- public Builder noTaskFoundMessage(String noTaskFoundMessage) {
- this.noTaskFoundMessage = noTaskFoundMessage;
- return this;
- }
-
- public Builder compactMode(boolean compactMode) {
- this.compactMode = compactMode;
- return this;
- }
-
- public Builder chunkSize(Integer chunkSize) {
- this.chunkSize = chunkSize;
- return this;
- }
-
- public TaskAnalysisView createNewTaskView() {
- return new TaskAnalysisView(this);
- }
- }
-
- private final String pageTitle;
- private TaskAnalysisLazyDataModel dataModel;
- private final String keyword;
- private final long taskId;
- private final String caseName;
- private final boolean canLinkBackCaseDetail;
- private final boolean hideTaskFilter;
- private final boolean showHeaderToolbar;
- private final String noTaskFoundMessage;
- private final boolean compactMode;
- private final Integer chunkSize;
-
- private TaskAnalysisView(Builder builder) {
- pageTitle = builder.pageTitle;
- dataModel = builder.dataModel;
- keyword = builder.keyword;
- taskId = builder.taskId;
- canLinkBackCaseDetail = builder.canLinkBackCaseDetail;
- caseName = builder.caseName;
- hideTaskFilter = builder.hideTaskFilter;
- showHeaderToolbar = builder.showHeaderToolbar;
- noTaskFoundMessage = builder.noTaskFoundMessage;
- compactMode = builder.compactMode;
- chunkSize = builder.chunkSize;
- }
-
- public String getNoTaskFoundMessage() {
- return noTaskFoundMessage;
- }
-
- public static Builder create() {
- return new Builder();
- }
-
- public String getPageTitle() {
- return pageTitle;
- }
-
- public TaskAnalysisLazyDataModel getDataModel() {
- return dataModel;
- }
-
- public void setDataModel(TaskAnalysisLazyDataModel dataModel) {
- this.dataModel = dataModel;
- }
-
- public String getKeyword() {
- return keyword;
- }
-
- public long getTaskId() {
- return taskId;
- }
-
- public boolean canLinkBackCaseDetail() {
- return canLinkBackCaseDetail;
- }
-
- public String getCaseName() {
- return caseName;
- }
-
- public boolean isHideTaskFilter() {
- return hideTaskFilter;
- }
-
- public boolean isShowHeaderToolbar() {
- return showHeaderToolbar;
- }
-
- public boolean isCompactMode() {
- return compactMode;
- }
-
- public Integer getChunkSize() {
- return chunkSize;
- }
-
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/DashboardStatisticChartBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/DashboardStatisticChartBean.java
deleted file mode 100644
index 5a994ba8502..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/DashboardStatisticChartBean.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package ch.ivy.addon.portalkit.bean;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ViewScoped;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.primefaces.event.ItemSelectEvent;
-
-import ch.ivy.addon.portalkit.dto.dashboard.StatisticDashboardWidget;
-import ch.ivy.addon.portalkit.enums.GlobalVariable;
-import ch.ivy.addon.portalkit.enums.StatisticChartType;
-import ch.ivy.addon.portalkit.service.GlobalSettingService;
-import ch.ivy.addon.portalkit.service.StatisticService;
-import ch.ivy.addon.portalkit.statistics.StatisticChart;
-import ch.ivy.addon.portalkit.statistics.StatisticChartDrilldownUtils;
-import ch.ivyteam.ivy.environment.Ivy;
-
-@ViewScoped
-@ManagedBean
-public class DashboardStatisticChartBean implements Serializable {
-
- private static final long serialVersionUID = -8491957877380766526L;
- private List availableCharts;
- private StatisticChart selectedChart;
- private boolean isPublicDashboard;
- private boolean isRenderedRefreshChartPoll;
- private long statisticChartScalingInterval;
-
- public void initChartConfiguration(StatisticDashboardWidget widget, boolean isPublicDashboard) {
- if (widget != null && widget.getChart() != null) {
- selectedChart = widget.getChart();
- } else {
- selectedChart = new StatisticChart();
- selectedChart.setType(StatisticChartType.TASK_BY_PRIORITY);
- selectedChart.setDonutChartModel(StatisticService.getInstance().createDonutChartPlaceholder());
- }
- this.isPublicDashboard = isPublicDashboard;
- }
-
- public void fetchStatisticCharts() {
- availableCharts = new ArrayList<>();
- if (isPublicDashboard) {
- availableCharts.addAll(StatisticService.getInstance().getPublicConfig());
- } else {
- availableCharts.addAll(StatisticService.getInstance().findStatisticCharts());
- }
- }
-
- public void initSettings() {
- var chartScalingSetting = GlobalSettingService.getInstance().findGlobalSettingValue(GlobalVariable.STATISTIC_CHART_SCALING_INTERVAL);
- statisticChartScalingInterval = StringUtils.isNotBlank(chartScalingSetting) ? Long.valueOf(chartScalingSetting) : 0;
- isRenderedRefreshChartPoll = statisticChartScalingInterval > StatisticChartCreationBean.MINIMUM_STATISTIC_CHART_SCALING_INTERVAL
- && !Ivy.session().isSessionUserUnknown();
- }
-
- public List completeCharts(String filter) {
- if (CollectionUtils.isEmpty(availableCharts)) {
- fetchStatisticCharts();
- }
- return availableCharts.stream().filter(chart -> StringUtils.containsAnyIgnoreCase(getDisplayChartName(chart), filter))
- .collect(Collectors.toList());
- }
-
- public boolean isCaseByFinishedTime(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isCaseByFinishedTime(chart) && Objects.nonNull(chart.getDonutChartModel());
- }
-
- public boolean isCaseByFinishedTask(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isCaseByFinishedTask(chart) && Objects.nonNull(chart.getDonutChartModel());
- }
-
- public boolean isElapsedTimeByCaseCategory(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isElapsedTimeByCaseCategory(chart) && Objects.nonNull(chart.getBarChartModel());
- }
-
- public boolean isCaseByState(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isCaseByState(chart) && Objects.nonNull(chart.getDonutChartModel());
- }
-
- public boolean isTaskByPriority(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isTaskByPriority(chart) && Objects.nonNull(chart.getDonutChartModel());
- }
-
- public boolean isTaskByExpiry(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isTaskByExpiry(chart) && Objects.nonNull(chart.getBarChartModel());
- }
-
- public boolean isCasesByCategory(StatisticChart chart) {
- if (chart == null) {
- return false;
- }
- return StatisticService.getInstance().isCasesByCategory(chart) && Objects.nonNull(chart.getBarChartModel());
- }
-
- public List completeStatisticChart(String filter) {
- return getAvailableCharts().stream().filter(chart -> getDisplayChartName(chart).contains(filter))
- .collect(Collectors.toList());
- }
-
- public List getAvailableCharts() {
- return availableCharts;
- }
-
- public void setAvailableCharts(List availableCharts) {
- this.availableCharts = availableCharts;
- }
-
- public String getDisplayChartName(StatisticChart chart) {
- if (chart == null) {
- return "";
- }
- var displayName = StatisticService.getInstance().getDisplayNameInUserLanguageForChart(chart);
- return Objects.isNull(displayName) ? chart.getName() : displayName.getValue();
- }
-
- public StatisticChart getSelectedChart() {
- return selectedChart;
- }
-
- public void setSelectedChart(StatisticChart selectedChart) {
- this.selectedChart = selectedChart;
- }
-
- public void drilldownCaseByState(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- if (selectedStatisticChart == null) {
- return;
- }
- StatisticChartDrilldownUtils.drilldownCaseByState(event, selectedStatisticChart);
- }
-
- private StatisticChart getSelectedStatisticChart(ItemSelectEvent event) {
- String selectedChartId = (String) event.getComponent().getAttributes().get("selectedChartId");
- var charts = StatisticService.getInstance().findAll();
- return charts.stream()
- .filter(chart -> StringUtils.equals(chart.getId(), selectedChartId))
- .findFirst().orElse(null);
- }
-
- public void drilldownTaskByPriority(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- if (selectedStatisticChart == null) {
- return;
- }
- StatisticChartDrilldownUtils.drilldownTaskByPriority(event, selectedStatisticChart);
- }
-
- public void toTaskByExpiryTaskList(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- if (selectedStatisticChart == null) {
- return;
- }
- StatisticChartDrilldownUtils.toTaskByExpiryTaskList(event, selectedStatisticChart);
- }
-
- public void toCasesByCategoryCaseList(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- if (selectedStatisticChart == null) {
- return;
- }
- StatisticChartDrilldownUtils.toCasesByCategoryCaseList(event, selectedStatisticChart);
- }
-
- public boolean isRenderedRefreshChartPoll() {
- return isRenderedRefreshChartPoll;
- }
-
- public long getStatisticChartScalingInterval() {
- return statisticChartScalingInterval;
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/ElapsedTimeDetailsBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/ElapsedTimeDetailsBean.java
deleted file mode 100644
index ff541b5955e..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/ElapsedTimeDetailsBean.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package ch.ivy.addon.portalkit.bean;
-
-import java.io.Serializable;
-
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ViewScoped;
-
-import org.primefaces.model.SortMeta;
-
-import ch.ivy.addon.portalkit.dto.DisplayName;
-import ch.ivy.addon.portalkit.service.StatisticService;
-import ch.ivy.addon.portalkit.statistics.StatisticChart;
-import ch.ivy.addon.portalkit.statistics.StatisticChartConstants;
-import ch.ivy.addon.portalkit.util.DateTimeFormatterUtils;
-import ch.ivy.addon.portalkit.util.SortFieldUtil;
-import ch.ivy.addon.portalkit.util.UserUtils;
-import ch.ivyteam.ivy.environment.Ivy;
-
-@ManagedBean
-@ViewScoped
-public class ElapsedTimeDetailsBean implements Serializable {
- private static final long serialVersionUID = 1L;
-
- private String selectedCaseCategory;
- private String chartName;
-
- public void initialize(String caseCategory, StatisticChart statisticChart) {
- setSelectedCaseCategory(caseCategory);
- String currentLanguage = UserUtils.getUserLanguage();
- chartName = statisticChart.getNames().stream()
- .filter(name -> StatisticService.equalsLanguageLocale(name, currentLanguage))
- .map(DisplayName::getValue)
- .findFirst().orElse("");
- }
-
- public String getSelectedCaseCategory() {
- return selectedCaseCategory;
- }
-
- public void setSelectedCaseCategory(String selectedCaseCategory) {
- this.selectedCaseCategory = selectedCaseCategory;
- }
-
- public String getExcelFileName() {
- String fileName = chartName + "_" + selectedCaseCategory;
- fileName = fileName.replace(" ", "_");
- if (Ivy.cms().co(StatisticChartConstants.NO_CATEGORY_CMS).equals(selectedCaseCategory)) {
- fileName = fileName.replace("[", "").replace("]", "");
- }
- return fileName;
- }
-
- public String calculateElapsedTime(Number secondsValue) {
- return DateTimeFormatterUtils.formatToExactTime(secondsValue);
- }
-
- public SortMeta getSortById() {
- return SortFieldUtil.buildSortMeta("ID", false);
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/StatisticChartCreationBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/StatisticChartCreationBean.java
deleted file mode 100644
index a5f298db15a..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/StatisticChartCreationBean.java
+++ /dev/null
@@ -1,403 +0,0 @@
-package ch.ivy.addon.portalkit.bean;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.PostConstruct;
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ViewScoped;
-import javax.faces.context.FacesContext;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.primefaces.model.charts.bar.BarChartModel;
-import org.primefaces.model.charts.donut.DonutChartModel;
-
-import ch.ivy.addon.portalkit.bo.CaseStateStatistic;
-import ch.ivy.addon.portalkit.bo.CaseCategoryStatistic;
-import ch.ivy.addon.portalkit.bo.ElapsedTimeStatistic;
-import ch.ivy.addon.portalkit.bo.ExpiryStatistic;
-import ch.ivy.addon.portalkit.bo.PriorityStatistic;
-import ch.ivy.addon.portalkit.enums.GlobalVariable;
-import ch.ivy.addon.portalkit.enums.StatisticChartType;
-import ch.ivy.addon.portalkit.enums.StatisticTimePeriodSelection;
-import ch.ivy.addon.portalkit.service.GlobalSettingService;
-import ch.ivy.addon.portalkit.service.StatisticService;
-import ch.ivy.addon.portalkit.statistics.StatisticChartQueryUtils;
-import ch.ivy.addon.portalkit.statistics.StatisticFilter;
-import ch.ivyteam.ivy.security.IRole;
-import ch.ivyteam.ivy.security.IUser;
-import ch.ivyteam.ivy.workflow.CaseState;
-import ch.ivyteam.ivy.workflow.WorkflowPriority;
-import ch.ivyteam.ivy.workflow.query.CaseQuery;
-import ch.ivyteam.ivy.workflow.query.TaskQuery;
-
-@ManagedBean
-@ViewScoped
-public class StatisticChartCreationBean implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private DonutChartModel taskByPriorityModel;
- private DonutChartModel caseByStateModel;
- private DonutChartModel caseByFinishedTimeModel;
- private DonutChartModel caseByFinishedTaskModel;
- private BarChartModel taskByExpiryModel;
- private BarChartModel elapsedTimeModel;
- private BarChartModel casesByCategoryModel;
- private StatisticService statisticService;
- private Map> customFieldFilters = new HashMap<>();
-
- public static final int CASE_CATEGORIES_TYPE = 0;
- public static final int MINIMUM_STATISTIC_CHART_SCALING_INTERVAL = 10;
-
- @PostConstruct
- public void init() {
- statisticService = StatisticService.getInstance();
- initStatisticChart();
- }
-
- /**
- * Create a StatisticChart's placeholder when the data is collecting.
- */
- private void initStatisticChart() {
- taskByPriorityModel = statisticService.createDonutChartPlaceholder();
- caseByStateModel = statisticService.createDonutChartPlaceholder();
- caseByFinishedTimeModel = statisticService.createDonutChartPlaceholder();
- caseByFinishedTaskModel = statisticService.createDonutChartPlaceholder();
- taskByExpiryModel = statisticService.createBarChartPlaceholder();
- elapsedTimeModel = statisticService.createBarChartPlaceholder();
- casesByCategoryModel = statisticService.createBarChartPlaceholder();
- }
-
- /**
- * Update filters
- *
- * @param filter
- * @param oldFilter
- */
- public void updateFilters(StatisticFilter filter, StatisticFilter oldFilter) {
- filter.setCustomFieldFilters(this.customFieldFilters);
- if(filter.getTimePeriodSelection() != StatisticTimePeriodSelection.CUSTOM) {
- filter.setCreatedDateFrom(null);
- filter.setCreatedDateTo(null);
- }
- if (oldFilter != null) {
- setOldFiltersFromCurrentValues(filter, oldFilter);
- }
- }
-
- public void clearChartModels() {
- initStatisticChart();
- }
-
- private void setOldFiltersFromCurrentValues(StatisticFilter filter, StatisticFilter oldFilter) {
- oldFilter.setTimePeriodSelection(filter.getTimePeriodSelection());
- Date createdDateFrom = filter.getCreatedDateFrom();
- Date createdDateTo = filter.getCreatedDateTo();
- oldFilter.setCreatedDateFrom(createdDateFrom == null ? null : new Date(createdDateFrom.getTime()));
- oldFilter.setCreatedDateTo(createdDateTo == null ? null : new Date(createdDateTo.getTime()));
- oldFilter.setIsAllCaseStatesSelected(filter.getIsAllCaseStatesSelected());
- oldFilter.setIsAllRolesSelected(filter.getIsAllRolesSelected());
- oldFilter.setIsAllTaskPrioritiesSelected(filter.getIsAllTaskPrioritiesSelected());
-
- updateCaseCategory(filter, oldFilter);
-
- if (!filter.getIsAllRolesSelected()) {
- updateOldListFromNewList(oldFilter.getSelectedRoles(), filter.getSelectedRoles());
- }
- if (!filter.getIsAllCaseStatesSelected()) {
- updateOldListFromNewList(oldFilter.getSelectedCaseStates(), filter.getSelectedCaseStates());
- }
- if (!filter.getIsAllTaskPrioritiesSelected()) {
- updateOldListFromNewList(oldFilter.getSelectedTaskPriorities(), filter.getSelectedTaskPriorities());
- }
- oldFilter.setCustomFieldFilters(filter.getCustomFieldFilters());
- }
-
- private void updateCaseCategory(StatisticFilter filter, StatisticFilter oldFilter) {
- filter.setSelectedCaseCategories(filter.getCaseCategories().getCategoryPaths());
- oldFilter.setSelectedCaseCategories(filter.getSelectedCaseCategories());
- }
-
- public boolean checkIfAnyFilterChanges(StatisticFilter filter, StatisticFilter oldFilter) {
- if (oldFilter.getTimePeriodSelection() != filter.getTimePeriodSelection()) {
- return true;
- }
- if (isDateChanged(oldFilter.getCreatedDateFrom(), filter.getCreatedDateFrom())) {
- return true;
- }
- if (isDateChanged(oldFilter.getCreatedDateTo(), filter.getCreatedDateTo())) {
- return true;
- }
- if (checkIfAnyCaseStateChanged(filter, oldFilter)) {
- return true;
- }
- if (checkIfAnyTaskPriorityChanged(filter, oldFilter)) {
- return true;
- }
- if (checkIfAnyCaseCategoryChanged(filter, oldFilter)) {
- return true;
- }
- if (checkIfAnyRoleChanged(filter, oldFilter)) {
- return true;
- }
- return checkIfAnyCustomFieldChanged(filter, oldFilter);
- }
-
- private boolean checkIfAnyCaseStateChanged(StatisticFilter filter, StatisticFilter oldFilter) {
- //compare check box select all of case states
- if (oldFilter.getIsAllCaseStatesSelected() != filter.getIsAllCaseStatesSelected()) {
- return true;
- }
- //compare other check box of case states if select all is not checked
- return !filter.getIsAllCaseStatesSelected() && !oldFilter.getSelectedCaseStates().equals(filter.getSelectedCaseStates());
- }
-
- private boolean checkIfAnyTaskPriorityChanged(StatisticFilter filter, StatisticFilter oldFilter) {
- //compare check box select all of task priorities
- if (oldFilter.getIsAllTaskPrioritiesSelected() != filter.getIsAllTaskPrioritiesSelected()) {
- return true;
- }
- //compare other check box of task priorities if select all is not checked
- return !filter.getIsAllTaskPrioritiesSelected() && !oldFilter.getSelectedTaskPriorities().equals(filter.getSelectedTaskPriorities());
- }
-
- private boolean checkIfAnyCaseCategoryChanged(StatisticFilter filter, StatisticFilter oldFilter) {
- return !oldFilter.getCaseCategories().getCategoryPaths().equals(filter.getCaseCategories().getCategoryPaths());
- }
-
- private boolean checkIfAnyRoleChanged(StatisticFilter filter, StatisticFilter oldFilter) {
- //compare check box select all of roles
- if (oldFilter.getIsAllRolesSelected() != filter.getIsAllRolesSelected()) {
- return true;
- }
- //compare other check box of roles if select all is not checked
- return !filter.getIsAllRolesSelected() && !oldFilter.getSelectedRoles().equals(filter.getSelectedRoles());
- }
-
- private boolean checkIfAnyCustomFieldChanged(StatisticFilter filter, StatisticFilter oldFilter) {
- for (Map.Entry> entry : filter.getCustomFieldFilters().entrySet()) {
- List list = oldFilter.getCustomFieldFilters().get(entry.getKey());
- if (list != null && entry.getValue() != null && !CollectionUtils.isEqualCollection(list, entry.getValue())) {
- return true;
- }
- }
- return false;
- }
-
- private boolean isDateChanged(Date oldDate, Date currentDate) {
- if (oldDate == null) {
- return currentDate != null;
- }
- if (currentDate == null) {
- return true;
- }
- return oldDate.compareTo(currentDate) != 0;
- }
-
- public void updateRolesCheckboxes(StatisticFilter filter) {
- List selectedRoles = filter.getSelectedRoles();
- if (filter.getIsAllRolesSelected()) {
- for (Object obj : filter.getRoles()) {
- if (obj instanceof IUser) {
- IUser user = (IUser) obj;
- addToListIfNotExist(selectedRoles, user.getMemberName());
- } else if (obj instanceof IRole) {
- IRole role = (IRole) obj;
- addToListIfNotExist(selectedRoles, role.getMemberName());
- }
- }
- } else {
- selectedRoles.clear();
- }
- }
-
- public void updateCaseStatesCheckboxes(StatisticFilter filter) {
- List selectedCaseStates = filter.getSelectedCaseStates();
- if (filter.getIsAllCaseStatesSelected()) {
- for (CaseState state : filter.getCaseStates()) {
- addToListIfNotExist(selectedCaseStates, state);
- }
- } else {
- selectedCaseStates.clear();
- }
- }
-
- public void updateTaskPrioritiesCheckboxes(StatisticFilter filter) {
- List selectedTaskPriorities = filter.getSelectedTaskPriorities();
- if (filter.getIsAllTaskPrioritiesSelected()) {
- for (WorkflowPriority priority : filter.getTaskPriorities()) {
- addToListIfNotExist(selectedTaskPriorities, priority);
- }
- } else {
- selectedTaskPriorities.clear();
- }
- }
-
- private void updateOldListFromNewList(List oldList, List newList) {
- oldList.clear();
- if (!newList.isEmpty()) {
- oldList.addAll(newList);
- }
- }
-
- private void addToListIfNotExist(List list, T element) {
- if (!list.contains(element)) {
- list.add(element);
- }
- }
-
- /**
- * Create model for "Task by Priority" chart from given statistic filter
- *
- * @param filter statistic filter
- */
- public void updateTaskByPriorityModel(StatisticFilter filter) {
- TaskQuery query = StatisticChartQueryUtils.generateTaskQuery(filter);
- PriorityStatistic priorityStatisticData = statisticService.getPriorityStatisticData(query);
- taskByPriorityModel = statisticService.generateTaskByPriorityModel(priorityStatisticData, false);
- }
-
- /**
- * Create model for "Task by Expiry Date" chart from given statistic filter
- *
- * @param filter statistic filter
- */
- public void updateTaskByExpiryModel(StatisticFilter filter) {
- TaskQuery taskQuery = StatisticChartQueryUtils.generateTaskQueryForExpiry(filter);
- ExpiryStatistic expiryStatisticData = statisticService.getExpiryStatisticData(taskQuery);
- taskByExpiryModel = statisticService.generateTaskByExpiryModel(expiryStatisticData, false, StringUtils.EMPTY, StringUtils.EMPTY, StringUtils.EMPTY);
- }
-
- /**
- * Create model for "Case by State" chart from given statistic filter
- *
- * @param filter statistic filter
- */
- public void updateCaseByStateModel(StatisticFilter filter) {
- CaseQuery caseQuery = StatisticChartQueryUtils.generateCaseQueryForCaseState(filter);
- CaseStateStatistic caseStateStatisticData = statisticService.getCaseStateStatisticData(caseQuery);
- caseByStateModel = statisticService.generateCaseByStateModel(caseStateStatisticData,StatisticChartType.CASES_BY_STATE, false);
- }
-
- /**
- * Create model for "Case by Finished task" chart from given statistic filter
- * @param filter
- */
- public void updateCaseByFinishedTaskModel(StatisticFilter filter) {
- CaseQuery caseQuery = StatisticChartQueryUtils.generateCaseQueryForCaseHaveFinishedTask(filter);
- CaseStateStatistic caseStateStatisticData = statisticService.getCaseStateStatisticData(caseQuery);
- caseByFinishedTaskModel = statisticService.generateCaseByStateModel(caseStateStatisticData, StatisticChartType.CASES_BY_FINISHED_TASK, false);
- }
-
- /**
- * Create model for "Case by Finished time" chart from given statistic filter
- * @param filter
- */
- public void updateCaseByFinishedTimeModel(StatisticFilter filter) {
- CaseQuery caseQuery = StatisticChartQueryUtils.generateCaseQueryByFinishedTime(filter);
- CaseStateStatistic caseStateStatisticData = statisticService.getCaseStateStatisticData(caseQuery);
- caseByFinishedTimeModel = statisticService.generateCaseByStateModel(caseStateStatisticData, StatisticChartType.CASES_BY_FINISHED_TIME, false);
- }
-
- /**
- * Create model for "Elapsed time by Case Category" chart from given statistic filter
- *
- * @param filter statistic filter
- */
- public void updateElapsedTimeByCaseCategory(StatisticFilter filter) {
- CaseQuery caseQuery = StatisticChartQueryUtils.generateCaseQuery(filter, true);
- ElapsedTimeStatistic elapsedTimeStatisticData = statisticService.getElapsedTimeStatisticData(caseQuery);
- setElapsedTimeModel(statisticService.generateElapsedTimeModel(elapsedTimeStatisticData, false));
- }
-
- /**
- * Create model for "Cases by Category" chart from given statistic filter
- *
- * @param filter statistic filter
- */
- public void updateCasesByCategoryModel(StatisticFilter filter) {
- CaseQuery caseQuery = StatisticChartQueryUtils.generateCaseQueryForCasesByCategoryChart(filter, null);
- CaseCategoryStatistic caseCategoryStatisticData = statisticService.getCasesByCategoryStatisticData(caseQuery,filter.getCaseCategories().getCategoryPaths());
- casesByCategoryModel = statisticService.generateCasesByCategoryModel(caseCategoryStatisticData, false);
- }
-
- public DonutChartModel getTaskByPriorityModel() {
- return taskByPriorityModel;
- }
-
- public void setTaskByPriorityModel(DonutChartModel taskByPriorityModel) {
- this.taskByPriorityModel = taskByPriorityModel;
- }
-
- public DonutChartModel getCaseByStateModel() {
- return caseByStateModel;
- }
-
- public void setCaseByStateModel(DonutChartModel caseByStateModel) {
- this.caseByStateModel = caseByStateModel;
- }
-
- public BarChartModel getTaskByExpiryModel() {
- return taskByExpiryModel;
- }
-
- public void setTaskByExpiryModel(BarChartModel taskByExpiryModel) {
- this.taskByExpiryModel = taskByExpiryModel;
- }
-
- public BarChartModel getElapsedTimeModel() {
- return elapsedTimeModel;
- }
-
- public void setElapsedTimeModel(BarChartModel elapsedTimeModel) {
- this.elapsedTimeModel = elapsedTimeModel;
- }
-
- public DonutChartModel getCaseByFinishedTaskModel() {
- return caseByFinishedTaskModel;
- }
-
- public void setCaseByFinishedTaskModel(DonutChartModel caseByFinishedTaskModel) {
- this.caseByFinishedTaskModel = caseByFinishedTaskModel;
- }
-
- public DonutChartModel getCaseByFinishedTimeModel() {
- return caseByFinishedTimeModel;
- }
-
- public void setCaseByFinishedTimeModel(DonutChartModel caseByFinishedTimeModel) {
- this.caseByFinishedTimeModel = caseByFinishedTimeModel;
- }
-
- public BarChartModel getCasesByCategoryModel() {
- return casesByCategoryModel;
- }
-
- public void setCasesByCategoryModel(BarChartModel casesByCategoryModel) {
- this.casesByCategoryModel = casesByCategoryModel;
- }
-
- public List populateCustomStringFieldAutoComplete(String query) {
- Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
- String fieldName = params.get("fieldName");
- return statisticService.getCustomFields(fieldName, query);
- }
-
- public void setCustomFieldFilter(String customFieldName, List values) {
- this.customFieldFilters.put(customFieldName, values);
- }
-
- public long getStatisticChartScalingInterval() {
- String statisticChartScalingInterval = GlobalSettingService.getInstance().findGlobalSettingValue(GlobalVariable.STATISTIC_CHART_SCALING_INTERVAL);
- return StringUtils.isNotBlank(statisticChartScalingInterval) ? Long.valueOf(statisticChartScalingInterval) : 0;
- }
-
- public int getMinimumStatisticChartScalingInterval() {
- return MINIMUM_STATISTIC_CHART_SCALING_INTERVAL;
- }
-}
\ No newline at end of file
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/StatisticDashboardBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/StatisticDashboardBean.java
deleted file mode 100644
index d4555dbf550..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/StatisticDashboardBean.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package ch.ivy.addon.portalkit.bean;
-
-import java.io.Serializable;
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ViewScoped;
-
-import org.apache.commons.lang3.StringUtils;
-import org.primefaces.event.ItemSelectEvent;
-import org.primefaces.model.charts.donut.DonutChartModel;
-
-import ch.ivy.addon.portalkit.dto.DisplayName;
-import ch.ivy.addon.portalkit.enums.StatisticChartType;
-import ch.ivy.addon.portalkit.enums.StatisticTimePeriodSelection;
-import ch.ivy.addon.portalkit.ivydata.bo.IvyLanguage;
-import ch.ivy.addon.portalkit.ivydata.service.impl.LanguageService;
-import ch.ivy.addon.portalkit.jsf.Attrs;
-import ch.ivy.addon.portalkit.service.DateTimeGlobalSettingService;
-import ch.ivy.addon.portalkit.service.StatisticService;
-import ch.ivy.addon.portalkit.statistics.StatisticChart;
-import ch.ivy.addon.portalkit.statistics.StatisticChartDrilldownUtils;
-import ch.ivy.addon.portalkit.statistics.StatisticFilter;
-import ch.ivyteam.ivy.environment.Ivy;
-
-@ManagedBean
-@ViewScoped
-public class StatisticDashboardBean implements Serializable {
- private static final long serialVersionUID = 1L;
- private static final int YEAR_CHART_WIDTH = 750;
- private static final int MONTH_CHART_WIDTH = 500;
- private static final int WEEK_CHART_WIDTH = 600;
- private static final int DAY_CHART_WIDTH = 500;
- private static final String GREATER_EQUAL = ">= %s";
- private static final String LESS_EQUAL = "<= %s";
- private static final String DASH = "%s - %s";
- private StatisticService statisticService = StatisticService.getInstance();
- private ItemSelectEvent taskByExpiryItemSelectEvent;
- private ItemSelectEvent casesByCategoryItemSelectEvent;
-
- public String getChartWidthStyle(List chartList) {
- List chartIdSuffixes = new ArrayList<>();
- for (StatisticChart chart : chartList) {
- String chartId = chart.getId();
- if (chartId.contains("_")) {
- // chart with format: id + _ + suffix is lower level (month/week/day/hour)
- // chart when drilldown
- chartIdSuffixes.add(chartId.substring(chartId.indexOf('_') + 1));
- }
- }
- int maxWidth = 0;
- for (String suffix : chartIdSuffixes) {
- if (StatisticService.selectThisYear(suffix)) {
- maxWidth = Math.max(maxWidth, YEAR_CHART_WIDTH);
- } else if (StatisticService.selectWeekOfMonth(suffix)) {
- maxWidth = Math.max(maxWidth, WEEK_CHART_WIDTH);
- } else if (StatisticService.selectMonthOfYear(suffix)) {
- maxWidth = Math.max(maxWidth, MONTH_CHART_WIDTH);
- } else if (StatisticService.selectDayOfWeek(suffix)) {
- maxWidth = Math.max(maxWidth, DAY_CHART_WIDTH);
- }
- }
- if (maxWidth > 0) {
- return String.format("width: %spx", maxWidth);
- }
- return "";
- }
-
- public void drilldownTaskByPriority(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- StatisticChartDrilldownUtils.drilldownTaskByPriority(event, selectedStatisticChart);
- }
-
- public void drilldownCaseByState(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- StatisticChartDrilldownUtils.drilldownCaseByState(event, selectedStatisticChart);
- }
-
- public void drilldownElapsedTime(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- StatisticChartDrilldownUtils.drilldownElapsedTime(event, selectedStatisticChart);
- }
-
- public void onSelectDrilldownTaskByExpiry(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- taskByExpiryItemSelectEvent = event;
- StatisticChartDrilldownUtils.onSelectDrilldownTaskByExpiry(event, selectedStatisticChart);
- }
-
- public void toTaskByExpiryTaskList(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- StatisticChartDrilldownUtils.toTaskByExpiryTaskList(event, selectedStatisticChart);
- }
-
- // It's used for "Go to task list" selection from Statistic Dashboard
- public void goToExpiriedTaskList() {
- toTaskByExpiryTaskList(taskByExpiryItemSelectEvent);
- releaseJSFEvent();
- }
-
- public void drilldownTaskByExpiry() {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(taskByExpiryItemSelectEvent);
- StatisticChartDrilldownUtils.drilldownTaskByExpiry(taskByExpiryItemSelectEvent, selectedStatisticChart);
- releaseJSFEvent();
- }
-
- public void drilldownCasesByCategory() {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(casesByCategoryItemSelectEvent);
- StatisticChartDrilldownUtils.drilldownCasesByCategory(casesByCategoryItemSelectEvent, selectedStatisticChart);
- releaseJSFEvent();
- }
-
- public void onSelectDrilldownCasesByCategory(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- casesByCategoryItemSelectEvent = event;
- StatisticChartDrilldownUtils.onSelectDrilldownCasesByCategory(event, selectedStatisticChart);
- }
-
- //It's used for "Go to case list" selection from Statistic Dashboard
- public void goToCasesByCategoryList() {
- toCasesByCategoryList(casesByCategoryItemSelectEvent);
- releaseJSFEvent();
- }
-
- public void toCasesByCategoryList(ItemSelectEvent event) {
- StatisticChart selectedStatisticChart = getSelectedStatisticChart(event);
- StatisticChartDrilldownUtils.toCasesByCategoryCaseList(event, selectedStatisticChart);
- }
-
- private void releaseJSFEvent() {
- // Do not store JSF Event in a JSF bean that is not bound to request scope
- this.taskByExpiryItemSelectEvent = null;
- this.casesByCategoryItemSelectEvent = null;
- }
-
- public StatisticChart createDefaultEmptyChart() {
- StatisticChart emptyChart = new StatisticChart();
- emptyChart.setNames(generateNamesForEmptyChart());
- emptyChart.setType(StatisticChartType.TASK_BY_PRIORITY);
- StatisticService service = StatisticService.getInstance();
- DonutChartModel model = service.createDonutChartPlaceholder();
- model.getOptions().getTitle().setText(Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/chart/emptystate/defaultEmptyMessages"));
- emptyChart.setDonutChartModel(model);
- return emptyChart;
- }
-
- private List generateNamesForEmptyChart() {
- List namesForEmptyChart = new ArrayList<>();
- IvyLanguage ivyLanguage = LanguageService.getInstance().getIvyLanguageOfUser();
- for (String language : ivyLanguage.getSupportedLanguages()) {
- DisplayName name = new DisplayName();
- name.setLocale(Locale.forLanguageTag(language));
- name.setValue(Ivy.cms().coLocale(("/ch.ivy.addon.portalkit.ui.jsf/statistic/chart/statistics"), language));
- namesForEmptyChart.add(name);
- }
- return namesForEmptyChart;
- }
-
- private static StatisticChart getSelectedStatisticChart(ItemSelectEvent event) {
- String selectedChartId = (String) event.getComponent().getAttributes().get("selectedChartId");
- List statisticCharts =
- Attrs.currentContext().getAttribute("#{data.statisticChartList}", List.class);
- for (StatisticChart chart : statisticCharts) {
- if (chart.getId() == selectedChartId) {
- return chart;
- }
- }
- return null;
- }
-
- public String concatCreatedDate(StatisticFilter filter) {
- StatisticTimePeriodSelection timeSelection = filter.getTimePeriodSelection();
- if (timeSelection != StatisticTimePeriodSelection.CUSTOM) {
- return timeSelection.getLabel();
- }
-
- Date createdDateForm = filter.getCreatedDateFrom();
- Date createdDateTo = filter.getCreatedDateTo();
- DateFormat formatter = DateTimeGlobalSettingService.getInstance().getDefaultDateTimeFormatter();
-
- if (createdDateForm != null && createdDateTo != null) {
- return String.format(DASH, formatter.format(createdDateForm), formatter.format(createdDateTo));
- }
-
- if (createdDateForm != null) {
- return String.format(GREATER_EQUAL, formatter.format(createdDateForm));
- }
-
- if (createdDateTo != null) {
- return String.format(LESS_EQUAL, formatter.format(createdDateTo));
- }
-
- return StringUtils.EMPTY;
- }
-
- public boolean isChartModelNotInitialized(List statisticChartList) {
- for (StatisticChart statisticChart : statisticChartList) {
- if (statisticChart.getBarChartModel() == null && statisticChart.getDonutChartModel() == null) {
- return true;
- }
- }
- return false;
- }
-
- public boolean isTaskByPriority(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isTaskByPriority(statisticChart);
- }
-
- public boolean isTaskByExpiry(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isTaskByExpiry(statisticChart);
- }
-
- public boolean isTaskByExpiryHour(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isTaskByExpiryHour(statisticChart);
- }
-
- public boolean isCaseByState(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isCaseByState(statisticChart);
- }
-
- public boolean isCaseByFinishedTask(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isCaseByFinishedTask(statisticChart);
- }
-
- public boolean isCaseByFinishedTime(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isCaseByFinishedTime(statisticChart);
- }
-
- public boolean isElapsedTimeByCaseCategory(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isElapsedTimeByCaseCategory(statisticChart);
- }
-
- public boolean isCasesByCategory(StatisticChart statisticChart) {
- if (statisticChart == null) {
- return false;
- }
- return statisticService.isCasesByCategory(statisticChart);
- }
-
- public String getId(StatisticChart chart) {
- return chart.getId();
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/TaskAnalysisWidgetBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/TaskAnalysisWidgetBean.java
deleted file mode 100644
index cc917cfdec7..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/bean/TaskAnalysisWidgetBean.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package ch.ivy.addon.portalkit.bean;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.annotation.PostConstruct;
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ViewScoped;
-
-import org.primefaces.event.ToggleEvent;
-import org.primefaces.model.SortMeta;
-import org.primefaces.model.Visibility;
-
-import ch.ivy.addon.portalkit.datamodel.internal.TaskAnalysisLazyDataModel;
-import ch.ivy.addon.portalkit.enums.TaskAndCaseAnalysisColumn;
-import ch.ivy.addon.portalkit.exporter.Exporter;
-import ch.ivy.addon.portalkit.service.GlobalSettingService;
-import ch.ivy.addon.portalkit.service.TaskAnalysisFilterService;
-import ch.ivy.addon.portalkit.taskfilter.impl.TaskAnalysisFilterData;
-import ch.ivy.addon.portalkit.util.SortFieldUtil;
-import ch.ivyteam.ivy.environment.Ivy;
-
-@ManagedBean
-@ViewScoped
-public class TaskAnalysisWidgetBean implements Serializable {
-
- private static final long serialVersionUID = 1L;
- private TaskAnalysisLazyDataModel dataModel;
- private Map columns;
- private boolean isHideCaseCreator;
- private boolean isCaseOwnerEnabled;
-
- public TaskAnalysisWidgetBean() {
- }
-
- @PostConstruct
- public void init() {
- isCaseOwnerEnabled = GlobalSettingService.getInstance().isCaseOwnerEnabled();
- isHideCaseCreator = GlobalSettingService.getInstance().isHideCaseCreator();
- Ivy.log().error(isHideCaseCreator);
- columns = new HashMap<>();
- for(TaskAndCaseAnalysisColumn column : TaskAndCaseAnalysisColumn.values()) {
- if (column.name().equals(TaskAndCaseAnalysisColumn.CASE_CREATOR.name())
- && isHideCaseCreator) {
- columns.put(column.name(), false);
- }
- columns.put(column.name(), column.isDefaultColumn());
- }
-
- }
-
- public TaskAnalysisLazyDataModel getDataModel() {
- return dataModel;
- }
-
- public void setDataModel(TaskAnalysisLazyDataModel dataModel) {
- this.dataModel = dataModel;
- }
-
- public boolean isDeleteFilterEnabledFor(TaskAnalysisFilterData filterData) {
- TaskAnalysisFilterService filterService = new TaskAnalysisFilterService();
- return filterService.isDeleteFilterEnabledFor(filterData);
- }
-
- public void onToggleColumns(ToggleEvent e) {
- TaskAndCaseAnalysisColumn toggledColumn = TaskAndCaseAnalysisColumn.values()[(Integer) e.getData()];
- if (isHideCaseCreator() && TaskAndCaseAnalysisColumn.CASE_CREATOR.equals(toggledColumn)) {
- toggledColumn = TaskAndCaseAnalysisColumn.CASE_STATE;
- }
-
- // If the selected column has index of "Case Owner" column
- // but the case owner feature is disabled
- // shift the selected column to "Application"
- if (!isCaseOwnerEnabled() && TaskAndCaseAnalysisColumn.CASE_OWNER.equals(toggledColumn)) {
- toggledColumn = TaskAndCaseAnalysisColumn.APPLICATION;
- }
- columns.put(toggledColumn.name(), e.getVisibility() == Visibility.VISIBLE);
- }
-
- public Map getColumns() {
- return columns;
- }
-
- public void setColumns(Map columns) {
- this.columns = columns;
- }
-
- public int getMaxTaskNumberInExcel() {
- return Exporter.MAX_ROW_NUMBER_IN_EXCEL;
- }
-
-
- public boolean isHideCaseCreator() {
- return isHideCaseCreator;
- }
-
- public void setHideCaseCreator(boolean isHideCaseCreator) {
- this.isHideCaseCreator = isHideCaseCreator;
- }
-
- public boolean isCaseOwnerEnabled() {
- return isCaseOwnerEnabled;
- }
-
- public void setCaseOwnerEnabled(boolean isCaseOwnerEnabled) {
- this.isCaseOwnerEnabled = isCaseOwnerEnabled;
- }
-
- public SortMeta getSortByTaskName() {
- return SortFieldUtil.buildSortMeta("TASK_NAME", false);
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/CaseCategoryFilter.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/CaseCategoryFilter.java
index e1facab3d3c..b5c1a20fa09 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/CaseCategoryFilter.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/CaseCategoryFilter.java
@@ -32,7 +32,7 @@ public class CaseCategoryFilter extends CaseFilter {
@Override
public String label() {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/chart/caseCategory");
+ return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/caseCategory");
}
@Override
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/TaskAnalysisCaseFilterContainer.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/TaskAnalysisCaseFilterContainer.java
deleted file mode 100644
index 34a91d7aeab..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/casefilter/impl/TaskAnalysisCaseFilterContainer.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package ch.ivy.addon.portalkit.casefilter.impl;
-
-import java.util.Collections;
-
-import ch.ivy.addon.portalkit.comparator.CaseFilterComparator;
-
-public class TaskAnalysisCaseFilterContainer extends DefaultCaseFilterContainer {
-
- public TaskAnalysisCaseFilterContainer() {
- super();
- Collections.sort(filters, new CaseFilterComparator());
- }
-
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/converter/StatisticConverter.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/converter/StatisticConverter.java
deleted file mode 100644
index bd136d4feb2..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/converter/StatisticConverter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package ch.ivy.addon.portalkit.converter;
-
-import javax.faces.convert.FacesConverter;
-
-import ch.ivy.addon.portalkit.statistics.StatisticChart;
-
-@FacesConverter("statisticConverter")
-public class StatisticConverter extends AbstractConverter {
-
- @Override
- protected Class getType() {
- return StatisticConverter.class;
- }
-
- @Override
- protected boolean isEmptyObject(Object item) {
- if (item == null || !(item instanceof StatisticChart)) {
- return false;
- }
- var chart = (StatisticChart) item;
- return chart.getType() == null && chart.getNames() == null;
- }
-
- @Override
- protected StatisticChart createNewObject(String selectedValue) {
- var newChart = new StatisticChart();
- newChart.setName(selectedValue);
- return newChart;
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/datamodel/internal/ElapsedTimeLazyDataModel.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/datamodel/internal/ElapsedTimeLazyDataModel.java
deleted file mode 100644
index 3936cca0a30..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/datamodel/internal/ElapsedTimeLazyDataModel.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package ch.ivy.addon.portalkit.datamodel.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.primefaces.model.FilterMeta;
-import org.primefaces.model.LazyDataModel;
-import org.primefaces.model.SortMeta;
-import org.primefaces.model.SortOrder;
-
-import ch.ivy.addon.portalkit.bean.IvyComponentLogicCaller;
-import ch.ivy.addon.portalkit.constant.PortalConstants;
-import ch.ivy.addon.portalkit.enums.CaseSortField;
-import ch.ivy.addon.portalkit.ivydata.searchcriteria.CaseSearchCriteria;
-import ch.ivy.addon.portalkit.jsf.Attrs;
-import ch.ivy.addon.portalkit.util.PermissionUtils;
-import ch.ivyteam.ivy.jsf.primefaces.sort.SortMetaConverter;
-import ch.ivyteam.ivy.process.call.SubProcessCall;
-import ch.ivyteam.ivy.workflow.CaseState;
-import ch.ivyteam.ivy.workflow.ICase;
-import ch.ivyteam.ivy.workflow.query.CaseQuery;
-import ch.ivyteam.ivy.workflow.query.CaseQuery.OrderByColumnQuery;
-
-public class ElapsedTimeLazyDataModel extends LazyDataModel {
- private static final long serialVersionUID = 1L;
- protected final List data;
-
- protected String caseWidgetComponentId;
- protected int rowIndex;
- protected CaseSearchCriteria criteria;
- public ElapsedTimeLazyDataModel() {
- this("statistics-widget:statistic-dashboard-widget:elapsed-time-chart-details");
- }
-
- public ElapsedTimeLazyDataModel(String caseWidgetComponentId) {
- super();
- data = new ArrayList<>();
- this.caseWidgetComponentId = caseWidgetComponentId;
- buildCriteria();
- }
-
- @Override
- public List load(int first, int pageSize, Map sortBy, Map filterBy) {
- SortMetaConverter sort = new SortMetaConverter(sortBy);
- criteria.setSortField(sort.toField());
- criteria.setSortDescending(sort.toOrder() == SortOrder.DESCENDING);
- if (first == 0) {
- initializedDataModel();
- }
- List foundCases = findCases(criteria, first, pageSize);
- data.addAll(foundCases);
- return foundCases;
- }
-
- /**
- * Builds and converts CaseQuery to JsonQuery and put it into CaseSearchCriteria.
- */
- protected void buildQueryToSearchCriteria() {
- if (criteria.getCustomCaseQuery() == null) {
- CaseQuery customCaseQuery = SubProcessCall.withPath(PortalConstants.BUILD_CASE_QUERY_CALLABLE)
- .withStartSignature("buildCaseQuery()")
- .call()
- .get("caseQuery", CaseQuery.class);
- criteria.setCustomCaseQuery(customCaseQuery);
- }
- CaseQuery caseQuery = buildCaseQuery();
-
- /**
- * Filter CaseSearchCriteria with noCategory
- */
- if (StringUtils.isEmpty(criteria.getCategory())) {
- caseQuery.where().and().category().isEqual("");
- }
- buildSortCaseQuery(caseQuery);
- this.criteria.setFinalCaseQuery(caseQuery);
- }
-
-
- private CaseQuery buildCaseQuery() {
- return criteria.createQuery();
- }
-
- private List findCases(CaseSearchCriteria criteria, int first, int pageSize) {
- IvyComponentLogicCaller> findCaseCaller = new IvyComponentLogicCaller<>();
- int startIndex = first;
- int count = pageSize;
- if (startIndex < 0) {
- startIndex = 0;
- count = first + pageSize;
- }
- String componentId = Attrs.currentContext().getBuildInAttribute("clientId");
- return findCaseCaller.invokeComponentLogic(componentId, "#{logic.findCases}",
- new Object[] {criteria, startIndex, count});
- }
-
- private void initializedDataModel() {
- data.clear();
- buildQueryToSearchCriteria();
- setRowCount(getCaseCount(criteria));
- }
-
- private int getCaseCount(CaseSearchCriteria criteria) {
- IvyComponentLogicCaller countCaseCaller = new IvyComponentLogicCaller<>();
- String componentId = Attrs.currentContext().getBuildInAttribute("clientId");
- Long caseCount = countCaseCaller.invokeComponentLogic(componentId, "#{logic.countCases}", new Object[] { criteria });
- return caseCount.intValue();
- }
-
- private void buildCriteria() {
- criteria = new CaseSearchCriteria();
- criteria.setBusinessCase(true);
- criteria.setIncludedStates(new ArrayList<>(Arrays.asList(CaseState.DONE)));
- criteria.setSortField(CaseSortField.ID.toString());
- criteria.setSortDescending(true);
- criteria.setAdminQuery(PermissionUtils.checkReadAllCasesPermission());
- }
-
- private void buildSortCaseQuery(CaseQuery caseQuery) {
- CaseSortField sortColumn = CaseSortField.valueOf(criteria.getSortField());
- OrderByColumnQuery orderQuery = null;
- if (sortColumn.equals(CaseSortField.ELAPSED_TIME)) {
- orderQuery = caseQuery.orderBy().businessRuntime();
- if (criteria.isSortDescending()) {
- orderQuery.descending();
- } else {
- orderQuery.ascending();
- }
- }
- }
-
- public void setCategory(String category) {
- criteria.setCategory(category);
- }
-
- public CaseSearchCriteria getCriteria() {
- return criteria;
- }
-
- public void setCriteria(CaseSearchCriteria criteria) {
- this.criteria = criteria;
- }
-
- @Override
- public void setRowIndex(int index) {
- int idx = index;
- if (idx >= data.size()) {
- idx = -1;
- }
- this.rowIndex = idx;
- }
-
- @Override
- public ICase getRowData() {
- return data.get(rowIndex);
- }
-
- @Override
- public boolean isRowAvailable() {
- if (data == null) {
- return false;
- }
- return rowIndex >= 0 && rowIndex < data.size();
- }
-
- @Override
- public int count(Map filterBy) {
- return 0;
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/datamodel/internal/TaskAnalysisLazyDataModel.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/datamodel/internal/TaskAnalysisLazyDataModel.java
deleted file mode 100644
index 87668085503..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/datamodel/internal/TaskAnalysisLazyDataModel.java
+++ /dev/null
@@ -1,455 +0,0 @@
-package ch.ivy.addon.portalkit.datamodel.internal;
-
-import static ch.ivy.addon.portalkit.enums.FilterType.ALL_ADMINS;
-import static ch.ivy.addon.portalkit.enums.FilterType.ALL_USERS;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.faces.event.ValueChangeEvent;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.collections.CollectionUtils;
-import org.primefaces.model.FilterMeta;
-import org.primefaces.model.SortMeta;
-import org.primefaces.model.SortOrder;
-
-import ch.ivy.addon.portalkit.casefilter.CaseFilter;
-import ch.ivy.addon.portalkit.casefilter.CaseFilterContainer;
-import ch.ivy.addon.portalkit.casefilter.impl.TaskAnalysisCaseFilterContainer;
-import ch.ivy.addon.portalkit.constant.PortalConstants;
-import ch.ivy.addon.portalkit.datamodel.TaskLazyDataModel;
-import ch.ivy.addon.portalkit.enums.CaseSortField;
-import ch.ivy.addon.portalkit.enums.FilterType;
-import ch.ivy.addon.portalkit.enums.TaskAndCaseAnalysisColumn;
-import ch.ivy.addon.portalkit.enums.TaskSortField;
-import ch.ivy.addon.portalkit.ivydata.searchcriteria.CaseSearchCriteria;
-import ch.ivy.addon.portalkit.ivydata.searchcriteria.TaskSearchCriteria;
-import ch.ivy.addon.portalkit.service.TaskAnalysisFilterService;
-import ch.ivy.addon.portalkit.taskfilter.TaskFilter;
-import ch.ivy.addon.portalkit.taskfilter.TaskFilterContainer;
-import ch.ivy.addon.portalkit.taskfilter.impl.TaskAnalysisFilterData;
-import ch.ivy.addon.portalkit.taskfilter.impl.TaskAnalysisTaskFilterContainer;
-import ch.ivy.addon.portalkit.taskfilter.impl.TaskFilterData;
-import ch.ivy.addon.portalkit.util.PermissionUtils;
-import ch.ivy.addon.portalkit.util.UserUtils;
-import ch.ivyteam.ivy.business.data.store.BusinessDataInfo;
-import ch.ivyteam.ivy.environment.Ivy;
-import ch.ivyteam.ivy.jsf.primefaces.sort.SortMetaConverter;
-import ch.ivyteam.ivy.process.call.SubProcessCall;
-import ch.ivyteam.ivy.workflow.ITask;
-import ch.ivyteam.ivy.workflow.query.CaseQuery;
-import ch.ivyteam.ivy.workflow.query.TaskQuery;
-import ch.ivyteam.ivy.workflow.query.TaskQuery.IFilterQuery;
-import ch.ivyteam.ivy.workflow.query.TaskQuery.OrderByColumnQuery;
-
-public class TaskAnalysisLazyDataModel extends TaskLazyDataModel {
-
- private static final long serialVersionUID = -6615871274830927272L;
-
- private static final String TASK_COLUMN_PREFIX = "TASK_";
-
- private TaskAnalysisFilterData selectedTaskAnalysisFilterData;
- private TaskAnalysisFilterData defaultTaskAnalysisFilterData;
-
- private CaseSearchCriteria caseCriteria;
- private List caseFilters;
- private List selectedCaseFilters;
- private List oldSelectedCaseFilters = new ArrayList<>();
- private CaseFilterContainer caseFilterContainer;
-
- public TaskAnalysisLazyDataModel() {
- super();
- isNotKeepFilter = true;
- selectedCaseFilters = new ArrayList<>();
- buildCaseCriteria();
- buildDefaultTaskAnalysisFilterData();
- }
-
- public TaskAnalysisFilterData buildDefaultTaskAnalysisFilterData() {
- if (defaultTaskAnalysisFilterData == null) {
- defaultTaskAnalysisFilterData = new TaskAnalysisFilterData();
- defaultTaskAnalysisFilterData.setFilterName(Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/taskList/defaultFilter"));
- defaultTaskAnalysisFilterData.setType(FilterType.DEFAULT);
- collectFiltersForDefaultFilterSet();
- }
- isSelectedDefaultFilter = isSelectedDefaultFilter == null ? true : isSelectedDefaultFilter;
- return defaultTaskAnalysisFilterData;
- }
-
- @Override
- public TaskFilterData buildDefaultTaskFilterData() {
- return null;
- }
-
- @Override
- public void initFilterContainer() {
- filterContainer = new TaskAnalysisTaskFilterContainer(criteria.isAdminQuery());
- }
-
- @Override
- public List load(int first, int pageSize, Map sortBy, Map filterBy) {
- SortMetaConverter sort = new SortMetaConverter(sortBy);
- criteria.setSortField(sort.toField());
- criteria.setSortDescending(sort.toOrder() == SortOrder.DESCENDING);
-
- if (first == 0) {
- initializedDataModel(criteria);
- }
-
- List foundTasks = findTasks(criteria, first, pageSize);
- data.addAll(foundTasks);
- return foundTasks;
- }
-
- @Override
- protected void buildCriteria() {
- criteria = new TaskSearchCriteria();
- criteria.setIncludedStates(new ArrayList<>(TaskSearchCriteria.STANDARD_STATES));
- criteria.setSortField(TaskSortField.ID.toString());
- criteria.setSortDescending(true);
- }
-
- public List getTaskFilters() {
- return filters;
- }
-
- public List getSelectedTaskFilters() {
- return selectedFilters;
- }
-
- public void setSelectedTaskFilters(List selectedFilters) {
- this.selectedFilters = selectedFilters;
- }
-
- public TaskFilterContainer getTaskFilterContainer() {
- return filterContainer;
- }
-
- public void setTaskFilterContainer(TaskFilterContainer filterContainer) {
- this.filterContainer = filterContainer;
- }
-
- public TaskAnalysisFilterData getSelectedTaskAnalysisFilterData() {
- return selectedTaskAnalysisFilterData;
- }
-
- public void setSelectedTaskAnalysisFilterData(TaskAnalysisFilterData selectedTaskAnalysisFilterData) {
- this.selectedTaskAnalysisFilterData = selectedTaskAnalysisFilterData;
- }
-
- @Override
- public void onFilterApply() {
- selectedTaskAnalysisFilterData = null;
- isSelectedDefaultFilter = false;
- }
- @Override
- public void removeFilter(TaskFilter filter) {
- filter.resetValues();
- selectedFilters.remove(filter);
- updateSelectedFilter();
- }
-
- public void removeFilter(CaseFilter filter) {
- filter.resetValues();
- selectedCaseFilters.remove(filter);
- updateSelectedFilter();
- }
-
- @Override
- public void resetFilters() {
- for (TaskFilter selectedFilter : selectedFilters) {
- selectedFilter.resetValues();
- }
- for (CaseFilter selectedCaseFilter : selectedCaseFilters) {
- selectedCaseFilter.resetValues();
- }
- selectedFilters = new ArrayList<>();
- selectedCaseFilters = new ArrayList<>();
- selectedTaskAnalysisFilterData = null;
- isSelectedDefaultFilter = false;
- }
-
- public boolean isSameTaskFilterData(TaskAnalysisFilterData filterToBeRemoved) {
- if (filterToBeRemoved == null || selectedTaskAnalysisFilterData == null) {
- return false;
- }
- return filterToBeRemoved.getFilterGroupId().equals(selectedTaskAnalysisFilterData.getFilterGroupId())
- && filterToBeRemoved.getType() == selectedTaskAnalysisFilterData.getType()
- && filterToBeRemoved.getFilterName().equals(selectedTaskAnalysisFilterData.getFilterName());
- }
-
- /**
- * Save all filter settings to business data
- *
- * @param filterName
- * @param filterType
- * @param taskFilterGroupId
- * @return TaskAnalysisFilterData
- */
- public TaskAnalysisFilterData saveTaskAnalysisFilter(String filterName, FilterType filterType, Long taskFilterGroupId) {
- TaskAnalysisFilterData taskAnalysisFilterData = new TaskAnalysisFilterData();
- List taskFiltersToSave = new ArrayList<>(selectedFilters);
- taskAnalysisFilterData.setTaskFilters(taskFiltersToSave);
- List filtersToSave = new ArrayList<>(selectedCaseFilters);
- taskAnalysisFilterData.setCaseFilters(filtersToSave);
- taskAnalysisFilterData.setUserId(Ivy.session().getSessionUser().getId());
- taskAnalysisFilterData.setSecurityMemberId(Ivy.session().getSessionUser().getSecurityMemberId());
- taskAnalysisFilterData.setFilterGroupId(taskFilterGroupId);
- taskAnalysisFilterData.setFilterName(filterName);
- taskAnalysisFilterData.setType(filterType);
- boolean isPublic = ALL_USERS == taskAnalysisFilterData.getType() || ALL_ADMINS == taskAnalysisFilterData.getType();
- taskAnalysisFilterData.setIsPublic(isPublic);
- TaskAnalysisFilterService taskFilterService = new TaskAnalysisFilterService();
- taskFilterService.save(taskAnalysisFilterData);
- BusinessDataInfo info = taskFilterService.save(taskAnalysisFilterData);
- taskAnalysisFilterData = taskFilterService.findById(info.getId());
- return taskAnalysisFilterData;
- }
-
- /**
- * Apply filter settings loaded from business data to this {@link #TaskAnalysisLazyDataModel}
- *
- * @param taskAnalysisFilterData
- * @throws ReflectiveOperationException
- */
- public void applyFilter(TaskAnalysisFilterData taskAnalysisFilterData) throws ReflectiveOperationException {
- isSelectedDefaultFilter = FilterType.DEFAULT.equals(taskAnalysisFilterData.getType());
- selectedTaskAnalysisFilterData = taskAnalysisFilterData;
- new TaskAnalysisFilterService().applyFilter(this, taskAnalysisFilterData);
- }
-
- /**
- * Builds TaskQuery and put it into TaskSearchCriteria.
- */
- @Override
- protected void buildQueryToSearchCriteria() {
- if (criteria.getCustomTaskQuery() == null) {
- TaskQuery taskQuery = SubProcessCall.withPath(PortalConstants.BUILD_TASK_QUERY_CALLABLE)
- .withStartSignature("buildTaskQuery()")
- .call()
- .get("taskQuery", TaskQuery.class);
- criteria.setCustomTaskQuery(taskQuery);
- }
-
- if (filterContainer != null) {
- if (selectedFilters.contains(filterContainer.getStateFilter())) {
- criteria.setIncludedStates(new ArrayList<>());
- } else {
- criteria.setIncludedStates(filterContainer.getStateFilter().getSelectedFilteredStates());
- }
- }
- if (caseFilterContainer != null) {
- if (selectedCaseFilters.contains(caseFilterContainer.getStateFilter())) {
- caseCriteria.setIncludedStates(new ArrayList<>());
- } else {
- caseCriteria.setIncludedStates(caseFilterContainer.getStateFilter().getSelectedFilteredStates());
- }
- }
-
- TaskQuery taskQuery = buildTaskQuery();
- if (CollectionUtils.isNotEmpty(selectedCaseFilters)) {
- CaseQuery caseQuery = buildCaseQuery();
- taskQuery = taskQuery.where().cases(caseQuery);
- }
-
- String sortField = criteria.getSortField();
- if (sortField.startsWith(TASK_COLUMN_PREFIX)) {
- buildSortTaskQuery(taskQuery);
- }
-
- extendSort(taskQuery);
- criteria.setFinalTaskQuery(taskQuery);
- }
-
- @Override
- protected TaskQuery buildTaskQuery() {
- TaskQuery taskQuery = criteria.createQuery();
- IFilterQuery filterQuery = taskQuery.where();
- selectedFilters.forEach(selectedFilter -> {
- TaskQuery subQuery = selectedFilter.buildQuery();
- if (subQuery != null) {
- filterQuery.and(subQuery);
- }
- });
- return taskQuery;
- }
-
- private CaseQuery buildCaseQuery() {
- CaseQuery caseQuery = caseCriteria.createQuery();
- CaseQuery.IFilterQuery filterQuery = caseQuery.where();
- selectedCaseFilters.forEach(selectedFilter -> {
- CaseQuery subQuery = selectedFilter.buildQuery();
- if (subQuery != null) {
- filterQuery.and(subQuery);
- }
- });
- return caseQuery;
- }
-
- private void buildSortTaskQuery(TaskQuery taskQuery) {
- TaskAndCaseAnalysisColumn sortColumn = TaskAndCaseAnalysisColumn.valueOf(criteria.getSortField());
- OrderByColumnQuery orderQuery = switch (sortColumn) {
- case TASK_ACTIVATOR -> taskQuery.orderBy().activatorDisplayName();
- case TASK_CATEGORY -> taskQuery.orderBy().category();
- case TASK_CREATION_TIME -> taskQuery.orderBy().startTimestamp();
- case TASK_EXPIRY_TIME -> taskQuery.orderBy().expiryTimestamp();
- case TASK_FINISHED_TIME -> taskQuery.orderBy().endTimestamp();
- case TASK_NAME -> taskQuery.orderBy().name();
- case TASK_PRIORITY -> taskQuery.orderBy().priority();
- case TASK_STATE -> taskQuery.orderBy().state();
- case TASK_WORKER -> taskQuery.orderBy().workerUserDisplayName();
- default -> taskQuery.orderBy().taskId();
- };
-
- if (sortColumn == TaskAndCaseAnalysisColumn.TASK_EXPIRY_TIME) {
- if (criteria.isSortDescending()) {
- orderQuery.descendingNullFirst();
- } else {
- orderQuery.ascendingNullLast();
- }
- return;
- }
-
- if (criteria.isSortDescending()) {
- orderQuery.descending();
- } else {
- orderQuery.ascending();
- }
- }
-
- @Override
- public void initFilters() throws ReflectiveOperationException {
- super.initFilters();
- initCaseFilters();
- if (isNotKeepFilter) {
- applyFilter(defaultTaskAnalysisFilterData);
- }
- }
-
- @Override
- public void collectFiltersForDefaultFilterSet() {
- defaultTaskAnalysisFilterData.setTaskFilters(new ArrayList<>());
- defaultTaskAnalysisFilterData.setCaseFilters(new ArrayList<>());
- }
-
- @Override
- public void checkToApplyDefaultSet() {
- if (isNotKeepFilter && defaultTaskAnalysisFilterData != null) {
- selectedFilters.addAll(defaultTaskAnalysisFilterData.getTaskFilters());
- }
- }
-
- private void setValuesForCaseStateFilter(CaseSearchCriteria criteria) {
- if (caseFilterContainer != null) {
- caseFilterContainer.getStateFilter().setFilteredStates(new ArrayList<>(criteria.getIncludedStates()));
- caseFilterContainer.getStateFilter().setSelectedFilteredStates(criteria.getIncludedStates());
- }
- }
-
- @SuppressWarnings("unchecked")
- public void onCaseFilterChange(ValueChangeEvent event) {
- oldSelectedCaseFilters = (List) event.getOldValue();
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void updateSelectedFilter() {
- List toggleFilters = (List) CollectionUtils.subtract(selectedFilters, oldSelectedFilters);
- if (CollectionUtils.isNotEmpty(toggleFilters)) {
- toggleFilters.forEach(filter -> filter.resetValues());
- }
- resetFilterData();
- }
-
- public void resetFilterData() {
- if (selectedTaskAnalysisFilterData != null) {
- selectedTaskAnalysisFilterData = null;
- }
- this.isSelectedDefaultFilter = false;
- }
-
- @SuppressWarnings("unchecked")
- public void updateSelectedCaseFilter() {
- List toggleFilters =
- (List) CollectionUtils.subtract(selectedCaseFilters, oldSelectedCaseFilters);
- if (CollectionUtils.isNotEmpty(toggleFilters)) {
- toggleFilters.forEach(filter -> filter.resetValues());
- }
- resetFilterData();
- }
-
- public List getSelectedCaseFilters() {
- return selectedCaseFilters;
- }
-
- public void setSelectedCaseFilters(List selectedCaseFilters) {
- this.selectedCaseFilters = selectedCaseFilters;
- }
-
- public CaseFilterContainer getCaseFilterContainer() {
- return caseFilterContainer;
- }
-
- public void setCaseFilterContainer(CaseFilterContainer caseFilterContainer) {
- this.caseFilterContainer = caseFilterContainer;
- }
-
- public List getCaseFilters() {
- return caseFilters;
- }
-
- protected void buildCaseCriteria() {
- caseCriteria = new CaseSearchCriteria();
- caseCriteria.setBusinessCase(true);
- caseCriteria.setIncludedStates(new ArrayList<>(CaseSearchCriteria.STANDARD_STATES));
- caseCriteria.extendStatesQueryByPermission(PermissionUtils.checkReadAllCasesPermission());
- caseCriteria.setSortField(CaseSortField.ID.toString());
- caseCriteria.setSortDescending(true);
- }
-
- private void restoreSessionAdvancedCaseFilters() throws IllegalAccessException, InvocationTargetException {
- if (!isNotKeepFilter) {
- List sessionCaseFilters = UserUtils.getSessionCaseAdvancedFilterAttribute();
- for (CaseFilter filter : caseFilters) {
- for (CaseFilter sessionCaseFilter : sessionCaseFilters) {
- copyProperties(sessionCaseFilter, filter);
- }
- }
- } else if (defaultTaskAnalysisFilterData != null) {
- selectedCaseFilters.addAll(defaultTaskAnalysisFilterData.getCaseFilters());
- }
- }
-
- private void copyProperties(CaseFilter sessionCaseFilter, CaseFilter filter) throws IllegalAccessException,
- InvocationTargetException {
- if (sessionCaseFilter.getClass() == filter.getClass()) {
- BeanUtils.copyProperties(filter, sessionCaseFilter);
- selectedCaseFilters.add(filter);
- }
-}
-
- protected void initCaseFilterContainer() {
- caseFilterContainer = new TaskAnalysisCaseFilterContainer();
- }
-
- private void initCaseFilters() throws IllegalAccessException, InvocationTargetException {
- if (caseFilterContainer == null) {
- initCaseFilterContainer();
- caseFilters = caseFilterContainer.getFilters();
- setValuesForCaseStateFilter(caseCriteria);
- restoreSessionAdvancedCaseFilters();
- }
- }
-
- public TaskAnalysisFilterData getDefaultTaskAnalysisFilterData() {
- return defaultTaskAnalysisFilterData;
- }
-
- public void setDefaultTaskAnalysisFilterData(TaskAnalysisFilterData defaultTaskAnalysisFilterData) {
- this.defaultTaskAnalysisFilterData = defaultTaskAnalysisFilterData;
- }
-
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/DashboardWidget.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/DashboardWidget.java
index 13de4b3e52f..abb9fc4d04a 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/DashboardWidget.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/DashboardWidget.java
@@ -35,7 +35,6 @@
@Type(value = ImageProcessDashboardWidget.class, name = "image-process"),
@Type(value = CompactProcessDashboardWidget.class, name = "compact-process"),
@Type(value = CombinedProcessDashboardWidget.class, name = "combined-process"),
- @Type(value = StatisticDashboardWidget.class, name = "statistic"),
@Type(value = CustomDashboardWidget.class, name = "custom"),
@Type(value = ProcessViewerDashboardWidget.class, name = "process-viewer"),
@Type(value = WelcomeDashboardWidget.class, name = "welcome"),
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/StatisticDashboardWidget.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/StatisticDashboardWidget.java
deleted file mode 100644
index bcc63ccaef3..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/dto/dashboard/StatisticDashboardWidget.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package ch.ivy.addon.portalkit.dto.dashboard;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.primefaces.model.charts.bar.BarChartDataSet;
-import org.primefaces.model.charts.donut.DonutChartDataSet;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-import ch.ivy.addon.portalkit.enums.DashboardWidgetType;
-import ch.ivy.addon.portalkit.service.StatisticService;
-import ch.ivy.addon.portalkit.statistics.StatisticChart;
-import ch.ivy.addon.portalkit.statistics.StatisticChartConstants;
-
-@JsonInclude(JsonInclude.Include.NON_EMPTY)
-public class StatisticDashboardWidget extends DashboardWidget {
-
- private static final long serialVersionUID = 1803106705231907546L;
- private StatisticChart chart;
- @JsonIgnore
- private boolean isChartEmpty;
- private boolean showFullscreenMode;
-
- public StatisticDashboardWidget() {
- setShowFullscreenMode(true);
- }
-
- public StatisticDashboardWidget(StatisticDashboardWidget widget) {
- super(widget);
- chart = widget.getChart();
- showFullscreenMode = widget.showFullscreenMode;
- }
-
- @JsonIgnore
- @Override
- public void resetWidgetFilters() {}
-
- @Override
- public DashboardWidgetType getType() {
- return DashboardWidgetType.STATISTIC;
- }
-
- @Override
- public String getName() {
- if (chart != null) {
- var displayName = StatisticService.getInstance().getDisplayNameInUserLanguageForChart(chart);
- if (displayName != null) {
- return displayName.getValue();
- }
- }
- return super.getName();
- }
-
- @JsonIgnore
- public void generateChartModel() {
- if (chart != null) {
- StatisticService.getInstance().generateChartModelForStatisticCharts(Arrays.asList(chart));
- isChartEmpty = isChartDataSetEmpty();
- }
- }
-
- @JsonIgnore
- private boolean isChartDataSetEmpty() {
- if (chart == null) {
- return true;
- }
- var dataset = new ArrayList();
- var donutChart = chart.getDonutChartModel();
- var barChart = chart.getBarChartModel();
- if (donutChart != null && donutChart.getData().getDataSet().size() == 1) {
- var donutDataset = (DonutChartDataSet) donutChart.getData().getDataSet().get(0);
- dataset.addAll(donutDataset.getData().stream()
- .filter(data -> data.intValue() != 0)
- .collect(Collectors.toList()));
- } else if (barChart != null && barChart.getData().getDataSet().size() == 1) {
- var barDataset = (BarChartDataSet) barChart.getData().getDataSet().get(0);
- if(barDataset.getData() != null) {
- dataset.addAll(barDataset.getData().stream()
- .filter(data -> data.intValue() != 0)
- .collect(Collectors.toList()));
- }
- }
- return CollectionUtils.isEmpty(dataset);
- }
-
- public StatisticChart getChart() {
- return chart;
- }
-
- public void setChart(StatisticChart chart) {
- this.chart = chart;
- }
-
- public boolean isChartEmpty() {
- return isChartEmpty;
- }
-
- public void setChartEmpty(boolean isChartEmpty) {
- this.isChartEmpty = isChartEmpty;
- }
-
- @JsonIgnore
- public String getEmptyChartIcon() {
- if (chart != null) {
- if (chart.getDonutChartModel() != null) {
- return StatisticChartConstants.DONUT_CHART_ICON;
- } else if (chart.getBarChartModel() != null) {
- return StatisticChartConstants.BAR_CHART_ICON;
- }
- }
- return StatisticChartConstants.DEFAULT_CHART_ICON;
- }
-
- @Override
- public void cancelUserFilter() {}
-
- public void setShowFullscreenMode(boolean showFullscreenMode) {
- this.showFullscreenMode = showFullscreenMode;
- }
-
- public boolean isShowFullscreenMode() {
- return showFullscreenMode;
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/BreadCrumbKind.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/BreadCrumbKind.java
index d26aa5f599b..7f9192e04c9 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/BreadCrumbKind.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/BreadCrumbKind.java
@@ -1,6 +1,6 @@
package ch.ivy.addon.portalkit.enums;
public enum BreadCrumbKind {
- HOME, PROCESS, TASK, TASK_DETAIL, CASE_DETAIL, CASE, TECHNICAL_CASE, RELATED_TASK, STATISTICS, EXPRESS, USER_PROFILE, EXPRESS_BUSINESS,
+ HOME, PROCESS, TASK, TASK_DETAIL, CASE_DETAIL, CASE, TECHNICAL_CASE, RELATED_TASK, EXPRESS, USER_PROFILE, EXPRESS_BUSINESS,
ABSENCES_MANAGEMENT, DASHBOARD_CONFIGURATION, EDIT_DASHBOARD_DETAILS, PROCESS_VIEWER, PORTAL_MANAGEMENT, NOTIFICATION;
}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/DashboardWidgetType.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/DashboardWidgetType.java
index 942d804bb2e..7bba1a175b5 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/DashboardWidgetType.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/DashboardWidgetType.java
@@ -3,7 +3,7 @@
import ch.ivyteam.ivy.environment.Ivy;
public enum DashboardWidgetType {
- TASK, CASE, PROCESS, STATISTIC, NEW, CUSTOM, PROCESS_VIEWER, WELCOME, NEWS, NOTIFICATION, CLIENT_STATISTIC;
+ TASK, CASE, PROCESS, NEW, CUSTOM, PROCESS_VIEWER, WELCOME, NEWS, NOTIFICATION, CLIENT_STATISTIC;
public static DashboardWidgetType typeOf(String typeName) {
for (DashboardWidgetType type : DashboardWidgetType.values()) {
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/GlobalVariable.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/GlobalVariable.java
index 3c8c2fad2d3..c5ccfa83a5c 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/GlobalVariable.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/GlobalVariable.java
@@ -35,7 +35,6 @@ public enum GlobalVariable {
HIDE_SYSTEM_TASKS_FROM_HISTORY_ADMINISTRATOR("Portal.Histories.HideSystemTasksForAdministrator", GlobalVariableType.SELECTION, Option.FALSE.toString(), "hideSystemTasksFromHistoryAdministrator"),
HIDE_SYSTEM_NOTES_FROM_HISTORY("Portal.Histories.HideSystemNotes", GlobalVariableType.SELECTION, Option.TRUE.toString(), "hideSystemNotesFromHistory"),
HIDE_SYSTEM_NOTES_FROM_HISTORY_ADMINISTRATOR("Portal.Histories.HideSystemNotesForAdministrator", GlobalVariableType.SELECTION, Option.FALSE.toString(), "hideSystemNotesFromHistoryAdministrator"),
- HIDE_STATISTIC_WIDGET("Portal.Dashboard.HideStatisticWidget", GlobalVariableType.SELECTION, Option.FALSE.toString(), "hideStatisticWidget"),
ENABLE_GROUP_CHAT("Portal.Chat.EnableGroup", GlobalVariableType.SELECTION, Option.FALSE.toString(), "enableGroupChat"),
ENABLE_PRIVATE_CHAT("Portal.Chat.EnablePrivate", GlobalVariableType.SELECTION, Option.FALSE.toString(), "enablePrivateChat"),
CHAT_RESPONSE_TIMEOUT("Portal.Chat.ResponseTimeout", GlobalVariableType.NUMBER, "0", "chatResponseTimeout"),
@@ -71,7 +70,6 @@ public enum GlobalVariable {
HIDE_RELATED_CASE_INFO_FROM_HISTORY("Portal.Histories.HideRelatedCaseInfo", GlobalVariableType.SELECTION, Option.TRUE.toString(), "hideRelatedCaseInfoFromHistory"),
SHOW_ERROR_LOG_TO_CONSOLE("Portal.ShowErrorLogToConsole", GlobalVariableType.SELECTION, Option.FALSE.toString(), "showErrorLogToConsole"),
SHOW_AVATAR("Portal.ShowAvatar",GlobalVariableType.SELECTION,Option.TRUE.toString(),"showAvatar"),
- STATISTIC_CHART_SCALING_INTERVAL("Portal.StatisticChartScalingInterval", GlobalVariableType.NUMBER, "0", "statisticChartScalingInterval"),
ROLE_DIRECT_CHILDREN_LIMIT("Portal.RoleDirectChildrenLimit", GlobalVariableType.SELECTION, "50", "RoleDirectChildrenLimit", new Object[] { 10, 50, 100}),
ROLE_PARENT_LIMIT("Portal.RoleParentLimit", GlobalVariableType.SELECTION, "10", "RoleParentLimit", new Object[] { 5, 10, 20}),
SHOW_LOGIN_FOOTER("Portal.LoginPage.ShowFooter", GlobalVariableType.SELECTION, Option.TRUE.toString(), "ShowLoginPageFooter"),
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/MenuKind.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/MenuKind.java
index d188a1e3bff..4b0a5a2dfa3 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/MenuKind.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/MenuKind.java
@@ -1,7 +1,7 @@
package ch.ivy.addon.portalkit.enums;
public enum MenuKind {
- DASHBOARD, PROCESS, TASK, CASE, STATISTICS, CUSTOM, EXTERNAL_LINK, THIRD_PARTY;
+ DASHBOARD, PROCESS, TASK, CASE, CUSTOM, EXTERNAL_LINK, THIRD_PARTY;
@Override
public String toString() {
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalPermission.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalPermission.java
index 417178d46fb..03f6bebbb4a 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalPermission.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalPermission.java
@@ -15,13 +15,10 @@ public enum PortalPermission {
DASHBOARD_SHARE_LINK("ShareDashboardLink", PortalPermissionGroup.GENERAL_PERMISSIONS_GROUP),
TASK_WRITE_ACTIVATOR_OWN_TASKS("TaskWriteActivatorOwnTasks", PortalPermissionGroup.TASK_PERMISSIONS_GROUP),
TASK_DISPLAY_ADDITIONAL_OPTIONS("TaskDisplayAdditionalOptions", PortalPermissionGroup.TASK_PERMISSIONS_GROUP),
- STATISTIC_ADD_DASHBOARD_CHART("StatisticAddDashboardChart", PortalPermissionGroup.STATISTIC_GROUP),
- STATISTIC_ANALYZE_TASK("StatisticAnalyzeTask", PortalPermissionGroup.STATISTIC_GROUP),
EXPRESS_CREATE_WORKFLOW("ExpressCreateWorkflow", PortalPermissionGroup.EXPRESS_GROUP),
ACCESS_FULL_PROCESS_LIST("AccessFullProcessList", PortalPermissionGroup.GENERAL_PERMISSIONS_GROUP),
ACCESS_FULL_TASK_LIST("AccessFullTaskList", PortalPermissionGroup.GENERAL_PERMISSIONS_GROUP),
ACCESS_FULL_CASE_LIST("AccessFullCaseList", PortalPermissionGroup.GENERAL_PERMISSIONS_GROUP),
- ACCESS_FULL_STATISTICS_LIST("AccessFullStatisticsList", PortalPermissionGroup.GENERAL_PERMISSIONS_GROUP),
SHOW_ALL_TASKS_OF_CASE("ShowAllTasksOfCase", PortalPermissionGroup.CASE_PERMISSIONS_GROUP),
SHOW_CASE_DETAILS("ShowCaseDetails", PortalPermissionGroup.CASE_PERMISSIONS_GROUP),
CASE_DETAILS_SHARE_LINK("ShareCaseDetailsLink", PortalPermissionGroup.CASE_PERMISSIONS_GROUP),
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalVariable.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalVariable.java
index af68f81ee96..3fcfc81a686 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalVariable.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/PortalVariable.java
@@ -4,7 +4,6 @@ public enum PortalVariable {
PASSWORD_VALIDATION("Portal.PasswordValidation"),
ANNOUNCEMENT("Portal.Announcement"),
THIRD_PARTY_APP("Portal.ThirdPartyApplications"),
- STATISTIC_CHART("Portal.StatisticCharts"),
WIDGET_FILTER("Portal.Dashboard.WidgetFilters"),
EXTERNAL_LINK("Portal.Processes.ExternalLinks"),
EXPRESS_PROCESS("Portal.Processes.ExpressProcesses"),
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/StatisticChartType.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/StatisticChartType.java
deleted file mode 100644
index b3cfa7476f5..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/StatisticChartType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package ch.ivy.addon.portalkit.enums;
-
-public enum StatisticChartType {
- TASK_BY_PRIORITY("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/taskByPriority", null, "taskByPriorityChartExtender"),
- CASES_BY_STATE("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/caseByState", null, "caseByStateChartExtender"),
- CASES_BY_FINISHED_TASK("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/caseByFinishedTask", "/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/caseByFinishedTaskDescription", "caseByStateFinishTaskChartExtender"),
- CASES_BY_FINISHED_TIME("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/caseByFinishedTime", "/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/caseByFinishedTimeDescription", "caseByStateFinishTimeChartExtender"),
- TASK_BY_EXPIRY("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/taskByExpiry", null, "taskByExpiryChartDefaultExtender"),
- ELAPSED_TIME_BY_CASE_CATEGORY("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/elapsedTimeByCaseCategory", "/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/elapsedTimeByCaseCategoryDescription", "elapsedTimeChartExtender"),
- CASES_BY_CATEGORY("/ch.ivy.addon.portalkit.ui.jsf/statistic/chartType/casesByCategory", null, "casesByCategoryChartExtender");
-
- private String cmsUri;
- private String cmsDescriptionUri;
- private String chartExtender;
-
- private StatisticChartType(String cmsUri, String cmsDescriptionUri, String chartExtender) {
- this.cmsUri = cmsUri;
- this.cmsDescriptionUri = cmsDescriptionUri;
- this.chartExtender = chartExtender;
- }
-
- public String getCmsUri() {
- return cmsUri;
- }
-
- public String getCmsDescriptionUri() {
- return cmsDescriptionUri;
- }
-
- public String getChartExtender() {
- return chartExtender;
- }
-
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/StatisticTimePeriodSelection.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/StatisticTimePeriodSelection.java
deleted file mode 100644
index f381ed29b33..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/StatisticTimePeriodSelection.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package ch.ivy.addon.portalkit.enums;
-
-import ch.ivyteam.ivy.environment.Ivy;
-
-public enum StatisticTimePeriodSelection {
- CUSTOM("custom"),
- LAST_WEEK("lastWeek"),
- LAST_MONTH("lastMonth"),
- LAST_6_MONTH("last6Month");
-
-private final String label;
-
- StatisticTimePeriodSelection(String label) {
- this.label = label;
- }
-
- public String getLabel() {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/timePeriod/" + label);
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/TaskAndCaseAnalysisColumn.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/TaskAndCaseAnalysisColumn.java
deleted file mode 100644
index ef6539bcf5c..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/enums/TaskAndCaseAnalysisColumn.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package ch.ivy.addon.portalkit.enums;
-
-
-public enum TaskAndCaseAnalysisColumn {
- CASE_NAME(false, true),
- CASE_DESCRIPTION(false, false),
- CASE_ID(false, false),
- CASE_CATEGORY(false, false),
- CASE_CREATOR(false, false),
- CASE_STATE(false, true),
- TASK_NAME(true, true),
- TASK_ID(true, false),
- TASK_CATEGORY(true, false),
- TASK_DESCRIPTION(true, false),
- TASK_ACTIVATOR(true, false),
- TASK_WORKER(true, false),
- TASK_PRIORITY(true, true),
- TASK_STATE(true, false),
- TASK_CREATION_TIME(true, true),
- TASK_EXPIRY_TIME(true, false),
- TASK_FINISHED_TIME(true, true),
- CASE_OWNER(false, false),
- APPLICATION(false, false);
-
- private boolean isTaskField;
- private boolean isDefaultColumn;
-
-
- private TaskAndCaseAnalysisColumn(boolean isTaskField, boolean isDefaultColumn) {
- this.isTaskField = isTaskField;
- this.isDefaultColumn = isDefaultColumn;
- }
-
- public boolean isTaskField() {
- return isTaskField;
- }
-
- public boolean isDefaultColumn() {
- return isDefaultColumn;
- }
-}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/CaseExporter.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/CaseExporter.java
index 791df33e853..036f0782505 100644
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/CaseExporter.java
+++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/CaseExporter.java
@@ -67,7 +67,7 @@ public String getColumnName(String column) {
*/
protected String getSpecialColumnName(String column) {
if (CaseSortField.NAME.name().equals(column)) {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseName");
+ return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/caseName");
} else if (CaseLazyDataModel.DESCRIPTION.equals(column)) {
return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/description");
}
diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/internal/TaskAnalysisExporter.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/internal/TaskAnalysisExporter.java
deleted file mode 100644
index 951b815bd3c..00000000000
--- a/AxonIvyPortal/portal/src/ch/ivy/addon/portalkit/exporter/internal/TaskAnalysisExporter.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package ch.ivy.addon.portalkit.exporter.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-
-import ch.ivy.addon.portalkit.enums.TaskAndCaseAnalysisColumn;
-import ch.ivy.addon.portalkit.exporter.Exporter;
-import ch.ivy.addon.portalkit.util.SecurityMemberDisplayNameUtils;
-import ch.ivyteam.ivy.environment.Ivy;
-import ch.ivyteam.ivy.workflow.ITask;
-
-public class TaskAnalysisExporter extends Exporter{
- private Map taskAnalysisColumnsVisibility;
-
- public TaskAnalysisExporter(Map columnsVisibility) {
- this.taskAnalysisColumnsVisibility = columnsVisibility;
- }
-
- @Override
- protected List generateHeaders() {
- List headers = new ArrayList<>();
- for (TaskAndCaseAnalysisColumn column : TaskAndCaseAnalysisColumn.values()) {
- if (isColumnVisible(column))
- headers.add(getColumnName(column));
- }
- return headers;
- }
-
- private String getColumnName(TaskAndCaseAnalysisColumn column) {
- switch (column) {
- case CASE_NAME:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseName");
- case CASE_DESCRIPTION:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseDescription");
- case CASE_ID:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseID");
- case CASE_CATEGORY:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseCategory");
- case CASE_CREATOR:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseCreator");
- case CASE_OWNER:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseOwner");
- case CASE_STATE:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/caseState");
- case TASK_NAME:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/taskName");
- case TASK_ID:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskID");
- case TASK_CATEGORY:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskCategory");
- case TASK_DESCRIPTION:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskDescription");
- case TASK_ACTIVATOR:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskResponsible");
- case TASK_WORKER:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskWorker");
- case TASK_PRIORITY:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskPriority");
- case TASK_STATE:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskState");
- case TASK_CREATION_TIME:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskCreationTime");
- case TASK_EXPIRY_TIME:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskExpiryTime");
- case TASK_FINISHED_TIME:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/statistic/taskAnalysis/taskFinishedTime");
- case APPLICATION:
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/taskList/defaultColumns/APPLICATION");
- default:
- return "";
- }
- }
-
- private Object getColumnValue(TaskAndCaseAnalysisColumn column, ITask task) {
- switch (column) {
- case CASE_NAME:
- return StringUtils.isEmpty(task.getCase().names().current()) ? Ivy.cms().co("/Dialogs/ch/ivy/addon/portalkit/component/CaseWidget/caseNameNotAvailable") : task.getCase().names().current();
- case CASE_DESCRIPTION:
- return task.getCase().descriptions().current();
- case CASE_ID:
- return String.valueOf(task.getCase().getId());
- case CASE_CATEGORY:
- return task.getCase().getCategory().getPath();
- case CASE_CREATOR:
- if (task.getCase().getCreatorUserName() == null) {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/notAvailable");
- }
- return SecurityMemberDisplayNameUtils.generateBriefDisplayNameForSecurityMember(task.getCase().getCreatorUser(), task.getCase().getCreatorUserName());
- case CASE_OWNER:
- if (task.getCase().getOwnerName() == null) {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/notAvailable");
- }
- return SecurityMemberDisplayNameUtils.generateBriefDisplayNameForSecurityMember(task.getCase().getOwner(), task.getCase().getOwnerName());
- case CASE_STATE:
- return task.getCase().getState().toString();
- case TASK_NAME:
- return StringUtils.isEmpty(task.names().current()) ? Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/components/taskStart/taskNameNotAvailable") : task.names().current();
- case TASK_ID:
- return String.valueOf(task.getId());
- case TASK_CATEGORY:
- return task.getCategory().getPath();
- case TASK_DESCRIPTION:
- return task.descriptions().current();
- case TASK_ACTIVATOR:
- if (task.getActivatorName() == null) {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/notAvailable");
- }
- return SecurityMemberDisplayNameUtils.generateBriefDisplayNameForSecurityMember(task.getActivator(), task.getActivatorName());
- case TASK_WORKER:
- if (task.getWorkerUserName() == null) {
- return Ivy.cms().co("/ch.ivy.addon.portalkit.ui.jsf/common/notAvailable");
- }
- return SecurityMemberDisplayNameUtils.generateBriefDisplayNameForUser(task.getWorkerUser(), task.getWorkerUserName());
- case TASK_PRIORITY:
- return task.getPriority().toString();
- case TASK_STATE:
- return task.getState().toString();
- case TASK_CREATION_TIME:
- return task.getStartTimestamp();
- case TASK_EXPIRY_TIME:
- return task.getExpiryTimestamp();
- case TASK_FINISHED_TIME:
- return task.getEndTimestamp();
- case APPLICATION:
- return task.getApplication().getName();
- default:
- return "";
- }
- }
-
- @Override
- public List> generateData(List tasks) {
- List> rows = new ArrayList<>();
- for (T t : tasks) {
- if (t instanceof ITask) {
- List