@masterteam/task-schedule 0.0.3 → 0.0.5
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/README.md +120 -98
- package/assets/i18n/ar.json +58 -0
- package/assets/i18n/en.json +58 -0
- package/assets/task-schedule.css +2 -2
- package/fesm2022/masterteam-task-schedule.mjs +1972 -2166
- package/fesm2022/masterteam-task-schedule.mjs.map +1 -1
- package/package.json +8 -3
- package/types/masterteam-task-schedule.d.ts +283 -187
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnInit, OnDestroy
|
|
2
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
3
3
|
import { GanttComponent, ContextMenuOpenEventArgs, ContextMenuClickEventArgs } from '@syncfusion/ej2-angular-gantt';
|
|
4
|
-
import * as rxjs from 'rxjs';
|
|
5
4
|
import { Observable } from 'rxjs';
|
|
6
5
|
import { EntityData } from '@masterteam/components/entities';
|
|
6
|
+
import { ModalService } from '@masterteam/components/modal';
|
|
7
|
+
import { ColumnDef } from '@masterteam/components/table';
|
|
7
8
|
import * as _masterteam_task_schedule from '@masterteam/task-schedule';
|
|
8
9
|
|
|
9
10
|
type TaskScheduleModelKey = 'default' | 'edit' | 'baseline' | 'criticalPath' | 'resources' | 'unscheduled' | 'phaseGate' | 'custom';
|
|
@@ -12,6 +13,8 @@ type TaskScheduleModelType = TaskScheduleModelKey | TaskScheduleModelAlias | str
|
|
|
12
13
|
interface TaskScheduleModeOption {
|
|
13
14
|
value: TaskScheduleModelType;
|
|
14
15
|
label?: string;
|
|
16
|
+
icon?: string;
|
|
17
|
+
color?: string;
|
|
15
18
|
}
|
|
16
19
|
declare function normalizeTaskScheduleModelType(modelType: TaskScheduleModelType): TaskScheduleModelKey;
|
|
17
20
|
interface TaskScheduleContext {
|
|
@@ -19,8 +22,10 @@ interface TaskScheduleContext {
|
|
|
19
22
|
modelType?: TaskScheduleModelType;
|
|
20
23
|
schemaId?: number | string;
|
|
21
24
|
levelDataId?: number | string;
|
|
25
|
+
taskModuleId?: number | string;
|
|
26
|
+
milestoneModuleId?: number | string;
|
|
27
|
+
deliverableModuleId?: number | string;
|
|
22
28
|
customViewId?: number | string;
|
|
23
|
-
apiBaseUrl?: string;
|
|
24
29
|
scheduleViewKey?: string;
|
|
25
30
|
dateFormat?: string;
|
|
26
31
|
height?: string;
|
|
@@ -35,7 +40,6 @@ interface TaskScheduleContext {
|
|
|
35
40
|
pdfFonts?: TaskSchedulePdfFonts;
|
|
36
41
|
customProperties?: TaskScheduleCustomProperty[];
|
|
37
42
|
customColumns?: Array<Record<string, unknown>>;
|
|
38
|
-
requestHeaders?: Record<string, string>;
|
|
39
43
|
langCode?: 'en' | 'ar';
|
|
40
44
|
modelCacheKey?: string;
|
|
41
45
|
[key: string]: unknown;
|
|
@@ -45,29 +49,33 @@ interface TaskSchedulePdfFonts {
|
|
|
45
49
|
arabic?: string;
|
|
46
50
|
size?: number;
|
|
47
51
|
}
|
|
48
|
-
interface
|
|
52
|
+
interface TaskScheduleCoreContextEndpoints {
|
|
53
|
+
processSubmit?: string;
|
|
54
|
+
scheduleRead?: string;
|
|
55
|
+
scheduleQuery?: string;
|
|
49
56
|
scheduleTree?: string;
|
|
50
57
|
scheduleTreePhaseGate?: string;
|
|
58
|
+
}
|
|
59
|
+
interface TaskScheduleFeatureContextEndpoints {
|
|
60
|
+
scheduleDependencies?: string;
|
|
61
|
+
scheduleTimeline?: string;
|
|
62
|
+
scheduleBaselines?: string;
|
|
63
|
+
scheduleBaselineByVersion?: string;
|
|
51
64
|
scheduleManagerBase?: string;
|
|
52
65
|
scheduleViewById?: string;
|
|
53
66
|
scheduleViewsByLevel?: string;
|
|
54
67
|
scheduleSettingsByLevel?: string;
|
|
55
|
-
teamMembers?: string;
|
|
56
|
-
createTask?: string;
|
|
57
|
-
updateTask?: string;
|
|
58
|
-
deleteTask?: string;
|
|
59
|
-
updateBulkTasks?: string;
|
|
60
|
-
updateParent?: string;
|
|
61
|
-
updateOrder?: string;
|
|
62
|
-
updateProgress?: string;
|
|
63
68
|
importTasks?: string;
|
|
64
69
|
applyImportedTasks?: string;
|
|
65
70
|
setBaseline?: string;
|
|
66
71
|
exportTasks?: string;
|
|
67
|
-
[key: string]: string | undefined;
|
|
68
72
|
}
|
|
73
|
+
type TaskScheduleContextEndpoints = TaskScheduleCoreContextEndpoints & Partial<TaskScheduleFeatureContextEndpoints> & {
|
|
74
|
+
[key: string]: string | undefined;
|
|
75
|
+
};
|
|
69
76
|
interface TaskScheduleTask {
|
|
70
77
|
id: number | string;
|
|
78
|
+
schemaId?: number | string | null;
|
|
71
79
|
title: string;
|
|
72
80
|
name?: string;
|
|
73
81
|
startDate?: Date | string | null;
|
|
@@ -80,6 +88,7 @@ interface TaskScheduleTask {
|
|
|
80
88
|
actualFinishDate?: Date | string | null;
|
|
81
89
|
baselineStartDate?: Date | string | null;
|
|
82
90
|
baselineEndDate?: Date | string | null;
|
|
91
|
+
baselineDuration?: number | null;
|
|
83
92
|
duration?: number | null;
|
|
84
93
|
progress?: number | null;
|
|
85
94
|
predecessor?: string | null;
|
|
@@ -92,12 +101,15 @@ interface TaskScheduleTask {
|
|
|
92
101
|
guid?: string | null;
|
|
93
102
|
uniqueID?: string | null;
|
|
94
103
|
parentGuid?: string | null;
|
|
104
|
+
parentId?: number | string | null;
|
|
95
105
|
assignedTo?: string | number | Record<string, unknown> | null;
|
|
96
106
|
resources?: Array<number | string | {
|
|
97
107
|
resourceId: number | string;
|
|
98
|
-
unit?: number;
|
|
108
|
+
unit?: number | string;
|
|
109
|
+
resourceName?: string;
|
|
99
110
|
}>;
|
|
100
111
|
phaseGate?: string | null;
|
|
112
|
+
phaseGateId?: number | string | null;
|
|
101
113
|
criticalPath?: boolean;
|
|
102
114
|
order?: number;
|
|
103
115
|
customProperties?: Array<Record<string, unknown>>;
|
|
@@ -134,15 +146,31 @@ interface TaskScheduleCustomProperty {
|
|
|
134
146
|
}
|
|
135
147
|
interface TaskScheduleTaskMutation {
|
|
136
148
|
assignedTo?: number | string | null;
|
|
137
|
-
name
|
|
149
|
+
name?: string;
|
|
138
150
|
startDate?: string | Date | null;
|
|
139
151
|
finishDate?: string | Date | null;
|
|
152
|
+
actualStart?: string | Date | null;
|
|
153
|
+
actualFinish?: string | Date | null;
|
|
154
|
+
baselineStart?: string | Date | null;
|
|
155
|
+
baselineFinish?: string | Date | null;
|
|
156
|
+
baselineProgress?: number | null;
|
|
140
157
|
predecessor?: string | null;
|
|
158
|
+
predecessors?: TaskScheduleDependencyMutation[] | null;
|
|
141
159
|
details?: string | null;
|
|
142
160
|
type?: string | null;
|
|
143
161
|
duration?: number | null;
|
|
144
162
|
progress?: number | null;
|
|
163
|
+
status?: string | null;
|
|
145
164
|
parentGuid?: string | null;
|
|
165
|
+
parentId?: number | string | null;
|
|
166
|
+
phaseGateId?: number | string | null;
|
|
167
|
+
resources?: TaskScheduleTask['resources'];
|
|
168
|
+
attachments?: unknown;
|
|
169
|
+
isSummary?: boolean | null;
|
|
170
|
+
externalId?: string | null;
|
|
171
|
+
externalParentId?: string | null;
|
|
172
|
+
order?: number | null;
|
|
173
|
+
weight?: number | null;
|
|
146
174
|
props?: Array<Record<string, unknown>>;
|
|
147
175
|
[key: string]: unknown;
|
|
148
176
|
}
|
|
@@ -150,6 +178,67 @@ interface TaskScheduleTaskOrderUpdate {
|
|
|
150
178
|
taskId: number | string;
|
|
151
179
|
order: number;
|
|
152
180
|
}
|
|
181
|
+
type TaskScheduleDependencyType = 0 | 1 | 2 | 3 | 'FinishToStart' | 'StartToStart' | 'FinishToFinish' | 'StartToFinish';
|
|
182
|
+
interface TaskScheduleDependencyMutation {
|
|
183
|
+
predecessorId: number | string;
|
|
184
|
+
type?: TaskScheduleDependencyType | null;
|
|
185
|
+
lagDays?: number | null;
|
|
186
|
+
}
|
|
187
|
+
interface TaskScheduleDependency extends TaskScheduleDependencyMutation {
|
|
188
|
+
id: number | string;
|
|
189
|
+
successorId: number | string;
|
|
190
|
+
}
|
|
191
|
+
type TaskScheduleTimelineMode = 'weekly' | 'monthly' | 'quarterly' | 'biannually' | 'annually';
|
|
192
|
+
interface TaskScheduleTimelineBucket {
|
|
193
|
+
name: string;
|
|
194
|
+
number: number;
|
|
195
|
+
start: Date | string | null;
|
|
196
|
+
end: Date | string | null;
|
|
197
|
+
year?: number | null;
|
|
198
|
+
id: string;
|
|
199
|
+
seq?: number | null;
|
|
200
|
+
}
|
|
201
|
+
interface TaskScheduleBaselineVersion {
|
|
202
|
+
version: number;
|
|
203
|
+
createdAt: Date | string | null;
|
|
204
|
+
createdBy?: string | null;
|
|
205
|
+
itemCount?: number | null;
|
|
206
|
+
}
|
|
207
|
+
interface TaskScheduleBaselineSnapshotItem {
|
|
208
|
+
snapshotId?: number | string | null;
|
|
209
|
+
levelDataId?: number | string | null;
|
|
210
|
+
scheduleItemId?: number | string | null;
|
|
211
|
+
currentScheduleItemId?: number | string | null;
|
|
212
|
+
name?: string | null;
|
|
213
|
+
type?: string | null;
|
|
214
|
+
typeLable?: string | null;
|
|
215
|
+
status?: string | null;
|
|
216
|
+
externalId?: string | null;
|
|
217
|
+
externalParentId?: string | null;
|
|
218
|
+
guid?: string | null;
|
|
219
|
+
parentGuid?: string | null;
|
|
220
|
+
order?: number | null;
|
|
221
|
+
isSummary?: boolean;
|
|
222
|
+
assignedTo?: string | null;
|
|
223
|
+
resources?: Array<number | string | Record<string, unknown>>;
|
|
224
|
+
baselineStart?: Date | string | null;
|
|
225
|
+
baselineFinish?: Date | string | null;
|
|
226
|
+
baselineProgress?: number | null;
|
|
227
|
+
currentStart?: Date | string | null;
|
|
228
|
+
currentFinish?: Date | string | null;
|
|
229
|
+
currentProgress?: number | null;
|
|
230
|
+
currentStatus?: string | null;
|
|
231
|
+
currentAssignedTo?: string | null;
|
|
232
|
+
currentResources?: Array<number | string | Record<string, unknown>>;
|
|
233
|
+
existsInCurrentSchedule?: boolean;
|
|
234
|
+
}
|
|
235
|
+
interface TaskScheduleBaselineSnapshot {
|
|
236
|
+
levelDataId: number | string;
|
|
237
|
+
version: number;
|
|
238
|
+
createdAt: Date | string | null;
|
|
239
|
+
createdBy?: string | null;
|
|
240
|
+
items: TaskScheduleBaselineSnapshotItem[];
|
|
241
|
+
}
|
|
153
242
|
interface TaskScheduleImportResult {
|
|
154
243
|
fileName?: string | null;
|
|
155
244
|
tasks: TaskScheduleTask[];
|
|
@@ -171,8 +260,16 @@ interface TaskScheduleDataResult {
|
|
|
171
260
|
projectStartDate?: Date | string | null;
|
|
172
261
|
projectEndDate?: Date | string | null;
|
|
173
262
|
}
|
|
174
|
-
interface
|
|
263
|
+
interface TaskScheduleFetchDataAdapter {
|
|
175
264
|
load(modelType: TaskScheduleModelType, context: TaskScheduleContext): Observable<TaskScheduleDataResult>;
|
|
265
|
+
importTasks?(context: TaskScheduleContext, file: File): Observable<TaskScheduleImportResult>;
|
|
266
|
+
exportTasks?(context: TaskScheduleContext): Observable<Blob>;
|
|
267
|
+
loadDependencies?(context: TaskScheduleContext): Observable<TaskScheduleDependency[]>;
|
|
268
|
+
loadTimeline?(context: TaskScheduleContext, mode: TaskScheduleTimelineMode): Observable<TaskScheduleTimelineBucket[]>;
|
|
269
|
+
loadBaselineVersions?(context: TaskScheduleContext): Observable<TaskScheduleBaselineVersion[]>;
|
|
270
|
+
loadBaselineSnapshot?(context: TaskScheduleContext, version?: number | 'latest'): Observable<TaskScheduleBaselineSnapshot>;
|
|
271
|
+
}
|
|
272
|
+
interface TaskScheduleActionDataAdapter {
|
|
176
273
|
createTask?(context: TaskScheduleContext, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
177
274
|
updateTask?(context: TaskScheduleContext, taskId: number | string, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
178
275
|
deleteTask?(context: TaskScheduleContext, taskId: number | string): Observable<unknown>;
|
|
@@ -180,10 +277,8 @@ interface TaskScheduleDataAdapter {
|
|
|
180
277
|
updateParent?(context: TaskScheduleContext, taskId: number | string, parentId: number | string | null): Observable<unknown>;
|
|
181
278
|
updateOrder?(context: TaskScheduleContext, payload: TaskScheduleTaskOrderUpdate[]): Observable<unknown>;
|
|
182
279
|
updateProgress?(context: TaskScheduleContext, taskId: number | string, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
183
|
-
importTasks?(context: TaskScheduleContext, file: File): Observable<TaskScheduleImportResult>;
|
|
184
280
|
applyImportedTasks?(context: TaskScheduleContext, payload: TaskScheduleApplyImportPayload): Observable<unknown>;
|
|
185
281
|
setBaseline?(context: TaskScheduleContext, payload?: Record<string, unknown>): Observable<unknown>;
|
|
186
|
-
exportTasks?(context: TaskScheduleContext): Observable<Blob>;
|
|
187
282
|
}
|
|
188
283
|
interface TaskScheduleGanttConfig {
|
|
189
284
|
taskFields: Record<string, unknown>;
|
|
@@ -203,6 +298,7 @@ interface TaskScheduleGanttConfig {
|
|
|
203
298
|
eventMarkers?: Array<Record<string, unknown>>;
|
|
204
299
|
timelineSettings?: Record<string, unknown>;
|
|
205
300
|
editSettings?: Record<string, unknown>;
|
|
301
|
+
allowRowDragAndDrop?: boolean;
|
|
206
302
|
addDialogFields?: Array<Record<string, unknown>>;
|
|
207
303
|
editDialogFields?: Array<Record<string, unknown>>;
|
|
208
304
|
contextMenuItems?: Array<string | Record<string, unknown>>;
|
|
@@ -214,10 +310,12 @@ interface TaskScheduleGanttConfig {
|
|
|
214
310
|
projectEndDate?: Date | string | null;
|
|
215
311
|
}
|
|
216
312
|
|
|
217
|
-
|
|
313
|
+
type EditTaskTypeId = 'Milestone' | 'Task' | 'Deliverable';
|
|
218
314
|
declare class TaskSchedule implements OnInit, OnDestroy {
|
|
219
315
|
ganttObj?: GanttComponent;
|
|
220
|
-
private readonly
|
|
316
|
+
private readonly fetchService;
|
|
317
|
+
private readonly actionService;
|
|
318
|
+
private readonly modal;
|
|
221
319
|
private readonly queueService;
|
|
222
320
|
private readonly injector;
|
|
223
321
|
private loadEffect?;
|
|
@@ -225,6 +323,7 @@ declare class TaskSchedule implements OnInit, OnDestroy {
|
|
|
225
323
|
private loadSubscription?;
|
|
226
324
|
private readonly operationSub;
|
|
227
325
|
private readonly contextAddTask;
|
|
326
|
+
private readonly contextAddAnchorTask;
|
|
228
327
|
private readonly customProperties;
|
|
229
328
|
readonly context: _angular_core.InputSignal<TaskScheduleContext | null>;
|
|
230
329
|
readonly toolbarAction: _angular_core.OutputEmitterRef<string>;
|
|
@@ -244,8 +343,9 @@ declare class TaskSchedule implements OnInit, OnDestroy {
|
|
|
244
343
|
readonly resolvedLangCode: _angular_core.Signal<"en" | "ar">;
|
|
245
344
|
readonly isEditMode: _angular_core.Signal<boolean>;
|
|
246
345
|
readonly editTaskTypes: _angular_core.Signal<{
|
|
247
|
-
id:
|
|
346
|
+
id: EditTaskTypeId;
|
|
248
347
|
text: string;
|
|
348
|
+
moduleId: number | string;
|
|
249
349
|
}[]>;
|
|
250
350
|
readonly enableRtl: _angular_core.Signal<boolean>;
|
|
251
351
|
readonly tooltipTranslations: _angular_core.Signal<{
|
|
@@ -267,159 +367,159 @@ declare class TaskSchedule implements OnInit, OnDestroy {
|
|
|
267
367
|
onDataBound(): void;
|
|
268
368
|
private loadSchedule;
|
|
269
369
|
private applyEditCustomProps;
|
|
270
|
-
private
|
|
271
|
-
private applyDependentFieldBehavior;
|
|
370
|
+
private openScheduleDialog;
|
|
272
371
|
private handleRowDropped;
|
|
273
|
-
private createTask;
|
|
274
372
|
private updateTask;
|
|
275
373
|
private deleteTask;
|
|
276
374
|
private pushBulkUpdate;
|
|
277
|
-
private buildMutationFromTask;
|
|
278
375
|
private resolveParentGuidForContextAddTask;
|
|
279
|
-
private
|
|
376
|
+
private buildCreateDialogTask;
|
|
377
|
+
private clearContextAddState;
|
|
378
|
+
private isContextAddAction;
|
|
379
|
+
private readEditTaskFromArgs;
|
|
380
|
+
private readAnchorTaskFromArgs;
|
|
381
|
+
private isProgressOnlyTaskbarEdit;
|
|
280
382
|
private getGeneralDialogFields;
|
|
281
383
|
private reloadSchedule;
|
|
282
|
-
private normalizeTasks;
|
|
283
|
-
private extractCustomProps;
|
|
284
|
-
private readNamedValue;
|
|
285
|
-
private readType;
|
|
286
|
-
private readAssignedTo;
|
|
287
|
-
private readResources;
|
|
288
384
|
private extractDateValue;
|
|
289
385
|
private mapColumnEditType;
|
|
290
|
-
private getDialogFieldInstance;
|
|
291
|
-
private removeValidationRule;
|
|
292
|
-
private toggleAddAndEditButtons;
|
|
293
|
-
private toggleToolbarButton;
|
|
294
|
-
private normalizeDuration;
|
|
295
|
-
private safeProgress;
|
|
296
386
|
private coerceDate;
|
|
297
387
|
private toApiDate;
|
|
298
388
|
private exportPdfWithRetry;
|
|
299
|
-
private resolvePdfExportFont;
|
|
300
|
-
private createEmbeddedPdfFont;
|
|
301
|
-
private isFitToWidthError;
|
|
302
|
-
private resetPdfModule;
|
|
303
|
-
private wait;
|
|
304
|
-
private getErrorMessage;
|
|
305
389
|
private getExportFileName;
|
|
306
390
|
private hexToRgb;
|
|
307
|
-
private localizeTaskType;
|
|
308
|
-
private readLegacyHolidays;
|
|
309
391
|
formatDateValue(value: unknown): string;
|
|
310
392
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskSchedule, never>;
|
|
311
393
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaskSchedule, "mt-task-schedule", never, { "context": { "alias": "context"; "required": false; "isSignal": true; }; }, { "toolbarAction": "toolbarAction"; "actionBegin": "actionBegin"; "actionCompleted": "actionCompleted"; "loaded": "loaded"; "loadError": "loadError"; }, never, never, true, never>;
|
|
312
394
|
}
|
|
313
395
|
|
|
314
|
-
declare
|
|
315
|
-
declare class TaskScheduleBackendAdapter implements TaskScheduleDataAdapter {
|
|
396
|
+
declare class TaskScheduleFetchService implements TaskScheduleFetchDataAdapter {
|
|
316
397
|
private readonly http;
|
|
317
398
|
load(modelType: TaskScheduleModelType, context: TaskScheduleContext): Observable<TaskScheduleDataResult>;
|
|
318
|
-
private resolveReadPayload;
|
|
319
|
-
private loadScheduleQueryPayload;
|
|
320
|
-
private loadScheduleUtilityPayload;
|
|
321
|
-
private loadLegacyPhaseGatePayload;
|
|
322
|
-
private composeFetchPayload;
|
|
323
|
-
private resolveFetchRootRecords;
|
|
324
|
-
private toFetchSchemaMap;
|
|
325
|
-
private mapFetchRecords;
|
|
326
|
-
private mapFetchRecord;
|
|
327
|
-
private readFetchCustomProps;
|
|
328
|
-
private mapFetchCustomProperties;
|
|
329
|
-
private mergeFetchCustomProperties;
|
|
330
|
-
private readFetchCellRaw;
|
|
331
|
-
private readFetchCellValue;
|
|
332
|
-
private readFetchCellDisplay;
|
|
333
|
-
private readFetchOrder;
|
|
334
|
-
createTask(context: TaskScheduleContext, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
335
|
-
updateTask(context: TaskScheduleContext, taskId: number | string, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
336
|
-
deleteTask(context: TaskScheduleContext, taskId: number | string): Observable<unknown>;
|
|
337
|
-
updateBulkTasks(context: TaskScheduleContext, payload: TaskScheduleTaskMutation[]): Observable<unknown>;
|
|
338
|
-
updateParent(context: TaskScheduleContext, taskId: number | string, parentId: number | string | null): Observable<unknown>;
|
|
339
|
-
updateOrder(context: TaskScheduleContext, payload: TaskScheduleTaskOrderUpdate[]): Observable<unknown>;
|
|
340
|
-
updateProgress(context: TaskScheduleContext, taskId: number | string, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
341
399
|
importTasks(context: TaskScheduleContext, file: File): Observable<TaskScheduleImportResult>;
|
|
342
|
-
applyImportedTasks(context: TaskScheduleContext, payload: TaskScheduleApplyImportPayload): Observable<unknown>;
|
|
343
|
-
setBaseline(context: TaskScheduleContext, payload?: Record<string, unknown>): Observable<unknown>;
|
|
344
400
|
exportTasks(context: TaskScheduleContext): Observable<Blob>;
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
private
|
|
350
|
-
private
|
|
351
|
-
private
|
|
352
|
-
private
|
|
353
|
-
private
|
|
354
|
-
private
|
|
355
|
-
private
|
|
356
|
-
private
|
|
357
|
-
private
|
|
358
|
-
private
|
|
359
|
-
private
|
|
360
|
-
private
|
|
361
|
-
private flattenResourceGroups;
|
|
362
|
-
private attachGroupResource;
|
|
363
|
-
private mergeTaskResources;
|
|
364
|
-
private resolveResourceIdentity;
|
|
365
|
-
private mapRuntimeTask;
|
|
366
|
-
private applyModelTransformations;
|
|
401
|
+
loadDependencies(context: TaskScheduleContext): Observable<TaskScheduleDependency[]>;
|
|
402
|
+
loadTimeline(context: TaskScheduleContext, mode: TaskScheduleTimelineMode): Observable<TaskScheduleTimelineBucket[]>;
|
|
403
|
+
loadBaselineVersions(context: TaskScheduleContext): Observable<TaskScheduleBaselineVersion[]>;
|
|
404
|
+
loadBaselineSnapshot(context: TaskScheduleContext, version?: number | 'latest'): Observable<TaskScheduleBaselineSnapshot>;
|
|
405
|
+
private loadReadResult;
|
|
406
|
+
private loadBaselineResult;
|
|
407
|
+
private loadPhaseGateResult;
|
|
408
|
+
private readScheduleMode;
|
|
409
|
+
private mapQueryTasks;
|
|
410
|
+
private mapGroupedTasks;
|
|
411
|
+
private mapLooseTasks;
|
|
412
|
+
private mapTaskSource;
|
|
413
|
+
private mapCustomProperties;
|
|
414
|
+
private mapCustomValues;
|
|
415
|
+
private buildBaselineTasks;
|
|
416
|
+
private buildTree;
|
|
367
417
|
private resolveResources;
|
|
368
|
-
private mapTeamMemberResources;
|
|
369
|
-
private extractObjectValue;
|
|
370
|
-
private extractObjectArray;
|
|
371
|
-
private extractCustomProperties;
|
|
372
|
-
private mapCustomProperty;
|
|
373
|
-
private normalizeLookupOptions;
|
|
374
|
-
private readLegacyHolidaysFromLocalStorage;
|
|
375
|
-
private extractArrayCandidate;
|
|
376
418
|
private extractResources;
|
|
419
|
+
private mapTeamMemberResources;
|
|
420
|
+
private loadCustomColumns;
|
|
377
421
|
private mapScheduleColumns;
|
|
378
422
|
private normalizeCustomColumnKey;
|
|
379
423
|
private readLocalizedName;
|
|
380
|
-
private
|
|
381
|
-
private
|
|
382
|
-
private
|
|
383
|
-
private extractProgress;
|
|
384
|
-
private extractDate;
|
|
385
|
-
private backendError;
|
|
424
|
+
private readData;
|
|
425
|
+
private levelEndpoint;
|
|
426
|
+
private requireId;
|
|
386
427
|
private readEndpoint;
|
|
428
|
+
private interpolateEndpointTemplate;
|
|
429
|
+
private extractTaskRows;
|
|
430
|
+
private extractArray;
|
|
431
|
+
private readObjectValue;
|
|
432
|
+
private readSourceValue;
|
|
433
|
+
private readNestedValue;
|
|
434
|
+
private readSourceRawValue;
|
|
435
|
+
private readObjectValueByKey;
|
|
436
|
+
private unwrapValue;
|
|
437
|
+
private unwrapRawValue;
|
|
438
|
+
private normalizeTaskType;
|
|
439
|
+
private localizeTaskType;
|
|
440
|
+
private normalizeResources;
|
|
441
|
+
private mergeResources;
|
|
442
|
+
private resolveAssignedTo;
|
|
443
|
+
private resolveResourceId;
|
|
444
|
+
private readResourceName;
|
|
445
|
+
private mapDependency;
|
|
446
|
+
private mapTimelineBucket;
|
|
447
|
+
private mapBaselineVersion;
|
|
448
|
+
private mapBaselineSnapshot;
|
|
449
|
+
private normalizeDependencyType;
|
|
450
|
+
private normalizeDuration;
|
|
451
|
+
private normalizeProgress;
|
|
452
|
+
private readNamedString;
|
|
453
|
+
private toDate;
|
|
454
|
+
private readLegacyHolidays;
|
|
387
455
|
private readId;
|
|
388
|
-
private firstDefined;
|
|
389
456
|
private toNullableString;
|
|
390
457
|
private toNullableNumber;
|
|
391
458
|
private toTaskId;
|
|
392
|
-
|
|
393
|
-
|
|
459
|
+
private isObject;
|
|
460
|
+
private isEmptyIdentityValue;
|
|
461
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskScheduleFetchService, never>;
|
|
462
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TaskScheduleFetchService>;
|
|
394
463
|
}
|
|
395
464
|
|
|
396
|
-
declare class
|
|
397
|
-
private readonly
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
private
|
|
414
|
-
|
|
415
|
-
|
|
465
|
+
declare class TaskScheduleActionService implements TaskScheduleActionDataAdapter {
|
|
466
|
+
private readonly http;
|
|
467
|
+
buildTaskMutation(task: unknown, options?: {
|
|
468
|
+
taskType?: unknown;
|
|
469
|
+
parentGuid?: string | null;
|
|
470
|
+
customProperties?: TaskScheduleCustomProperty[];
|
|
471
|
+
generalFields?: string[];
|
|
472
|
+
}): TaskScheduleTaskMutation;
|
|
473
|
+
createTask(context: TaskScheduleContext, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
474
|
+
updateTask(context: TaskScheduleContext, taskId: number | string, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
475
|
+
deleteTask(context: TaskScheduleContext, taskId: number | string): Observable<unknown>;
|
|
476
|
+
updateBulkTasks(context: TaskScheduleContext, payload: TaskScheduleTaskMutation[]): Observable<unknown>;
|
|
477
|
+
updateParent(context: TaskScheduleContext, taskId: number | string, parentId: number | string | null): Observable<unknown>;
|
|
478
|
+
updateOrder(context: TaskScheduleContext, payload: TaskScheduleTaskOrderUpdate[]): Observable<unknown>;
|
|
479
|
+
updateProgress(context: TaskScheduleContext, taskId: number | string, payload: TaskScheduleTaskMutation): Observable<unknown>;
|
|
480
|
+
applyImportedTasks(context: TaskScheduleContext, payload: TaskScheduleApplyImportPayload): Observable<unknown>;
|
|
481
|
+
setBaseline(context: TaskScheduleContext, payload?: Record<string, unknown>): Observable<unknown>;
|
|
482
|
+
private submitTaskMutation;
|
|
483
|
+
private buildProcessSubmitRequest;
|
|
484
|
+
private buildProcessSubmitFields;
|
|
485
|
+
private mapBulkItem;
|
|
486
|
+
private pushField;
|
|
487
|
+
private pushOwnField;
|
|
488
|
+
private appendCustomProps;
|
|
489
|
+
private buildCustomPropFields;
|
|
490
|
+
private resolveResourcesField;
|
|
491
|
+
private assignIfDefined;
|
|
492
|
+
private buildCustomProps;
|
|
493
|
+
private resolveParentId;
|
|
494
|
+
private serializePredecessors;
|
|
495
|
+
private dependencyTypeToken;
|
|
496
|
+
private normalizeDependencyType;
|
|
497
|
+
private resolveModuleKey;
|
|
498
|
+
private resolveTypeScope;
|
|
499
|
+
private normalizeTaskType;
|
|
500
|
+
private normalizeResources;
|
|
501
|
+
private readData;
|
|
502
|
+
private levelEndpoint;
|
|
503
|
+
private readEndpoint;
|
|
504
|
+
private interpolateEndpointTemplate;
|
|
505
|
+
private requireId;
|
|
506
|
+
private requireProcessId;
|
|
507
|
+
private readId;
|
|
508
|
+
private toTaskId;
|
|
509
|
+
private toNullableString;
|
|
510
|
+
private toNullableNumber;
|
|
511
|
+
private toNullableBoolean;
|
|
512
|
+
private readNamedString;
|
|
513
|
+
private normalizeDuration;
|
|
514
|
+
private normalizeProgress;
|
|
515
|
+
private toApiDate;
|
|
516
|
+
private coerceDate;
|
|
517
|
+
private hasOwn;
|
|
518
|
+
private isObject;
|
|
519
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskScheduleActionService, never>;
|
|
520
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TaskScheduleActionService>;
|
|
416
521
|
}
|
|
417
522
|
|
|
418
|
-
declare function createGanttConfig(modelType: TaskScheduleModelKey, data: TaskScheduleDataResult, dateFormat: string, langCode?: 'en' | 'ar'): TaskScheduleGanttConfig;
|
|
419
|
-
|
|
420
|
-
type TaskScheduleLanguage = 'en' | 'ar';
|
|
421
|
-
declare function resolveTaskScheduleLanguage(preferred?: unknown, contextLangCode?: unknown): TaskScheduleLanguage;
|
|
422
|
-
|
|
423
523
|
interface ImportPreviewRow {
|
|
424
524
|
key: string;
|
|
425
525
|
task: TaskScheduleTask;
|
|
@@ -429,24 +529,29 @@ interface ResourceOption {
|
|
|
429
529
|
id: string | number;
|
|
430
530
|
label: string;
|
|
431
531
|
}
|
|
432
|
-
declare class
|
|
433
|
-
|
|
434
|
-
readonly
|
|
532
|
+
declare class TaskScheduleImportDialog {
|
|
533
|
+
readonly modal: ModalService;
|
|
534
|
+
private readonly ref;
|
|
535
|
+
private readonly fetchService;
|
|
536
|
+
private readonly actionService;
|
|
537
|
+
private readonly transloco;
|
|
538
|
+
private readonly selectionCellTpl;
|
|
539
|
+
private readonly taskCellTpl;
|
|
540
|
+
private readonly startDateCellTpl;
|
|
541
|
+
private readonly finishDateCellTpl;
|
|
542
|
+
private readonly actualStartDateCellTpl;
|
|
543
|
+
private readonly actualFinishDateCellTpl;
|
|
544
|
+
private readonly assignedToCellTpl;
|
|
545
|
+
private readonly progressCellTpl;
|
|
435
546
|
readonly context: _angular_core.InputSignal<TaskScheduleContext | null>;
|
|
436
|
-
readonly title: _angular_core.InputSignal<string | null>;
|
|
437
547
|
readonly maxRows: _angular_core.InputSignal<number>;
|
|
438
|
-
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
439
|
-
readonly imported: _angular_core.OutputEmitterRef<TaskScheduleImportResult>;
|
|
440
|
-
readonly applied: _angular_core.OutputEmitterRef<{
|
|
441
|
-
overrideCurrent: boolean;
|
|
442
|
-
response: unknown;
|
|
443
|
-
}>;
|
|
444
|
-
readonly failed: _angular_core.OutputEmitterRef<string>;
|
|
445
548
|
readonly selectedFile: _angular_core.WritableSignal<File | null>;
|
|
446
549
|
readonly loadingImport: _angular_core.WritableSignal<boolean>;
|
|
447
550
|
readonly loadingApply: _angular_core.WritableSignal<boolean>;
|
|
448
551
|
readonly importResult: _angular_core.WritableSignal<TaskScheduleImportResult | null>;
|
|
449
552
|
readonly selectedTaskKeys: _angular_core.WritableSignal<Set<string>>;
|
|
553
|
+
readonly errorMessage: _angular_core.WritableSignal<string | null>;
|
|
554
|
+
private readonly activeLang;
|
|
450
555
|
readonly resolvedLangCode: _angular_core.Signal<"en" | "ar">;
|
|
451
556
|
readonly isRtl: _angular_core.Signal<boolean>;
|
|
452
557
|
readonly labels: _angular_core.Signal<{
|
|
@@ -477,21 +582,21 @@ declare class TaskScheduleImportModal {
|
|
|
477
582
|
readonly hasSelection: _angular_core.Signal<boolean>;
|
|
478
583
|
readonly canImport: _angular_core.Signal<boolean>;
|
|
479
584
|
readonly canApply: _angular_core.Signal<boolean>;
|
|
585
|
+
readonly previewPageSize: _angular_core.Signal<number>;
|
|
586
|
+
readonly previewColumns: _angular_core.WritableSignal<ColumnDef[]>;
|
|
480
587
|
onFileChanged(event: Event): void;
|
|
481
588
|
importFile(): void;
|
|
482
589
|
toggleRowSelection(rowKey: string, checked: boolean): void;
|
|
483
590
|
selectAllRows(checked: boolean): void;
|
|
484
591
|
applyImport(overrideCurrent: boolean): void;
|
|
485
592
|
close(): void;
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
toDateInputValue(value: unknown): string;
|
|
489
|
-
resolveAssignedValue(task: TaskScheduleTask): string;
|
|
593
|
+
toDateFieldValue(value: unknown): Date | null;
|
|
594
|
+
resolveAssignedValue(task: TaskScheduleTask): string | number | null;
|
|
490
595
|
normalizeProgress(value: unknown): number;
|
|
491
596
|
onTaskTitleChanged(rowKey: string, value: string): void;
|
|
492
|
-
onTaskDateChanged(rowKey: string, key: 'startDate' | 'finishDate' | 'actualStartDate' | 'actualFinishDate', value:
|
|
493
|
-
onTaskAssignedToChanged(rowKey: string, value:
|
|
494
|
-
onTaskProgressChanged(rowKey: string, value:
|
|
597
|
+
onTaskDateChanged(rowKey: string, key: 'startDate' | 'finishDate' | 'actualStartDate' | 'actualFinishDate', value: unknown): void;
|
|
598
|
+
onTaskAssignedToChanged(rowKey: string, value: unknown): void;
|
|
599
|
+
onTaskProgressChanged(rowKey: string, value: unknown): void;
|
|
495
600
|
toAssignedEntity(task: TaskScheduleTask): EntityData;
|
|
496
601
|
toProgressEntity(task: TaskScheduleTask): EntityData;
|
|
497
602
|
private updateRowTask;
|
|
@@ -508,65 +613,56 @@ declare class TaskScheduleImportModal {
|
|
|
508
613
|
private toApiDate;
|
|
509
614
|
private formatDateForApi;
|
|
510
615
|
private countTasks;
|
|
511
|
-
private
|
|
512
|
-
|
|
513
|
-
static
|
|
514
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaskScheduleImportModal, "mt-task-schedule-import-modal", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "imported": "imported"; "applied": "applied"; "failed": "failed"; }, never, never, true, never>;
|
|
616
|
+
private setError;
|
|
617
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskScheduleImportDialog, never>;
|
|
618
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaskScheduleImportDialog, "mt-task-schedule-import-dialog", never, { "context": { "alias": "context"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
515
619
|
}
|
|
516
620
|
|
|
517
|
-
declare class
|
|
518
|
-
private readonly
|
|
621
|
+
declare class TaskScheduleHeader {
|
|
622
|
+
private readonly actionService;
|
|
519
623
|
private readonly queueService;
|
|
624
|
+
private readonly transloco;
|
|
625
|
+
private readonly modal;
|
|
626
|
+
private readonly activeLang;
|
|
520
627
|
readonly context: _angular_core.InputSignal<TaskScheduleContext | null>;
|
|
628
|
+
readonly title: _angular_core.InputSignal<string | null>;
|
|
629
|
+
readonly modeOptions: _angular_core.InputSignal<TaskScheduleModeOption[]>;
|
|
521
630
|
readonly modeChanged: _angular_core.OutputEmitterRef<string>;
|
|
522
631
|
readonly baselineSet: _angular_core.OutputEmitterRef<unknown>;
|
|
523
|
-
readonly tasksExported: _angular_core.OutputEmitterRef<void>;
|
|
524
632
|
readonly actionError: _angular_core.OutputEmitterRef<string>;
|
|
525
633
|
readonly currentModelType: _angular_core.WritableSignal<string>;
|
|
526
|
-
readonly showImportModal: _angular_core.WritableSignal<boolean>;
|
|
527
634
|
readonly settingBaseline: _angular_core.WritableSignal<boolean>;
|
|
528
|
-
readonly exportingTasks: _angular_core.WritableSignal<boolean>;
|
|
529
|
-
readonly resolvedLangCode: _angular_core.Signal<"en" | "ar">;
|
|
530
635
|
readonly resolvedContext: _angular_core.Signal<TaskScheduleContext | null>;
|
|
636
|
+
readonly currentModelKey: _angular_core.Signal<_masterteam_task_schedule.TaskScheduleModelKey>;
|
|
531
637
|
readonly labels: _angular_core.Signal<{
|
|
532
|
-
|
|
533
|
-
setBaseline: string;
|
|
638
|
+
title: string;
|
|
534
639
|
pending: string;
|
|
640
|
+
setBaseline: string;
|
|
535
641
|
import: string;
|
|
536
|
-
export: string;
|
|
537
|
-
exportFileName: string;
|
|
538
|
-
baselineNotSupported: string;
|
|
539
|
-
exportNotSupported: string;
|
|
540
|
-
contextMissing: string;
|
|
541
|
-
baselineDisabled: string;
|
|
542
642
|
}>;
|
|
543
|
-
readonly currentModelKey: _angular_core.Signal<_masterteam_task_schedule.TaskScheduleModelKey>;
|
|
544
643
|
readonly resolvedModes: _angular_core.Signal<{
|
|
545
644
|
value: string;
|
|
546
645
|
label: string;
|
|
646
|
+
icon: string;
|
|
647
|
+
color: string;
|
|
547
648
|
}[]>;
|
|
548
649
|
readonly showSetBaselineAction: _angular_core.Signal<boolean>;
|
|
650
|
+
readonly baselinePending: _angular_core.Signal<boolean>;
|
|
549
651
|
readonly canSetBaselineAction: _angular_core.Signal<boolean>;
|
|
550
652
|
readonly showImportAction: _angular_core.Signal<boolean>;
|
|
551
653
|
readonly canOpenImport: _angular_core.Signal<boolean>;
|
|
552
|
-
readonly canExportTasks: _angular_core.Signal<boolean>;
|
|
553
654
|
constructor();
|
|
554
655
|
onModeChange(nextValue: string): void;
|
|
555
|
-
|
|
556
|
-
closeImportModal(): void;
|
|
656
|
+
openImportDialog(): void;
|
|
557
657
|
setBaseline(): void;
|
|
558
|
-
exportTasks(): void;
|
|
559
|
-
onImportedTasksApplied(): void;
|
|
560
|
-
onActionError(message: unknown): void;
|
|
561
|
-
private resolveModeLabel;
|
|
562
|
-
private downloadBlob;
|
|
563
658
|
private getErrorMessage;
|
|
659
|
+
private translate;
|
|
564
660
|
private emitError;
|
|
565
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
566
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<
|
|
661
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskScheduleHeader, never>;
|
|
662
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaskScheduleHeader, "mt-task-schedule-header", never, { "context": { "alias": "context"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "modeOptions": { "alias": "modeOptions"; "required": true; "isSignal": true; }; }, { "modeChanged": "modeChanged"; "baselineSet": "baselineSet"; "actionError": "actionError"; }, never, never, true, never>;
|
|
567
663
|
}
|
|
568
664
|
|
|
569
665
|
declare const TASK_SCHEDULE_DEFAULT_PDF_FONT: string;
|
|
570
666
|
|
|
571
|
-
export {
|
|
572
|
-
export type { TaskScheduleApplyImportPayload, TaskScheduleContext, TaskScheduleContextEndpoints,
|
|
667
|
+
export { TASK_SCHEDULE_DEFAULT_PDF_FONT, TaskSchedule, TaskScheduleActionService, TaskScheduleFetchService, TaskScheduleHeader, TaskScheduleImportDialog, normalizeTaskScheduleModelType };
|
|
668
|
+
export type { TaskScheduleActionDataAdapter, TaskScheduleApplyImportPayload, TaskScheduleBaselineSnapshot, TaskScheduleBaselineSnapshotItem, TaskScheduleBaselineVersion, TaskScheduleContext, TaskScheduleContextEndpoints, TaskScheduleCoreContextEndpoints, TaskScheduleCustomProperty, TaskScheduleDataResult, TaskScheduleDependency, TaskScheduleDependencyMutation, TaskScheduleDependencyType, TaskScheduleFeatureContextEndpoints, TaskScheduleFetchDataAdapter, TaskScheduleGanttConfig, TaskScheduleImportResult, TaskScheduleModeOption, TaskScheduleModelAlias, TaskScheduleModelKey, TaskScheduleModelType, TaskSchedulePdfFonts, TaskSchedulePropertyDependency, TaskSchedulePropertyViewType, TaskScheduleTask, TaskScheduleTaskMutation, TaskScheduleTaskOrderUpdate, TaskScheduleTimelineBucket, TaskScheduleTimelineMode };
|