@acorex-platform/module-task-management-client 0.0.37 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-task-management-client-acorex-platform-module-task-management-client-DKeXScX9.mjs → acorex-platform-module-task-management-client-acorex-platform-module-task-management-client-PkxJQUlO.mjs} +315 -320
- package/fesm2022/acorex-platform-module-task-management-client-acorex-platform-module-task-management-client-PkxJQUlO.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-assignment.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-assignment.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-checklist-item.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-checklist-item.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-context.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-context.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-dependency.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-dependency.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-status.mjs +28 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-status.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-template.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-template.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-type.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task-type.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task.mjs +16 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-task.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-time-log.mjs +12 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entities-time-log.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-acorex-platform-module-task-management-client-contracts-entity-catalog-Cy2Pym4E.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-acorex-platform-module-task-management-client-contracts-entity-catalog-DoR58GWa.mjs} +10 -10
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-acorex-platform-module-task-management-client-contracts-entity-catalog-Cy2Pym4E.mjs.map → acorex-platform-module-task-management-client-contracts-entity-catalog-acorex-platform-module-task-management-client-contracts-entity-catalog-DoR58GWa.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-assignment.entity-Cf7Gd67F.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-assignment.entity--TP_F87Y.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-assignment.entity--TP_F87Y.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-checklist-item.entity-DwUvNG7Y.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-checklist-item.entity-sGrb0ZaR.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-checklist-item.entity-sGrb0ZaR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-context.entity-DVMkanNa.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-context.entity-CLQw9kqg.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-context.entity-CLQw9kqg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-dependency.entity-DRj3H2CS.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-dependency.entity-Ce9NZlK_.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-dependency.entity-Ce9NZlK_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-status.entity-DVMvNk5C.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-status.entity-DKx2UHiz.mjs} +30 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-status.entity-DKx2UHiz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-template.entity-C5OnMGjC.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-template.entity-CKY04iyS.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-template.entity-CKY04iyS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task-type.entity-W_HUuz4Q.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task-type.entity-BGKWiqU8.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-type.entity-BGKWiqU8.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-task.entity-DYJR8xdq.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-task.entity-CiKg52ey.mjs} +18 -3
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task.entity-CiKg52ey.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-task-management-client-contracts-entity-catalog-time-log.entity-rNEYXIrf.mjs → acorex-platform-module-task-management-client-contracts-entity-catalog-time-log.entity-Gne51DLu.mjs} +14 -2
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-time-log.entity-Gne51DLu.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts.mjs +20 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-task-management-client-list-task-board-assignees.query-VCzu27lk.mjs → acorex-platform-module-task-management-client-list-task-board-assignees.query-D21GbZbd.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-task-management-client-list-task-board-assignees.query-VCzu27lk.mjs.map → acorex-platform-module-task-management-client-list-task-board-assignees.query-D21GbZbd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-task-management-client-list-task-types.query-DWCTG6dK.mjs → acorex-platform-module-task-management-client-list-task-types.query-DyqMBNzz.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-task-management-client-list-task-types.query-DWCTG6dK.mjs.map → acorex-platform-module-task-management-client-list-task-types.query-DyqMBNzz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-task-management-client-task-board.page-BkHHyd9s.mjs → acorex-platform-module-task-management-client-task-board.page-BQ8Al8uc.mjs} +12 -12
- package/fesm2022/acorex-platform-module-task-management-client-task-board.page-BQ8Al8uc.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-task-management-client.mjs +1 -1
- package/package.json +3 -3
- package/types/acorex-platform-module-task-management-client-contracts.d.ts +8 -2
- package/fesm2022/acorex-platform-module-task-management-client-acorex-platform-module-task-management-client-DKeXScX9.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-assignment.entity-Cf7Gd67F.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-checklist-item.entity-DwUvNG7Y.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-context.entity-DVMkanNa.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-dependency.entity-DRj3H2CS.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-status.entity-DVMvNk5C.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-template.entity-C5OnMGjC.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task-type.entity-W_HUuz4Q.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-task.entity-DYJR8xdq.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-contracts-entity-catalog-time-log.entity-rNEYXIrf.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-task-management-client-task-board.page-BkHHyd9s.mjs.map +0 -1
|
@@ -1,120 +1,148 @@
|
|
|
1
|
-
import { AXPBroadcastEventService, AXPEntityBroadcastService,
|
|
1
|
+
import { AXPBroadcastEventService, AXPEntityBroadcastService, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
|
|
2
2
|
import * as i1$1 from '@angular/common';
|
|
3
3
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, InjectionToken, Injector, DestroyRef, Injectable, computed, input, signal, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, ElementRef,
|
|
6
|
-
import {
|
|
7
|
-
import { applyDateFilterPreset, AXPSettingsService, AXPMenuService, AXP_PROTECTED_ROUTE_GUARDS, AXP_HOME_PAGES, AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
|
|
5
|
+
import { inject, NgModule, InjectionToken, Injector, DestroyRef, Injectable, computed, input, signal, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, ElementRef, output } from '@angular/core';
|
|
6
|
+
import { AXP_PROTECTED_ROUTE_GUARDS, AXP_HOME_PAGES, applyDateFilterPreset, AXPSettingsService, AXPMenuService, AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
|
|
8
7
|
import { AXPSessionService, AXPSessionStatus, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
|
|
9
8
|
import { AXPStateMessageComponent, AXPTaskBadgeProvider, AXP_TASK_BADGE_PROVIDERS } from '@acorex-platform/framework-client/layout/components';
|
|
9
|
+
import { AXP_ENTITY_CONFIG_TOKEN, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
10
|
+
import { AXPRuntimeModule, provideCommandSetups, provideQuerySetups, AXPCommandEventsService } from '@acorex-platform/framework-client/runtime';
|
|
11
|
+
import { ROUTES, RouterLink } from '@angular/router';
|
|
12
|
+
import { AXPTaskManagementCommandKeys, AXMTaskManagementQueryKeys, AXPProjectsWorkPermissionKeys, RootConfig, AXPTaskManagementMenuKeys, AXMTaskBoardSettings, TASK_MANAGEMENT_CATALOG_SCOPE_TASKS } from '@acorex-platform/module-task-management-client/contracts';
|
|
13
|
+
import { mapCalendarOccasionToHolidayDate, AXMCalendarManagementService, normalizeRegionalCalendarEventIds, AXMCalendarManagementModule } from '@acorex-platform/module-calendar-management-client';
|
|
14
|
+
import { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
|
|
15
|
+
import * as i1 from '@acorex/components/button';
|
|
16
|
+
import { AXButtonModule, AXButtonComponent } from '@acorex/components/button';
|
|
17
|
+
import * as i2 from '@acorex/components/decorators';
|
|
18
|
+
import { AXDecoratorModule, AXDecoratorIconComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';
|
|
19
|
+
import * as i5 from '@acorex/core/translation';
|
|
20
|
+
import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
|
|
10
21
|
import { isNil, get, defaultTo } from 'lodash';
|
|
11
22
|
import { AXCalendarService } from '@acorex/core/date-time';
|
|
12
|
-
import { mapCalendarOccasionToHolidayDate, AXMCalendarManagementService, normalizeRegionalCalendarEventIds, AXMCalendarManagementModule } from '@acorex-platform/module-calendar-management-client';
|
|
13
23
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
14
24
|
import { Subject, merge, filter, distinctUntilChanged } from 'rxjs';
|
|
15
25
|
import { AXPPlatformScope, AXPRegionalSetting, AXPSystemStatuses, AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
|
|
16
26
|
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
|
17
27
|
import { AXLocaleService } from '@acorex/core/locale';
|
|
18
|
-
import * as i1 from '@acorex/components/button';
|
|
19
|
-
import { AXButtonModule, AXButtonComponent } from '@acorex/components/button';
|
|
20
|
-
import * as i2 from '@acorex/components/decorators';
|
|
21
|
-
import { AXDecoratorModule, AXDecoratorIconComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';
|
|
22
28
|
import * as i3 from '@acorex/components/dropdown';
|
|
23
29
|
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
24
|
-
import * as i5 from '@acorex/core/translation';
|
|
25
|
-
import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
|
|
26
30
|
import { AXOverlayService } from '@acorex/cdk/overlay';
|
|
27
31
|
import { AXPlatform } from '@acorex/core/platform';
|
|
28
32
|
import { AXFormatService, AXFormatPipe } from '@acorex/core/format';
|
|
29
|
-
import { AXP_ENTITY_CONFIG_TOKEN, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
30
|
-
import { AXPRuntimeModule, provideCommandSetups, provideQuerySetups, AXPCommandEventsService } from '@acorex-platform/framework-client/runtime';
|
|
31
|
-
import { ROUTES, RouterLink } from '@angular/router';
|
|
32
|
-
import { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
|
|
33
33
|
import { cloneProperty, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';
|
|
34
34
|
import { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';
|
|
35
35
|
import { defineDashboardWidgetDimensions, layoutFromDimensions } from '@acorex-platform/module-dashboard-management-client';
|
|
36
36
|
import { AXChipsComponent } from '@acorex/components/chips';
|
|
37
37
|
import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
};
|
|
56
|
-
//#endregion
|
|
57
|
-
|
|
58
|
-
function toTaskBoardHolidayDate(occasion) {
|
|
59
|
-
return mapCalendarOccasionToHolidayDate(occasion);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
//#region ----- Imports -----
|
|
63
|
-
//#endregion
|
|
64
|
-
//#region ----- Constants -----
|
|
65
|
-
/** Persisted task rows shown on the task board. */
|
|
66
|
-
const TASK_BOARD_TASK_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.task.name}`;
|
|
67
|
-
/** Assignment rows that change who a task is assigned to. */
|
|
68
|
-
const TASK_BOARD_TASK_ASSIGNMENT_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.taskAssignment.name}`;
|
|
69
|
-
/**
|
|
70
|
-
* Workflow human-task cards come from suspended instance bookmarks, not Task rows.
|
|
71
|
-
* Keep this string in sync with `WorkflowManagement.WorkflowInstance` (do not import workflow-management — it already depends on this package).
|
|
72
|
-
*/
|
|
73
|
-
const TASK_BOARD_WORKFLOW_INSTANCE_ENTITY = 'WorkflowManagement.WorkflowInstance';
|
|
74
|
-
const TASK_BOARD_REALTIME_ENTITIES = new Set([
|
|
75
|
-
TASK_BOARD_TASK_ENTITY,
|
|
76
|
-
TASK_BOARD_TASK_ASSIGNMENT_ENTITY,
|
|
77
|
-
TASK_BOARD_WORKFLOW_INSTANCE_ENTITY,
|
|
78
|
-
]);
|
|
79
|
-
//#endregion
|
|
80
|
-
//#region ----- Helpers -----
|
|
81
|
-
/** True when a layout-refresh / entity-mutation name should refresh the task board or its menu badge. */
|
|
82
|
-
function isTaskBoardRealtimeEntity(name) {
|
|
83
|
-
return name != null && TASK_BOARD_REALTIME_ENTITIES.has(name);
|
|
39
|
+
function createAppRoute() {
|
|
40
|
+
const config = inject(AXP_ENTITY_CONFIG_TOKEN);
|
|
41
|
+
return {
|
|
42
|
+
path: ':app/TaskManagement/task-board',
|
|
43
|
+
canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],
|
|
44
|
+
data: { rootLayout: true },
|
|
45
|
+
loadComponent: () => {
|
|
46
|
+
return config.viewers.root();
|
|
47
|
+
},
|
|
48
|
+
children: [
|
|
49
|
+
{
|
|
50
|
+
path: '',
|
|
51
|
+
loadComponent: () => import('./acorex-platform-module-task-management-client-task-board.page-BQ8Al8uc.mjs').then((c) => c.AXMTaskBoardPage),
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
};
|
|
84
55
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (!value) {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
return new Date(value).toISOString();
|
|
56
|
+
function routesFactory() {
|
|
57
|
+
const routes = [createAppRoute()];
|
|
58
|
+
return routes;
|
|
92
59
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
60
|
+
class AXPTaskBoardModule {
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
62
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, imports: [AXPRuntimeModule] }); }
|
|
63
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, providers: [
|
|
64
|
+
provideCommandSetups([
|
|
65
|
+
{
|
|
66
|
+
key: AXPTaskManagementCommandKeys.TaskBoard.ResetFiltersAssignToCurrentUser,
|
|
67
|
+
command: () => Promise.resolve().then(function () { return resetFiltersAssignToCurrentUser_command; }).then((c) => c.ResetTaskBoardFiltersAssignToCurrentUserCommand),
|
|
68
|
+
},
|
|
69
|
+
]),
|
|
70
|
+
{
|
|
71
|
+
provide: AXP_HOME_PAGES,
|
|
72
|
+
multi: true,
|
|
73
|
+
useFactory: () => [
|
|
74
|
+
{
|
|
75
|
+
key: 'task-board',
|
|
76
|
+
title: 'Task Board',
|
|
77
|
+
route: createAppRoute(),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
provide: ROUTES,
|
|
83
|
+
multi: true,
|
|
84
|
+
useFactory: routesFactory,
|
|
85
|
+
},
|
|
86
|
+
provideQuerySetups([
|
|
87
|
+
{
|
|
88
|
+
key: AXMTaskManagementQueryKeys.ListTaskTypes,
|
|
89
|
+
loader: () => import('./acorex-platform-module-task-management-client-list-task-types.query-DyqMBNzz.mjs').then((c) => c.AXMListTaskTypesQuery),
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
key: AXMTaskManagementQueryKeys.TaskBoardAssignees,
|
|
93
|
+
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-assignees.query-D21GbZbd.mjs').then((c) => c.AXMListTaskBoardAssigneesQuery),
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
key: AXMTaskManagementQueryKeys.TaskBoardReporters,
|
|
97
|
+
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-reporters.query-C3NAYa9b.mjs').then((c) => c.AXMListTaskBoardReportersQuery),
|
|
98
|
+
},
|
|
99
|
+
]),
|
|
100
|
+
], imports: [AXPRuntimeModule] }); }
|
|
117
101
|
}
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, decorators: [{
|
|
103
|
+
type: NgModule,
|
|
104
|
+
args: [{
|
|
105
|
+
imports: [AXPRuntimeModule],
|
|
106
|
+
providers: [
|
|
107
|
+
provideCommandSetups([
|
|
108
|
+
{
|
|
109
|
+
key: AXPTaskManagementCommandKeys.TaskBoard.ResetFiltersAssignToCurrentUser,
|
|
110
|
+
command: () => Promise.resolve().then(function () { return resetFiltersAssignToCurrentUser_command; }).then((c) => c.ResetTaskBoardFiltersAssignToCurrentUserCommand),
|
|
111
|
+
},
|
|
112
|
+
]),
|
|
113
|
+
{
|
|
114
|
+
provide: AXP_HOME_PAGES,
|
|
115
|
+
multi: true,
|
|
116
|
+
useFactory: () => [
|
|
117
|
+
{
|
|
118
|
+
key: 'task-board',
|
|
119
|
+
title: 'Task Board',
|
|
120
|
+
route: createAppRoute(),
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
provide: ROUTES,
|
|
126
|
+
multi: true,
|
|
127
|
+
useFactory: routesFactory,
|
|
128
|
+
},
|
|
129
|
+
provideQuerySetups([
|
|
130
|
+
{
|
|
131
|
+
key: AXMTaskManagementQueryKeys.ListTaskTypes,
|
|
132
|
+
loader: () => import('./acorex-platform-module-task-management-client-list-task-types.query-DyqMBNzz.mjs').then((c) => c.AXMListTaskTypesQuery),
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
key: AXMTaskManagementQueryKeys.TaskBoardAssignees,
|
|
136
|
+
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-assignees.query-D21GbZbd.mjs').then((c) => c.AXMListTaskBoardAssigneesQuery),
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
key: AXMTaskManagementQueryKeys.TaskBoardReporters,
|
|
140
|
+
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-reporters.query-C3NAYa9b.mjs').then((c) => c.AXMListTaskBoardReportersQuery),
|
|
141
|
+
},
|
|
142
|
+
]),
|
|
143
|
+
],
|
|
144
|
+
}]
|
|
145
|
+
}] });
|
|
118
146
|
|
|
119
147
|
/**
|
|
120
148
|
* An abstract class for a workflow task provider, which is responsible for
|
|
@@ -175,14 +203,175 @@ class AXPTaskPopoverComponent {
|
|
|
175
203
|
});
|
|
176
204
|
}
|
|
177
205
|
}
|
|
178
|
-
/**
|
|
179
|
-
* Optional resolver registered by workflow-management to discover task providers on demand.
|
|
180
|
-
*/
|
|
181
|
-
const AXP_WORKFLOW_TASK_PROVIDER_RESOLVER = new InjectionToken('AXP_WORKFLOW_TASK_PROVIDER_RESOLVER');
|
|
182
|
-
/**
|
|
183
|
-
* Injection token for registering multiple workflow task providers.
|
|
184
|
-
*/
|
|
185
|
-
const AXP_WORKFLOW_TASK_PROVIDER = new InjectionToken('AXP_WORKFLOW_TASK_PROVIDER');
|
|
206
|
+
/**
|
|
207
|
+
* Optional resolver registered by workflow-management to discover task providers on demand.
|
|
208
|
+
*/
|
|
209
|
+
const AXP_WORKFLOW_TASK_PROVIDER_RESOLVER = new InjectionToken('AXP_WORKFLOW_TASK_PROVIDER_RESOLVER');
|
|
210
|
+
/**
|
|
211
|
+
* Injection token for registering multiple workflow task providers.
|
|
212
|
+
*/
|
|
213
|
+
const AXP_WORKFLOW_TASK_PROVIDER = new InjectionToken('AXP_WORKFLOW_TASK_PROVIDER');
|
|
214
|
+
|
|
215
|
+
//#region ---- Imports ----
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region ---- Constants ----
|
|
218
|
+
/** Sentinel id for the task-board assignee filter option: tasks with no assignee. */
|
|
219
|
+
const AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID = 'TaskManagement:TaskBoard:Assignee:Unassigned';
|
|
220
|
+
//#endregion
|
|
221
|
+
//#region ---- Permission Helpers ----
|
|
222
|
+
/** Permission to view and filter tasks across all assignees on the task board. */
|
|
223
|
+
const AXM_TASK_VIEW_ALL_PERMISSION = AXPProjectsWorkPermissionKeys.ViewAllTasks;
|
|
224
|
+
/**
|
|
225
|
+
* Returns whether the current session may filter tasks by any assignee.
|
|
226
|
+
*/
|
|
227
|
+
function canViewAllTaskAssignees(sessionService) {
|
|
228
|
+
return sessionService.authorize(AXM_TASK_VIEW_ALL_PERMISSION);
|
|
229
|
+
}
|
|
230
|
+
function isTaskBoardUnassignedAssigneeId(id) {
|
|
231
|
+
return String(id) === AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID;
|
|
232
|
+
}
|
|
233
|
+
/** Whether the user has a persisted assignee filter (including an explicit empty selection). */
|
|
234
|
+
function hasTaskBoardSavedAssigneePreference(savedAssigneeIds) {
|
|
235
|
+
return savedAssigneeIds !== undefined && savedAssigneeIds !== null;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Resolves saved assignee ids from settings. When the setting is unset (`undefined`/`null`):
|
|
239
|
+
* - Users with view-all permission default to no assignee filter (all tasks).
|
|
240
|
+
* - Everyone else defaults to the signed-in user only.
|
|
241
|
+
* An explicit empty array means "no assignee filter" only for view-all users;
|
|
242
|
+
* for everyone else it is coerced to the signed-in user.
|
|
243
|
+
*/
|
|
244
|
+
function resolveTaskBoardSavedAssigneeIds(sessionService, savedAssigneeIds) {
|
|
245
|
+
if (hasTaskBoardSavedAssigneePreference(savedAssigneeIds)) {
|
|
246
|
+
const saved = savedAssigneeIds ?? [];
|
|
247
|
+
if (saved.length === 0 && !canViewAllTaskAssignees(sessionService)) {
|
|
248
|
+
const currentUserId = sessionService.user?.id;
|
|
249
|
+
return currentUserId != null ? [currentUserId] : [];
|
|
250
|
+
}
|
|
251
|
+
return saved;
|
|
252
|
+
}
|
|
253
|
+
if (canViewAllTaskAssignees(sessionService)) {
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
const currentUserId = sessionService.user?.id;
|
|
257
|
+
return currentUserId != null ? [currentUserId] : [];
|
|
258
|
+
}
|
|
259
|
+
/** Assignee picker item for the signed-in user (used by task-board assignee datasource). */
|
|
260
|
+
function resolveTaskBoardCurrentUserAssigneeItem(sessionService) {
|
|
261
|
+
const currentUser = sessionService.user;
|
|
262
|
+
if (currentUser?.id == null) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
id: currentUser.id,
|
|
267
|
+
displayName: currentUser.title || currentUser.name,
|
|
268
|
+
username: currentUser.name,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Restricts assignee filter ids to the current user when {@link canViewAllTaskAssignees} is false.
|
|
273
|
+
* Strips the unassigned sentinel for users without view-all permission.
|
|
274
|
+
* Empty selection is only allowed for view-all users (means all assignees).
|
|
275
|
+
*/
|
|
276
|
+
function normalizeTaskBoardAssigneeIds(sessionService, assigneeIds) {
|
|
277
|
+
if (canViewAllTaskAssignees(sessionService)) {
|
|
278
|
+
return assigneeIds;
|
|
279
|
+
}
|
|
280
|
+
const currentUserId = sessionService.user?.id;
|
|
281
|
+
return currentUserId != null ? [currentUserId] : [];
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Whether a task matches the selected assignee filter ids (OR semantics).
|
|
285
|
+
* Supports {@link AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID} for tasks without an assignee.
|
|
286
|
+
*/
|
|
287
|
+
function matchesTaskBoardAssigneeFilter(assigneeId, filterIds) {
|
|
288
|
+
if (filterIds.length === 0) {
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
const filterSet = new Set(filterIds.map(String));
|
|
292
|
+
const wantsUnassigned = filterSet.has(AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID);
|
|
293
|
+
const hasAssignee = assigneeId != null && assigneeId !== '';
|
|
294
|
+
if (!hasAssignee) {
|
|
295
|
+
return wantsUnassigned;
|
|
296
|
+
}
|
|
297
|
+
return filterSet.has(String(assigneeId));
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Whether a workflow task matches assignee filters using assigned/candidate user ids.
|
|
301
|
+
*/
|
|
302
|
+
function matchesTaskBoardAssigneeUserIdsFilter(userIds, filterIds) {
|
|
303
|
+
if (filterIds.length === 0) {
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
const filterSet = new Set(filterIds.map(String));
|
|
307
|
+
const wantsUnassigned = filterSet.has(AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID);
|
|
308
|
+
if (userIds.length === 0) {
|
|
309
|
+
return wantsUnassigned;
|
|
310
|
+
}
|
|
311
|
+
return userIds.some((id) => filterSet.has(String(id)));
|
|
312
|
+
}
|
|
313
|
+
//#endregion
|
|
314
|
+
|
|
315
|
+
function toTaskBoardHolidayDate(occasion) {
|
|
316
|
+
return mapCalendarOccasionToHolidayDate(occasion);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
//#region ----- Imports -----
|
|
320
|
+
//#endregion
|
|
321
|
+
//#region ----- Constants -----
|
|
322
|
+
/** Persisted task rows shown on the task board. */
|
|
323
|
+
const TASK_BOARD_TASK_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.task.name}`;
|
|
324
|
+
/** Assignment rows that change who a task is assigned to. */
|
|
325
|
+
const TASK_BOARD_TASK_ASSIGNMENT_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.taskAssignment.name}`;
|
|
326
|
+
/**
|
|
327
|
+
* Workflow human-task cards come from suspended instance bookmarks, not Task rows.
|
|
328
|
+
* Keep this string in sync with `WorkflowManagement.WorkflowInstance` (do not import workflow-management — it already depends on this package).
|
|
329
|
+
*/
|
|
330
|
+
const TASK_BOARD_WORKFLOW_INSTANCE_ENTITY = 'WorkflowManagement.WorkflowInstance';
|
|
331
|
+
const TASK_BOARD_REALTIME_ENTITIES = new Set([
|
|
332
|
+
TASK_BOARD_TASK_ENTITY,
|
|
333
|
+
TASK_BOARD_TASK_ASSIGNMENT_ENTITY,
|
|
334
|
+
TASK_BOARD_WORKFLOW_INSTANCE_ENTITY,
|
|
335
|
+
]);
|
|
336
|
+
//#endregion
|
|
337
|
+
//#region ----- Helpers -----
|
|
338
|
+
/** True when a layout-refresh / entity-mutation name should refresh the task board or its menu badge. */
|
|
339
|
+
function isTaskBoardRealtimeEntity(name) {
|
|
340
|
+
return name != null && TASK_BOARD_REALTIME_ENTITIES.has(name);
|
|
341
|
+
}
|
|
342
|
+
//#endregion
|
|
343
|
+
|
|
344
|
+
function serializeDate(value) {
|
|
345
|
+
if (!value) {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
return new Date(value).toISOString();
|
|
349
|
+
}
|
|
350
|
+
/** Stable cache key for {@link AXPTaskBoardService.getTasks} deduplication. */
|
|
351
|
+
function serializeTaskFilterForCache(options) {
|
|
352
|
+
if (!options) {
|
|
353
|
+
return '{}';
|
|
354
|
+
}
|
|
355
|
+
const normalized = {
|
|
356
|
+
types: options.types?.slice().sort(),
|
|
357
|
+
assigneeIds: options.assigneeIds?.map(String).sort(),
|
|
358
|
+
reporterIds: options.reporterIds?.map(String).sort(),
|
|
359
|
+
tags: options.tags?.slice().sort(),
|
|
360
|
+
priorities: options.priorities?.slice().sort(),
|
|
361
|
+
dueStatusKeys: options.dueStatusKeys?.slice().sort(),
|
|
362
|
+
subjectRefTypes: options.subjectRefTypes?.slice().sort(),
|
|
363
|
+
subjectRefIds: options.subjectRefIds?.map(String).sort(),
|
|
364
|
+
skip: options.skip ?? 0,
|
|
365
|
+
take: options.take ?? null,
|
|
366
|
+
range: options.range
|
|
367
|
+
? {
|
|
368
|
+
from: serializeDate(options.range.from),
|
|
369
|
+
end: serializeDate(options.range.end),
|
|
370
|
+
}
|
|
371
|
+
: null,
|
|
372
|
+
};
|
|
373
|
+
return JSON.stringify(normalized);
|
|
374
|
+
}
|
|
186
375
|
|
|
187
376
|
class AXPTaskBoardService {
|
|
188
377
|
constructor() {
|
|
@@ -527,106 +716,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
527
716
|
}]
|
|
528
717
|
}], ctorParameters: () => [] });
|
|
529
718
|
|
|
530
|
-
//#region ---- Imports ----
|
|
531
|
-
//#endregion
|
|
532
|
-
//#region ---- Constants ----
|
|
533
|
-
/** Sentinel id for the task-board assignee filter option: tasks with no assignee. */
|
|
534
|
-
const AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID = 'TaskManagement:TaskBoard:Assignee:Unassigned';
|
|
535
|
-
//#endregion
|
|
536
|
-
//#region ---- Permission Helpers ----
|
|
537
|
-
/** Permission to view and filter tasks across all assignees on the task board. */
|
|
538
|
-
const AXM_TASK_VIEW_ALL_PERMISSION = AXPProjectsWorkPermissionKeys.ViewAllTasks;
|
|
539
|
-
/**
|
|
540
|
-
* Returns whether the current session may filter tasks by any assignee.
|
|
541
|
-
*/
|
|
542
|
-
function canViewAllTaskAssignees(sessionService) {
|
|
543
|
-
return sessionService.authorize(AXM_TASK_VIEW_ALL_PERMISSION);
|
|
544
|
-
}
|
|
545
|
-
function isTaskBoardUnassignedAssigneeId(id) {
|
|
546
|
-
return String(id) === AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID;
|
|
547
|
-
}
|
|
548
|
-
/** Whether the user has a persisted assignee filter (including an explicit empty selection). */
|
|
549
|
-
function hasTaskBoardSavedAssigneePreference(savedAssigneeIds) {
|
|
550
|
-
return savedAssigneeIds !== undefined && savedAssigneeIds !== null;
|
|
551
|
-
}
|
|
552
|
-
/**
|
|
553
|
-
* Resolves saved assignee ids from settings. When the setting is unset (`undefined`/`null`):
|
|
554
|
-
* - Users with view-all permission default to no assignee filter (all tasks).
|
|
555
|
-
* - Everyone else defaults to the signed-in user only.
|
|
556
|
-
* An explicit empty array means "no assignee filter" only for view-all users;
|
|
557
|
-
* for everyone else it is coerced to the signed-in user.
|
|
558
|
-
*/
|
|
559
|
-
function resolveTaskBoardSavedAssigneeIds(sessionService, savedAssigneeIds) {
|
|
560
|
-
if (hasTaskBoardSavedAssigneePreference(savedAssigneeIds)) {
|
|
561
|
-
const saved = savedAssigneeIds ?? [];
|
|
562
|
-
if (saved.length === 0 && !canViewAllTaskAssignees(sessionService)) {
|
|
563
|
-
const currentUserId = sessionService.user?.id;
|
|
564
|
-
return currentUserId != null ? [currentUserId] : [];
|
|
565
|
-
}
|
|
566
|
-
return saved;
|
|
567
|
-
}
|
|
568
|
-
if (canViewAllTaskAssignees(sessionService)) {
|
|
569
|
-
return [];
|
|
570
|
-
}
|
|
571
|
-
const currentUserId = sessionService.user?.id;
|
|
572
|
-
return currentUserId != null ? [currentUserId] : [];
|
|
573
|
-
}
|
|
574
|
-
/** Assignee picker item for the signed-in user (used by task-board assignee datasource). */
|
|
575
|
-
function resolveTaskBoardCurrentUserAssigneeItem(sessionService) {
|
|
576
|
-
const currentUser = sessionService.user;
|
|
577
|
-
if (currentUser?.id == null) {
|
|
578
|
-
return null;
|
|
579
|
-
}
|
|
580
|
-
return {
|
|
581
|
-
id: currentUser.id,
|
|
582
|
-
displayName: currentUser.title || currentUser.name,
|
|
583
|
-
username: currentUser.name,
|
|
584
|
-
};
|
|
585
|
-
}
|
|
586
|
-
/**
|
|
587
|
-
* Restricts assignee filter ids to the current user when {@link canViewAllTaskAssignees} is false.
|
|
588
|
-
* Strips the unassigned sentinel for users without view-all permission.
|
|
589
|
-
* Empty selection is only allowed for view-all users (means all assignees).
|
|
590
|
-
*/
|
|
591
|
-
function normalizeTaskBoardAssigneeIds(sessionService, assigneeIds) {
|
|
592
|
-
if (canViewAllTaskAssignees(sessionService)) {
|
|
593
|
-
return assigneeIds;
|
|
594
|
-
}
|
|
595
|
-
const currentUserId = sessionService.user?.id;
|
|
596
|
-
return currentUserId != null ? [currentUserId] : [];
|
|
597
|
-
}
|
|
598
|
-
/**
|
|
599
|
-
* Whether a task matches the selected assignee filter ids (OR semantics).
|
|
600
|
-
* Supports {@link AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID} for tasks without an assignee.
|
|
601
|
-
*/
|
|
602
|
-
function matchesTaskBoardAssigneeFilter(assigneeId, filterIds) {
|
|
603
|
-
if (filterIds.length === 0) {
|
|
604
|
-
return true;
|
|
605
|
-
}
|
|
606
|
-
const filterSet = new Set(filterIds.map(String));
|
|
607
|
-
const wantsUnassigned = filterSet.has(AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID);
|
|
608
|
-
const hasAssignee = assigneeId != null && assigneeId !== '';
|
|
609
|
-
if (!hasAssignee) {
|
|
610
|
-
return wantsUnassigned;
|
|
611
|
-
}
|
|
612
|
-
return filterSet.has(String(assigneeId));
|
|
613
|
-
}
|
|
614
|
-
/**
|
|
615
|
-
* Whether a workflow task matches assignee filters using assigned/candidate user ids.
|
|
616
|
-
*/
|
|
617
|
-
function matchesTaskBoardAssigneeUserIdsFilter(userIds, filterIds) {
|
|
618
|
-
if (filterIds.length === 0) {
|
|
619
|
-
return true;
|
|
620
|
-
}
|
|
621
|
-
const filterSet = new Set(filterIds.map(String));
|
|
622
|
-
const wantsUnassigned = filterSet.has(AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID);
|
|
623
|
-
if (userIds.length === 0) {
|
|
624
|
-
return wantsUnassigned;
|
|
625
|
-
}
|
|
626
|
-
return userIds.some((id) => filterSet.has(String(id)));
|
|
627
|
-
}
|
|
628
|
-
//#endregion
|
|
629
|
-
|
|
630
719
|
//#region ---- Imports ----
|
|
631
720
|
const AXM_TASK_BOARD_VIEW_CATEGORIES = [
|
|
632
721
|
'calendar',
|
|
@@ -2015,6 +2104,23 @@ function buildTaskAccentCssClass(colorToken) {
|
|
|
2015
2104
|
return buildTaskSurfaceCssClass(colorToken);
|
|
2016
2105
|
}
|
|
2017
2106
|
|
|
2107
|
+
//#region ----- Command result helpers -----
|
|
2108
|
+
/**
|
|
2109
|
+
* True when a task-board action collected input but did not complete
|
|
2110
|
+
* (e.g. Sign Off dialog cancelled). The card must stay on the board.
|
|
2111
|
+
*/
|
|
2112
|
+
function isCancelledTaskBoardCommandResult(result) {
|
|
2113
|
+
if (!result || typeof result !== 'object') {
|
|
2114
|
+
return false;
|
|
2115
|
+
}
|
|
2116
|
+
const data = result.data;
|
|
2117
|
+
return (!!data &&
|
|
2118
|
+
typeof data === 'object' &&
|
|
2119
|
+
!Array.isArray(data) &&
|
|
2120
|
+
data.cancelled === true);
|
|
2121
|
+
}
|
|
2122
|
+
//#endregion
|
|
2123
|
+
|
|
2018
2124
|
//#region ---- Imports ----
|
|
2019
2125
|
//#endregion
|
|
2020
2126
|
//#region ---- Component ----
|
|
@@ -2069,7 +2175,7 @@ class AXMTaskBoardDefaultTaskPopoverComponent extends AXPTaskPopoverComponent {
|
|
|
2069
2175
|
}
|
|
2070
2176
|
try {
|
|
2071
2177
|
const result = await this.taskBoardService.executeCommand(action.command, currentTask.provider);
|
|
2072
|
-
if (result?.success === false || result === null) {
|
|
2178
|
+
if (result?.success === false || result === null || isCancelledTaskBoardCommandResult(result)) {
|
|
2073
2179
|
return;
|
|
2074
2180
|
}
|
|
2075
2181
|
this.closePopover();
|
|
@@ -2814,114 +2920,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
2814
2920
|
args: [{ providedIn: 'root' }]
|
|
2815
2921
|
}] });
|
|
2816
2922
|
|
|
2817
|
-
function createAppRoute() {
|
|
2818
|
-
const config = inject(AXP_ENTITY_CONFIG_TOKEN);
|
|
2819
|
-
return {
|
|
2820
|
-
path: ':app/TaskManagement/task-board',
|
|
2821
|
-
canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],
|
|
2822
|
-
data: { rootLayout: true },
|
|
2823
|
-
loadComponent: () => {
|
|
2824
|
-
return config.viewers.root();
|
|
2825
|
-
},
|
|
2826
|
-
children: [
|
|
2827
|
-
{
|
|
2828
|
-
path: '',
|
|
2829
|
-
loadComponent: () => import('./acorex-platform-module-task-management-client-task-board.page-BkHHyd9s.mjs').then((c) => c.AXMTaskBoardPage),
|
|
2830
|
-
},
|
|
2831
|
-
],
|
|
2832
|
-
};
|
|
2833
|
-
}
|
|
2834
|
-
function routesFactory() {
|
|
2835
|
-
const routes = [createAppRoute()];
|
|
2836
|
-
return routes;
|
|
2837
|
-
}
|
|
2838
|
-
class AXPTaskBoardModule {
|
|
2839
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2840
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, imports: [AXPRuntimeModule] }); }
|
|
2841
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, providers: [
|
|
2842
|
-
provideCommandSetups([
|
|
2843
|
-
{
|
|
2844
|
-
key: AXPTaskManagementCommandKeys.TaskBoard.ResetFiltersAssignToCurrentUser,
|
|
2845
|
-
command: () => Promise.resolve().then(function () { return resetFiltersAssignToCurrentUser_command; }).then((c) => c.ResetTaskBoardFiltersAssignToCurrentUserCommand),
|
|
2846
|
-
},
|
|
2847
|
-
]),
|
|
2848
|
-
{
|
|
2849
|
-
provide: AXP_HOME_PAGES,
|
|
2850
|
-
multi: true,
|
|
2851
|
-
useFactory: () => [
|
|
2852
|
-
{
|
|
2853
|
-
key: 'task-board',
|
|
2854
|
-
title: 'Task Board',
|
|
2855
|
-
route: createAppRoute(),
|
|
2856
|
-
},
|
|
2857
|
-
],
|
|
2858
|
-
},
|
|
2859
|
-
{
|
|
2860
|
-
provide: ROUTES,
|
|
2861
|
-
multi: true,
|
|
2862
|
-
useFactory: routesFactory,
|
|
2863
|
-
},
|
|
2864
|
-
provideQuerySetups([
|
|
2865
|
-
{
|
|
2866
|
-
key: AXMTaskManagementQueryKeys.ListTaskTypes,
|
|
2867
|
-
loader: () => import('./acorex-platform-module-task-management-client-list-task-types.query-DWCTG6dK.mjs').then((c) => c.AXMListTaskTypesQuery),
|
|
2868
|
-
},
|
|
2869
|
-
{
|
|
2870
|
-
key: AXMTaskManagementQueryKeys.TaskBoardAssignees,
|
|
2871
|
-
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-assignees.query-VCzu27lk.mjs').then((c) => c.AXMListTaskBoardAssigneesQuery),
|
|
2872
|
-
},
|
|
2873
|
-
{
|
|
2874
|
-
key: AXMTaskManagementQueryKeys.TaskBoardReporters,
|
|
2875
|
-
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-reporters.query-C3NAYa9b.mjs').then((c) => c.AXMListTaskBoardReportersQuery),
|
|
2876
|
-
},
|
|
2877
|
-
]),
|
|
2878
|
-
], imports: [AXPRuntimeModule] }); }
|
|
2879
|
-
}
|
|
2880
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTaskBoardModule, decorators: [{
|
|
2881
|
-
type: NgModule,
|
|
2882
|
-
args: [{
|
|
2883
|
-
imports: [AXPRuntimeModule],
|
|
2884
|
-
providers: [
|
|
2885
|
-
provideCommandSetups([
|
|
2886
|
-
{
|
|
2887
|
-
key: AXPTaskManagementCommandKeys.TaskBoard.ResetFiltersAssignToCurrentUser,
|
|
2888
|
-
command: () => Promise.resolve().then(function () { return resetFiltersAssignToCurrentUser_command; }).then((c) => c.ResetTaskBoardFiltersAssignToCurrentUserCommand),
|
|
2889
|
-
},
|
|
2890
|
-
]),
|
|
2891
|
-
{
|
|
2892
|
-
provide: AXP_HOME_PAGES,
|
|
2893
|
-
multi: true,
|
|
2894
|
-
useFactory: () => [
|
|
2895
|
-
{
|
|
2896
|
-
key: 'task-board',
|
|
2897
|
-
title: 'Task Board',
|
|
2898
|
-
route: createAppRoute(),
|
|
2899
|
-
},
|
|
2900
|
-
],
|
|
2901
|
-
},
|
|
2902
|
-
{
|
|
2903
|
-
provide: ROUTES,
|
|
2904
|
-
multi: true,
|
|
2905
|
-
useFactory: routesFactory,
|
|
2906
|
-
},
|
|
2907
|
-
provideQuerySetups([
|
|
2908
|
-
{
|
|
2909
|
-
key: AXMTaskManagementQueryKeys.ListTaskTypes,
|
|
2910
|
-
loader: () => import('./acorex-platform-module-task-management-client-list-task-types.query-DWCTG6dK.mjs').then((c) => c.AXMListTaskTypesQuery),
|
|
2911
|
-
},
|
|
2912
|
-
{
|
|
2913
|
-
key: AXMTaskManagementQueryKeys.TaskBoardAssignees,
|
|
2914
|
-
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-assignees.query-VCzu27lk.mjs').then((c) => c.AXMListTaskBoardAssigneesQuery),
|
|
2915
|
-
},
|
|
2916
|
-
{
|
|
2917
|
-
key: AXMTaskManagementQueryKeys.TaskBoardReporters,
|
|
2918
|
-
loader: () => import('./acorex-platform-module-task-management-client-list-task-board-reporters.query-C3NAYa9b.mjs').then((c) => c.AXMListTaskBoardReportersQuery),
|
|
2919
|
-
},
|
|
2920
|
-
]),
|
|
2921
|
-
],
|
|
2922
|
-
}]
|
|
2923
|
-
}] });
|
|
2924
|
-
|
|
2925
2923
|
/**
|
|
2926
2924
|
* Feeds the platform task board from persisted {@link TaskManagement.Task} rows.
|
|
2927
2925
|
*/
|
|
@@ -3036,6 +3034,13 @@ class AXPTaskManagementEntityTaskProvider extends AXPWorkflowTaskProvider {
|
|
|
3036
3034
|
title: statusTitle,
|
|
3037
3035
|
color: get(row, 'status.color'),
|
|
3038
3036
|
},
|
|
3037
|
+
assignee: row.assigneeId
|
|
3038
|
+
? {
|
|
3039
|
+
id: row.assigneeId,
|
|
3040
|
+
type: 'user',
|
|
3041
|
+
fullName: String(get(row, 'assignee.displayName') ?? get(row, 'assignee.fullName') ?? row.assigneeId),
|
|
3042
|
+
}
|
|
3043
|
+
: undefined,
|
|
3039
3044
|
reporter: { id: 'system', type: 'user', fullName: 'System' },
|
|
3040
3045
|
startDate,
|
|
3041
3046
|
endDate,
|
|
@@ -4291,11 +4296,6 @@ class AXMTaskManagementModule {
|
|
|
4291
4296
|
AXPWidgetCoreModule,
|
|
4292
4297
|
AXMTaskFeatureModule] }); }
|
|
4293
4298
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMTaskManagementModule, providers: [
|
|
4294
|
-
{
|
|
4295
|
-
provide: AXP_MODULE_MANIFEST_PROVIDER,
|
|
4296
|
-
useValue: TaskManagementManifest,
|
|
4297
|
-
multi: true,
|
|
4298
|
-
},
|
|
4299
4299
|
{
|
|
4300
4300
|
provide: AXP_PERMISSION_DEFINITION_PROVIDER,
|
|
4301
4301
|
useClass: AXMPermissionDefinitionProvider,
|
|
@@ -4354,11 +4354,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4354
4354
|
AXMTaskFeatureModule,
|
|
4355
4355
|
],
|
|
4356
4356
|
providers: [
|
|
4357
|
-
{
|
|
4358
|
-
provide: AXP_MODULE_MANIFEST_PROVIDER,
|
|
4359
|
-
useValue: TaskManagementManifest,
|
|
4360
|
-
multi: true,
|
|
4361
|
-
},
|
|
4362
4357
|
{
|
|
4363
4358
|
provide: AXP_PERMISSION_DEFINITION_PROVIDER,
|
|
4364
4359
|
useClass: AXMPermissionDefinitionProvider,
|
|
@@ -4441,5 +4436,5 @@ function buildTaskBoardShortcutWidget(id, x, y, size = [3, 2]) {
|
|
|
4441
4436
|
* Generated bundle index. Do not edit.
|
|
4442
4437
|
*/
|
|
4443
4438
|
|
|
4444
|
-
export {
|
|
4445
|
-
//# sourceMappingURL=acorex-platform-module-task-management-client-acorex-platform-module-task-management-client-
|
|
4439
|
+
export { buildTaskAccentSurfaceCssClass as $, AXMTaskBoardViewModel as A, AXMTaskManagementModule as B, AXM_TASK_VIEW_ALL_PERMISSION as C, AXPDueStatusProvider as D, AXPTASK_PRIORITIES as E, AXPTaskBoardModule as F, AXPTaskBoardShortcut as G, AXPTaskBoardShortcutViewComponent as H, AXPTaskBoardWidget as I, AXPTaskBoardWidgetViewComponent as J, AXPTaskManagementEntityTaskProvider as K, AXPTaskPopoverComponent as L, AXPWorkflowTaskProvider as M, AXP_DUE_STATUS_PROVIDERS as N, AXP_TASK_BOARD_DIMENSIONS as O, AXP_TASK_BOARD_SHORTCUT_DIMENSIONS as P, AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD as Q, AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT as R, AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY as S, TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH as T, AXP_WORKFLOW_TASK_PROVIDER as U, AXP_WORKFLOW_TASK_PROVIDER_RESOLVER as V, RESET_TASK_BOARD_FILTERS_ASSIGN_TO_CURRENT_USER_COMMAND_KEY as W, ResetTaskBoardFiltersAssignToCurrentUserCommand as X, TASK_BOARD_GRID_ROW_VIEW_ACTION as Y, TASK_PRIORITY_ORDER as Z, buildTaskAccentCssClass as _, AXPTaskBoardService as a, buildTaskBoardShortcutWidget as a0, buildTaskBoardWidget as a1, buildTaskSurfaceCssClass as a2, formatTaskI18nParamsForTranslate as a3, getDefaultDueStatusDefinitions as a4, getTaskDueStatusKey as a5, getTaskPriorityColor as a6, getTaskPriorityFilterKey as a7, getTaskTranslationKey as a8, hasTaskBoardSavedAssigneePreference as a9, mapEntityStatusColorForBadge as aa, matchesTaskBoardAssigneeFilter as ab, matchesTaskBoardAssigneeUserIdsFilter as ac, matchesTaskDueStatusFilter as ad, matchesTaskPriorityFilter as ae, normalizePriorityFilterKey as af, normalizePriorityFilterKeys as ag, normalizeTaskPriority as ah, resolveDefaultTaskStatusColor as ai, resolveDueStatusFromDefinitions as aj, resolveTaskBoardAccentColor as ak, resolveTaskBoardCalendarPlacement as al, resolveTaskBoardSavedAssigneeIds as am, resolveTaskBoardSchedulingRange as an, resolveTaskBoardStatusColor as ao, resolveTaskPopoverComponent as ap, taskOverlapsFilterRange as aq, AXMTaskBoardTaskPopoverOverlayService as b, TASK_BOARD_GRID_ROW_ACTION_ITEMS as c, AXPDueStatusProviderService as d, canViewAllTaskAssignees as e, filterTasksOverlappingRange as f, getTaskBoardLayoutOptions as g, normalizeTaskTypeFilterNames as h, isCancelledTaskBoardCommandResult as i, enrichTaskBoardTasks as j, isTaskBoardRangeFilterCategory as k, deriveTaskBoardDateRangeFromNavigator as l, applyTaskBoardDateRangeToViewModel as m, normalizeTaskBoardAssigneeIds as n, resolveTaskBoardCategoryLayoutFromQuery as o, resolveTaskBoardCurrentUserAssigneeItem as p, AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID as q, resolveTaskBoardSchedulerLabels as r, isTaskBoardUnassignedAssigneeId as s, AXMDefaultDueStatusProvider as t, usesTaskBoardToolbarNavigator as u, AXMSearchCommandProvider as v, AXMSettingProvider as w, AXMTaskBoardDefaultTaskPopoverComponent as x, AXMTaskBoardTaskPopoverShellComponent as y, AXMTaskManagementMenuProvider as z };
|
|
4440
|
+
//# sourceMappingURL=acorex-platform-module-task-management-client-acorex-platform-module-task-management-client-PkxJQUlO.mjs.map
|