@outbuild-company/schedule-core 1.19.0 → 1.20.0
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 +35 -0
- package/dist/cdn/schedule-core.global.js +1 -1
- package/dist/cdn/schedule-core.global.js.map +1 -1
- package/dist/index.cjs +18093 -10623
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1115 -424
- package/dist/index.d.ts +1115 -424
- package/dist/index.js +18079 -10624
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -17,393 +17,90 @@ declare const LINK_TYPE: {
|
|
|
17
17
|
/** Canonical stored dependency relationship. */
|
|
18
18
|
type LinkType = (typeof LINK_TYPE)[keyof typeof LINK_TYPE];
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
interface WorkTimeQuery {
|
|
21
|
+
readonly direction: WorkTimeDirection;
|
|
22
|
+
readonly date: Date;
|
|
23
|
+
readonly unit: CalendarUnit;
|
|
24
|
+
}
|
|
25
|
+
interface CalendarAPI {
|
|
26
|
+
readonly getClosestWorkTime: (query: WorkTimeQuery) => Date;
|
|
27
|
+
readonly calculateEndDate: (start: Date, durationHours: number) => Date;
|
|
28
|
+
readonly calculateDuration: (start: Date, end: Date) => number;
|
|
29
|
+
readonly isWorkTime: (date: Date, unit: CalendarUnit) => boolean;
|
|
30
|
+
readonly getWorkHours: (date: Date) => string[];
|
|
31
|
+
}
|
|
26
32
|
|
|
27
|
-
/**
|
|
28
|
-
declare const
|
|
29
|
-
readonly
|
|
30
|
-
readonly
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
readonly
|
|
37
|
-
readonly
|
|
38
|
-
|
|
39
|
-
/** Unit accepted by calendar duration operations. */
|
|
40
|
-
type CalendarUnit = (typeof CALENDAR_UNIT)[keyof typeof CALENDAR_UNIT];
|
|
41
|
-
/** Criteria available for schedule-wide activity weighting. */
|
|
42
|
-
declare const ACTIVITY_PONDERATOR_CRITERION: {
|
|
43
|
-
readonly DURATION: "DURATION";
|
|
44
|
-
readonly COST: "COST";
|
|
45
|
-
readonly WORK_HOURS: "HH";
|
|
33
|
+
/** Canonical reasons why an activity field edit may be blocked. */
|
|
34
|
+
declare const EDIT_DENIAL_REASON: {
|
|
35
|
+
readonly COMPLETED: "completed";
|
|
36
|
+
readonly SUMMARY: "summary";
|
|
37
|
+
readonly HAS_PROGRESS: "has_progress";
|
|
38
|
+
readonly HAS_LOOKAHEAD_TASKS: "has_lookahead_tasks";
|
|
39
|
+
readonly SIR_START_AFTER_PROGRESS: "sir_start_after_progress";
|
|
40
|
+
readonly DATA_DATE_UNAVAILABLE: "data_date_unavailable";
|
|
41
|
+
readonly DATA_DATE_ACTUAL_START_LOCKED: "data_date_actual_start_locked";
|
|
42
|
+
readonly DATA_DATE_ACTIVITY_COMPLETED: "data_date_activity_completed";
|
|
43
|
+
readonly DATA_DATE_UNITS_PERCENT_READ_ONLY: "data_date_units_percent_read_only";
|
|
44
|
+
readonly SECONDARY_CONSTRAINT_TYPE_REQUIRED: "secondary_constraint_type_required";
|
|
46
45
|
};
|
|
47
|
-
/**
|
|
48
|
-
type
|
|
49
|
-
/**
|
|
50
|
-
declare const
|
|
51
|
-
readonly
|
|
52
|
-
readonly
|
|
46
|
+
/** Reason code returned when an activity field edit is blocked. */
|
|
47
|
+
type EditDenialReason = (typeof EDIT_DENIAL_REASON)[keyof typeof EDIT_DENIAL_REASON];
|
|
48
|
+
/** Canonical presentation keys associated with blocked activity edits. */
|
|
49
|
+
declare const EDIT_ALERT_KEY: {
|
|
50
|
+
readonly CANT_EDIT_COMPLETED: "cant_edit_completed_activity";
|
|
51
|
+
readonly SUMMARY_COLUMN_VALUE: "summary_column_value";
|
|
52
|
+
readonly CANT_EDIT_WITH_PROGRESS: "cant_edit_activity_with_progress";
|
|
53
|
+
readonly SIR_CANT_MOVE_START_AFTER_PROGRESS: "sir_cant_move_start_after_progress";
|
|
54
|
+
readonly CANT_EDIT_WITH_TASK: "cant_edit_actvity_with_task";
|
|
55
|
+
readonly DATA_DATE_EDIT_REJECTED: "data_date_edit_rejected";
|
|
56
|
+
readonly DATA_DATE_UNITS_PERCENT_READ_ONLY: "data_date_units_percent_read_only";
|
|
53
57
|
};
|
|
54
|
-
/**
|
|
55
|
-
type
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
interface BaselinePoint {
|
|
66
|
-
start_date: string | null;
|
|
67
|
-
end_date: string | null;
|
|
68
|
-
/** Baseline duration in working days. */
|
|
69
|
-
duration: number;
|
|
70
|
-
cost: number | string;
|
|
71
|
-
/** Baseline work in hours. */
|
|
72
|
-
hh_work: number | string;
|
|
73
|
-
sectorbaselineversion?: BaselineVersion;
|
|
74
|
-
sectorbaselineversionId?: number;
|
|
75
|
-
baseCalendarId?: number;
|
|
76
|
-
hoursPerDay?: number;
|
|
77
|
-
hoursPerWeek?: number;
|
|
78
|
-
[key: string]: unknown;
|
|
79
|
-
}
|
|
80
|
-
/** Minimal pending impact-request identity consumed by schedule effects. */
|
|
81
|
-
interface PendingRequest {
|
|
82
|
-
id: string;
|
|
83
|
-
}
|
|
84
|
-
/** Derived activity statuses exposed to consumers. */
|
|
85
|
-
declare const STATUS: {
|
|
86
|
-
readonly DONE: "Done";
|
|
87
|
-
readonly OVERDUE: "Overdue";
|
|
88
|
-
readonly ADVANCEMENT: "Advancement";
|
|
89
|
-
readonly WAITING: "Waiting";
|
|
90
|
-
readonly DOING: "Doing";
|
|
58
|
+
/** Presentation key optionally returned with a blocked activity edit. */
|
|
59
|
+
type EditAlertKey = (typeof EDIT_ALERT_KEY)[keyof typeof EDIT_ALERT_KEY];
|
|
60
|
+
|
|
61
|
+
/** Data Date edits that need an explicit user confirmation before they are applied. */
|
|
62
|
+
declare const CONFIRMATION_KIND: {
|
|
63
|
+
readonly UNSTART: "unstart";
|
|
64
|
+
readonly UNCOMPLETE: "uncomplete";
|
|
65
|
+
readonly START_ON_PROGRESS: "start_on_progress";
|
|
66
|
+
readonly COMPLETE_ON_PROGRESS: "complete_on_progress";
|
|
67
|
+
readonly KEEP_IN_PROGRESS: "keep_in_progress";
|
|
68
|
+
readonly CLEAR_SECONDARY_CONSTRAINT: "clear_secondary_constraint";
|
|
91
69
|
};
|
|
92
|
-
/**
|
|
93
|
-
type
|
|
94
|
-
/**
|
|
95
|
-
interface
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
/** Earliest feasible finish, or `null` when not calculated. */
|
|
99
|
-
earlyFinish: Date | null;
|
|
100
|
-
/** Latest feasible start, or `null` when not calculated. */
|
|
101
|
-
lateStart: Date | null;
|
|
102
|
-
/** Latest feasible finish, or `null` when not calculated. */
|
|
103
|
-
lateFinish: Date | null;
|
|
104
|
-
/** Total working-hour slack, or `null` when not calculated. */
|
|
105
|
-
totalSlackHours: number | null;
|
|
106
|
-
}
|
|
107
|
-
/** Active baseline values copied onto an activity for projection. */
|
|
108
|
-
interface ActivityBaselineSnapshot {
|
|
109
|
-
/** Baseline start, or `null` when unavailable. */
|
|
110
|
-
startDate: Date | null;
|
|
111
|
-
/** Baseline end, or `null` when unavailable. */
|
|
112
|
-
endDate: Date | null;
|
|
113
|
-
/** Baseline duration in working days. */
|
|
114
|
-
durationDays: number;
|
|
115
|
-
cost: number;
|
|
116
|
-
/** Baseline work in hours. */
|
|
117
|
-
workHours: number;
|
|
118
|
-
}
|
|
119
|
-
/** Normalized baseline point retained on a core activity. */
|
|
120
|
-
interface CoreBaselinePoint {
|
|
121
|
-
/** Baseline start, or `null` when the wire value is unavailable. */
|
|
122
|
-
startDate: Date | null;
|
|
123
|
-
/** Baseline end, or `null` when the wire value is unavailable. */
|
|
124
|
-
endDate: Date | null;
|
|
125
|
-
/** Duration in working days. */
|
|
126
|
-
durationDays: number;
|
|
127
|
-
cost: number;
|
|
128
|
-
workHours: number;
|
|
129
|
-
versionId: number | null;
|
|
130
|
-
isActiveVersion: boolean;
|
|
131
|
-
isVisibleVersion: boolean;
|
|
132
|
-
baseCalendarId: CalendarId | null;
|
|
133
|
-
/** Calendar hours per working day, or `null` when unspecified. */
|
|
134
|
-
hoursPerDay: number | null;
|
|
135
|
-
/** Calendar hours per working week, or `null` when unspecified. */
|
|
136
|
-
hoursPerWeek: number | null;
|
|
70
|
+
/** One of the `CONFIRMATION_KIND` values. */
|
|
71
|
+
type ConfirmationKind = (typeof CONFIRMATION_KIND)[keyof typeof CONFIRMATION_KIND];
|
|
72
|
+
/** A second way to resolve a confirmation, applied when its `kind` is confirmed instead. */
|
|
73
|
+
interface ConfirmationAlternative {
|
|
74
|
+
readonly kind: ConfirmationKind;
|
|
75
|
+
readonly effects: Readonly<P6ActivityInputPatch>;
|
|
137
76
|
}
|
|
138
77
|
/**
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
78
|
+
* Returned with `reason: 'confirmation_required'` when an edit needs consent;
|
|
79
|
+
* `effects` is the P6 patch that will be applied once the same intent is
|
|
80
|
+
* re-dispatched with `confirmations: [kind]`. When `alternative` is present,
|
|
81
|
+
* re-dispatching with its kind applies `alternative.effects` instead.
|
|
143
82
|
*/
|
|
144
|
-
interface
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
description: string;
|
|
150
|
-
type: ActivityType;
|
|
151
|
-
startDate: Date;
|
|
152
|
-
endDate: Date;
|
|
153
|
-
/** Stored duration in working hours. */
|
|
154
|
-
durationHours: number;
|
|
155
|
-
/** Scheduling constraint, or `null` when unconstrained. */
|
|
156
|
-
constraintType: ConstraintType | null;
|
|
157
|
-
/** Constraint date, or `null` when the constraint has no date. */
|
|
158
|
-
constraintDate: Date | null;
|
|
159
|
-
autoScheduling: boolean;
|
|
160
|
-
/** Assigned calendar ID, or `null` when no known source/default calendar resolves. */
|
|
161
|
-
calendarId: CalendarId | null;
|
|
162
|
-
assignedDefaultCalendar: boolean;
|
|
163
|
-
/** Consumer-origin date, or `null` when absent. */
|
|
164
|
-
dateOrigin: Date | null;
|
|
165
|
-
progress: number;
|
|
166
|
-
cost: number;
|
|
167
|
-
usedCost: number;
|
|
168
|
-
realCost: number;
|
|
169
|
-
workHours: number;
|
|
170
|
-
realWorkHours: number;
|
|
171
|
-
ponderator: number;
|
|
172
|
-
hasCustomPonderator: boolean;
|
|
173
|
-
correlativeId: number;
|
|
174
|
-
uniqueCorrelativeId: string;
|
|
175
|
-
customId: string | null;
|
|
176
|
-
subcontractId: number | null;
|
|
177
|
-
isLookahead: boolean;
|
|
178
|
-
hasLookaheadTasks: boolean;
|
|
179
|
-
newActivityIds: ActivityId[];
|
|
180
|
-
hasNewActivities: boolean;
|
|
181
|
-
isNewActivity?: true | null;
|
|
182
|
-
pendingRequestIds: string[];
|
|
183
|
-
responsableIds: string[];
|
|
184
|
-
tagIds: string[];
|
|
185
|
-
baselinePoints: CoreBaselinePoint[];
|
|
186
|
-
baselineSnapshot: ActivityBaselineSnapshot | null;
|
|
187
|
-
/** Summary roll-up duration in working hours. */
|
|
188
|
-
recursiveDurationHours: number;
|
|
189
|
-
isCritical: boolean;
|
|
190
|
-
/** Free slack in working hours, or `null` when not calculated. */
|
|
191
|
-
freeSlackHours: number | null;
|
|
192
|
-
/** Inclusive calendar-day span, or `null` when unavailable. */
|
|
193
|
-
calendarDuration?: number | null;
|
|
194
|
-
/**
|
|
195
|
-
* Signed working days between the activity end and its visible baseline end,
|
|
196
|
-
* or `null` when no visible baseline applies. Positive means finishing late.
|
|
197
|
-
*/
|
|
198
|
-
baselineVarianceDays: number | null;
|
|
199
|
-
/** Expected progress percentage, or `null` when unavailable. */
|
|
200
|
-
expectedProgress: number | null;
|
|
201
|
-
/** Baseline expected progress percentage, or `null` when unavailable. */
|
|
202
|
-
expectedProgressBaseline: number | null;
|
|
203
|
-
status: ActivityStatus | null;
|
|
204
|
-
criticalPath: CriticalPathResult | null;
|
|
205
|
-
}
|
|
206
|
-
/** Normalized dependency-link snapshot. */
|
|
207
|
-
interface Link {
|
|
208
|
-
id: LinkId;
|
|
209
|
-
source: ActivityId;
|
|
210
|
-
target: ActivityId;
|
|
211
|
-
type: LinkType;
|
|
212
|
-
/** Stored dependency lag in working hours. */
|
|
213
|
-
lag: number;
|
|
214
|
-
/** Free slack in working hours, or `null` when not calculated. */
|
|
215
|
-
freeSlackHours: number | null;
|
|
216
|
-
isCritical: boolean;
|
|
217
|
-
ganttId?: number;
|
|
218
|
-
sectorId?: number;
|
|
219
|
-
proplannerId?: number;
|
|
220
|
-
}
|
|
221
|
-
/** Persisted identity retained after an activity is deleted. */
|
|
222
|
-
interface DeletedActivitySnapshot {
|
|
223
|
-
readonly id: ActivityId;
|
|
224
|
-
readonly proplannerId: number;
|
|
225
|
-
readonly parentId: ActivityId | null;
|
|
226
|
-
readonly hadBaseline: boolean;
|
|
227
|
-
}
|
|
228
|
-
/** Persisted link identity and endpoints retained after deletion. */
|
|
229
|
-
interface DeletedLinkSnapshot {
|
|
230
|
-
readonly id: LinkId;
|
|
231
|
-
readonly proplannerId: number;
|
|
232
|
-
readonly source: ActivityId;
|
|
233
|
-
readonly target: ActivityId;
|
|
234
|
-
readonly type: LinkType;
|
|
235
|
-
/** Stored lag in working hours. */
|
|
236
|
-
readonly lag: number;
|
|
237
|
-
}
|
|
238
|
-
/** Normalized calendar work-week, exception, and custom-week rules. */
|
|
239
|
-
interface CalendarWorktime {
|
|
240
|
-
days: Array<false | string[]>;
|
|
241
|
-
hours: string[];
|
|
242
|
-
dates?: Record<string, false | string[]>;
|
|
243
|
-
customWeeks?: Record<string, unknown>;
|
|
244
|
-
}
|
|
245
|
-
/** Normalized schedule or base calendar snapshot. */
|
|
246
|
-
interface Calendar {
|
|
247
|
-
id: CalendarId;
|
|
248
|
-
name: string;
|
|
249
|
-
worktime: CalendarWorktime;
|
|
250
|
-
is_default: boolean;
|
|
251
|
-
baseDefault?: boolean;
|
|
252
|
-
exceptions?: Record<string, {
|
|
253
|
-
working: boolean;
|
|
254
|
-
hours?: string[];
|
|
255
|
-
}>;
|
|
83
|
+
interface ConfirmationRequest {
|
|
84
|
+
readonly kind: ConfirmationKind;
|
|
85
|
+
readonly activityId: string;
|
|
86
|
+
readonly effects: Readonly<P6ActivityInputPatch>;
|
|
87
|
+
readonly alternative?: ConfirmationAlternative;
|
|
256
88
|
}
|
|
257
|
-
/** Normalized schedule metadata derived from the backend `sector` field. */
|
|
258
|
-
interface SectorMetadata {
|
|
259
|
-
id: string;
|
|
260
|
-
name: string;
|
|
261
|
-
/** Working hours per day used for day/hour conversion. */
|
|
262
|
-
hoursPerDay: number;
|
|
263
|
-
/** Working hours per week. */
|
|
264
|
-
hoursPerWeek: number;
|
|
265
|
-
dateFormat: string;
|
|
266
|
-
projectId: number;
|
|
267
|
-
companyId: number;
|
|
268
|
-
customIdPrefix?: string;
|
|
269
|
-
customIdIncrement?: string;
|
|
270
|
-
updateDurationForPrimaveraEndDate?: boolean;
|
|
271
|
-
activityCreter?: ActivityCreter;
|
|
272
|
-
statusCriteria: StatusCriteria;
|
|
273
|
-
ganttId: number | null;
|
|
274
|
-
}
|
|
275
|
-
/** Canonical entity-change operations in consumer projections. */
|
|
276
|
-
declare const ENTITY_CHANGE_KIND: {
|
|
277
|
-
readonly CREATED: "created";
|
|
278
|
-
readonly UPDATED: "updated";
|
|
279
|
-
readonly DELETED: "deleted";
|
|
280
|
-
};
|
|
281
|
-
type EntityChangeKind = (typeof ENTITY_CHANGE_KIND)[keyof typeof ENTITY_CHANGE_KIND];
|
|
282
|
-
/** One created, updated, or deleted entity in a consumer projection. */
|
|
283
|
-
interface EntityChange<T> {
|
|
284
|
-
id: string;
|
|
285
|
-
kind: EntityChangeKind;
|
|
286
|
-
fields?: Record<string, {
|
|
287
|
-
before: unknown;
|
|
288
|
-
after: unknown;
|
|
289
|
-
}> | undefined;
|
|
290
|
-
/** Complete post-change snapshot, or `null` for deletion. */
|
|
291
|
-
after: Readonly<T> | null;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/** Named normalized activity scheduling constraints. */
|
|
295
|
-
declare const CONSTRAINT_TYPE: {
|
|
296
|
-
readonly ASAP: "asap";
|
|
297
|
-
readonly ALAP: "alap";
|
|
298
|
-
readonly SNET: "snet";
|
|
299
|
-
readonly SNLT: "snlt";
|
|
300
|
-
readonly FNET: "fnet";
|
|
301
|
-
readonly FNLT: "fnlt";
|
|
302
|
-
readonly MSO: "mso";
|
|
303
|
-
readonly MFO: "mfo";
|
|
304
|
-
};
|
|
305
|
-
/** Normalized activity scheduling constraint. */
|
|
306
|
-
type ConstraintType = (typeof CONSTRAINT_TYPE)[keyof typeof CONSTRAINT_TYPE];
|
|
307
|
-
|
|
308
|
-
declare const SAVE_FIELD_POLICY: {
|
|
309
|
-
readonly TRACKED: "tracked";
|
|
310
|
-
readonly IGNORED: "ignored";
|
|
311
|
-
};
|
|
312
|
-
|
|
313
|
-
declare const ACTIVITY_SAVE_FIELD_POLICY: {
|
|
314
|
-
readonly id: "ignored";
|
|
315
|
-
readonly proplannerId: "ignored";
|
|
316
|
-
readonly parentId: "tracked";
|
|
317
|
-
readonly name: "tracked";
|
|
318
|
-
readonly description: "tracked";
|
|
319
|
-
readonly type: "tracked";
|
|
320
|
-
readonly startDate: "tracked";
|
|
321
|
-
readonly endDate: "tracked";
|
|
322
|
-
readonly durationHours: "tracked";
|
|
323
|
-
readonly constraintType: "tracked";
|
|
324
|
-
readonly constraintDate: "tracked";
|
|
325
|
-
readonly autoScheduling: "tracked";
|
|
326
|
-
readonly calendarId: "tracked";
|
|
327
|
-
readonly assignedDefaultCalendar: "ignored";
|
|
328
|
-
readonly dateOrigin: "tracked";
|
|
329
|
-
readonly progress: "tracked";
|
|
330
|
-
readonly cost: "tracked";
|
|
331
|
-
readonly usedCost: "tracked";
|
|
332
|
-
readonly realCost: "tracked";
|
|
333
|
-
readonly workHours: "tracked";
|
|
334
|
-
readonly realWorkHours: "tracked";
|
|
335
|
-
readonly ponderator: "tracked";
|
|
336
|
-
readonly hasCustomPonderator: "tracked";
|
|
337
|
-
readonly correlativeId: "tracked";
|
|
338
|
-
readonly uniqueCorrelativeId: "tracked";
|
|
339
|
-
readonly customId: "tracked";
|
|
340
|
-
readonly subcontractId: "tracked";
|
|
341
|
-
readonly isLookahead: "tracked";
|
|
342
|
-
readonly hasLookaheadTasks: "ignored";
|
|
343
|
-
readonly newActivityIds: "tracked";
|
|
344
|
-
readonly hasNewActivities: "tracked";
|
|
345
|
-
readonly isNewActivity: "ignored";
|
|
346
|
-
readonly pendingRequestIds: "ignored";
|
|
347
|
-
readonly responsableIds: "tracked";
|
|
348
|
-
readonly tagIds: "tracked";
|
|
349
|
-
readonly baselinePoints: "ignored";
|
|
350
|
-
readonly baselineSnapshot: "ignored";
|
|
351
|
-
readonly recursiveDurationHours: "ignored";
|
|
352
|
-
readonly isCritical: "ignored";
|
|
353
|
-
readonly freeSlackHours: "ignored";
|
|
354
|
-
readonly calendarDuration: "ignored";
|
|
355
|
-
readonly baselineVarianceDays: "ignored";
|
|
356
|
-
readonly expectedProgress: "ignored";
|
|
357
|
-
readonly expectedProgressBaseline: "ignored";
|
|
358
|
-
readonly status: "ignored";
|
|
359
|
-
readonly criticalPath: "ignored";
|
|
360
|
-
};
|
|
361
|
-
/**
|
|
362
|
-
* Activity field included in consumer persistence comparisons.
|
|
363
|
-
*
|
|
364
|
-
* Derived scheduling, baseline, selection, and backend identity fields are
|
|
365
|
-
* intentionally excluded.
|
|
366
|
-
*/
|
|
367
|
-
type PersistableActivityField = {
|
|
368
|
-
[Field in keyof typeof ACTIVITY_SAVE_FIELD_POLICY]: (typeof ACTIVITY_SAVE_FIELD_POLICY)[Field] extends typeof SAVE_FIELD_POLICY.TRACKED ? Field : never;
|
|
369
|
-
}[keyof typeof ACTIVITY_SAVE_FIELD_POLICY];
|
|
370
|
-
|
|
371
|
-
/** Progress percentage representing a not-started activity. */
|
|
372
|
-
declare const NOT_STARTED_PROGRESS = 0;
|
|
373
|
-
/** Progress percentage representing a completed activity. */
|
|
374
|
-
declare const COMPLETED_PROGRESS = 100;
|
|
375
|
-
|
|
376
|
-
/** Canonical reasons why an activity field edit may be blocked. */
|
|
377
|
-
declare const EDIT_DENIAL_REASON: {
|
|
378
|
-
readonly COMPLETED: "completed";
|
|
379
|
-
readonly SUMMARY: "summary";
|
|
380
|
-
readonly HAS_PROGRESS: "has_progress";
|
|
381
|
-
readonly HAS_LOOKAHEAD_TASKS: "has_lookahead_tasks";
|
|
382
|
-
readonly SIR_START_AFTER_PROGRESS: "sir_start_after_progress";
|
|
383
|
-
};
|
|
384
|
-
/** Reason code returned when an activity field edit is blocked. */
|
|
385
|
-
type EditDenialReason = (typeof EDIT_DENIAL_REASON)[keyof typeof EDIT_DENIAL_REASON];
|
|
386
|
-
/** Canonical presentation keys associated with blocked activity edits. */
|
|
387
|
-
declare const EDIT_ALERT_KEY: {
|
|
388
|
-
readonly CANT_EDIT_COMPLETED: "cant_edit_completed_activity";
|
|
389
|
-
readonly SUMMARY_COLUMN_VALUE: "summary_column_value";
|
|
390
|
-
readonly CANT_EDIT_WITH_PROGRESS: "cant_edit_activity_with_progress";
|
|
391
|
-
readonly SIR_CANT_MOVE_START_AFTER_PROGRESS: "sir_cant_move_start_after_progress";
|
|
392
|
-
readonly CANT_EDIT_WITH_TASK: "cant_edit_actvity_with_task";
|
|
393
|
-
};
|
|
394
|
-
/** Presentation key optionally returned with a blocked activity edit. */
|
|
395
|
-
type EditAlertKey = (typeof EDIT_ALERT_KEY)[keyof typeof EDIT_ALERT_KEY];
|
|
396
|
-
|
|
397
|
-
/** Describes whether a column value can be edited and why it may be blocked. */
|
|
398
|
-
type EditResult = {
|
|
399
|
-
readonly allowed: true;
|
|
400
|
-
} | {
|
|
401
|
-
readonly allowed: false;
|
|
402
|
-
readonly reason: EditDenialReason;
|
|
403
|
-
readonly alertKey?: EditAlertKey;
|
|
404
|
-
};
|
|
405
89
|
|
|
406
90
|
declare const EDITABLE: {
|
|
91
|
+
readonly ACTUAL_START: "actualStart";
|
|
92
|
+
readonly ACTUAL_FINISH: "actualFinish";
|
|
93
|
+
readonly PLANNED_START: "plannedStart";
|
|
94
|
+
readonly PLANNED_FINISH: "plannedFinish";
|
|
95
|
+
readonly REMAINING_DURATION_HOURS: "remainingDurationHours";
|
|
96
|
+
readonly EXECUTION_STATUS: "executionStatus";
|
|
97
|
+
readonly EXPECTED_FINISH: "expectedFinish";
|
|
98
|
+
readonly SUSPEND_DATE: "suspendDate";
|
|
99
|
+
readonly RESUME_DATE: "resumeDate";
|
|
100
|
+
readonly SECONDARY_CONSTRAINT_TYPE: "secondaryConstraintType";
|
|
101
|
+
readonly SECONDARY_CONSTRAINT_DATE: "secondaryConstraintDate";
|
|
102
|
+
readonly PERCENT_COMPLETE_TYPE: "percentCompleteType";
|
|
103
|
+
readonly PHYSICAL_PERCENT_COMPLETE: "physicalPercentComplete";
|
|
407
104
|
readonly TEXT: "text";
|
|
408
105
|
readonly DESCRIPTION: "description";
|
|
409
106
|
readonly DURATION: "duration";
|
|
@@ -447,6 +144,19 @@ declare const COLUMN: {
|
|
|
447
144
|
readonly UNIQUE_CORRELATIVE_ID: "unique_correlative_id";
|
|
448
145
|
readonly PONDERATOR: "ponderator";
|
|
449
146
|
readonly STATUS: "status";
|
|
147
|
+
readonly ACTUAL_START: "actualStart";
|
|
148
|
+
readonly ACTUAL_FINISH: "actualFinish";
|
|
149
|
+
readonly PLANNED_START: "plannedStart";
|
|
150
|
+
readonly PLANNED_FINISH: "plannedFinish";
|
|
151
|
+
readonly REMAINING_DURATION_HOURS: "remainingDurationHours";
|
|
152
|
+
readonly EXECUTION_STATUS: "executionStatus";
|
|
153
|
+
readonly EXPECTED_FINISH: "expectedFinish";
|
|
154
|
+
readonly SUSPEND_DATE: "suspendDate";
|
|
155
|
+
readonly RESUME_DATE: "resumeDate";
|
|
156
|
+
readonly SECONDARY_CONSTRAINT_TYPE: "secondaryConstraintType";
|
|
157
|
+
readonly SECONDARY_CONSTRAINT_DATE: "secondaryConstraintDate";
|
|
158
|
+
readonly PERCENT_COMPLETE_TYPE: "percentCompleteType";
|
|
159
|
+
readonly PHYSICAL_PERCENT_COMPLETE: "physicalPercentComplete";
|
|
450
160
|
readonly TEXT: "text";
|
|
451
161
|
readonly DESCRIPTION: "description";
|
|
452
162
|
readonly DURATION: "duration";
|
|
@@ -471,9 +181,23 @@ type EditableColumnName = (typeof EDITABLE)[keyof typeof EDITABLE];
|
|
|
471
181
|
/** Canonical editable or read-only column name. */
|
|
472
182
|
type ColumnName = (typeof COLUMN)[keyof typeof COLUMN];
|
|
473
183
|
|
|
184
|
+
/** Describes whether a column value can be edited and why it may be blocked. */
|
|
185
|
+
type EditResult = {
|
|
186
|
+
readonly allowed: true;
|
|
187
|
+
} | {
|
|
188
|
+
readonly allowed: false;
|
|
189
|
+
readonly reason: EditDenialReason;
|
|
190
|
+
readonly alertKey?: EditAlertKey;
|
|
191
|
+
};
|
|
192
|
+
|
|
474
193
|
/** Editable column handled by the canonical field-mutation pipeline. */
|
|
475
194
|
type PipelineColumnName = Exclude<(typeof EDITABLE)[keyof typeof EDITABLE], typeof COLUMN.CUSTOM_PREDECESSORS | typeof COLUMN.CUSTOM_SUCESSORS>;
|
|
476
195
|
|
|
196
|
+
/** Progress percentage representing a not-started activity. */
|
|
197
|
+
declare const NOT_STARTED_PROGRESS = 0;
|
|
198
|
+
/** Progress percentage representing a completed activity. */
|
|
199
|
+
declare const COMPLETED_PROGRESS = 100;
|
|
200
|
+
|
|
477
201
|
declare const CREATION_OVERRIDE_FIELD_LIST: readonly ["name", "description", "type", "startDate", "durationHours", "constraintType", "constraintDate", "calendarId", "assignedDefaultCalendar", "autoScheduling", "progress", "cost", "usedCost", "realCost", "workHours", "realWorkHours", "ponderator", "hasCustomPonderator", "customId", "subcontractId", "responsableIds", "tagIds", "isLookahead"];
|
|
478
202
|
type CreationOverrideField = (typeof CREATION_OVERRIDE_FIELD_LIST)[number];
|
|
479
203
|
type CreationOverrides = Partial<Pick<CoreActivity, CreationOverrideField>>;
|
|
@@ -583,6 +307,8 @@ declare const FILTER_FIELD: {
|
|
|
583
307
|
readonly CALENDAR_ID: "calendarId";
|
|
584
308
|
readonly SUBCONTRACT_ID: "subcontractId";
|
|
585
309
|
readonly IS_CRITICAL: "isCritical";
|
|
310
|
+
readonly FLOAT_PATH: "floatPath";
|
|
311
|
+
readonly FLOAT_PATH_ORDER: "floatPathOrder";
|
|
586
312
|
};
|
|
587
313
|
/** Operators accepted by typed filter criteria. */
|
|
588
314
|
declare const FILTER_OPERATOR: {
|
|
@@ -609,7 +335,7 @@ type MembershipOperator = typeof FILTER_OPERATOR.SOME_OF | typeof FILTER_OPERATO
|
|
|
609
335
|
/** Operator accepted by at least one public filter field. */
|
|
610
336
|
type FilterOperator = StringOperator | NumberOperator | DateOperator | typeof FILTER_OPERATOR.BETWEEN | MembershipOperator;
|
|
611
337
|
type StringFilterField = typeof FILTER_FIELD.NAME | typeof FILTER_FIELD.DESCRIPTION | typeof FILTER_FIELD.CUSTOM_ID;
|
|
612
|
-
type NumberFilterField = typeof FILTER_FIELD.CORRELATIVE_ID | typeof FILTER_FIELD.UNIQUE_CORRELATIVE_ID | typeof FILTER_FIELD.PROGRESS | typeof FILTER_FIELD.DURATION_DAYS | typeof FILTER_FIELD.CALENDAR_DURATION | typeof FILTER_FIELD.COST | typeof FILTER_FIELD.USED_COST | typeof FILTER_FIELD.REAL_COST | typeof FILTER_FIELD.WORK_HOURS | typeof FILTER_FIELD.REAL_WORK_HOURS | typeof FILTER_FIELD.PONDERATOR | typeof FILTER_FIELD.FREE_SLACK_DAYS | typeof FILTER_FIELD.TOTAL_SLACK_DAYS | typeof FILTER_FIELD.EXPECTED_PROGRESS_BASELINE | typeof FILTER_FIELD.BASELINE_DURATION_DAYS | typeof FILTER_FIELD.BASELINE_VARIANCE_DAYS | typeof FILTER_FIELD.BASELINE_COST | typeof FILTER_FIELD.BASELINE_WORK_HOURS | typeof FILTER_FIELD.EXPECTED_PROGRESS;
|
|
338
|
+
type NumberFilterField = typeof FILTER_FIELD.CORRELATIVE_ID | typeof FILTER_FIELD.UNIQUE_CORRELATIVE_ID | typeof FILTER_FIELD.PROGRESS | typeof FILTER_FIELD.DURATION_DAYS | typeof FILTER_FIELD.CALENDAR_DURATION | typeof FILTER_FIELD.COST | typeof FILTER_FIELD.USED_COST | typeof FILTER_FIELD.REAL_COST | typeof FILTER_FIELD.WORK_HOURS | typeof FILTER_FIELD.REAL_WORK_HOURS | typeof FILTER_FIELD.PONDERATOR | typeof FILTER_FIELD.FREE_SLACK_DAYS | typeof FILTER_FIELD.TOTAL_SLACK_DAYS | typeof FILTER_FIELD.EXPECTED_PROGRESS_BASELINE | typeof FILTER_FIELD.BASELINE_DURATION_DAYS | typeof FILTER_FIELD.BASELINE_VARIANCE_DAYS | typeof FILTER_FIELD.BASELINE_COST | typeof FILTER_FIELD.BASELINE_WORK_HOURS | typeof FILTER_FIELD.EXPECTED_PROGRESS | typeof FILTER_FIELD.FLOAT_PATH | typeof FILTER_FIELD.FLOAT_PATH_ORDER;
|
|
613
339
|
type DateFilterField = typeof FILTER_FIELD.START_DATE | typeof FILTER_FIELD.END_DATE | typeof FILTER_FIELD.CONSTRAINT_DATE | typeof FILTER_FIELD.BASELINE_START_DATE | typeof FILTER_FIELD.BASELINE_END_DATE | typeof FILTER_FIELD.EARLY_START | typeof FILTER_FIELD.EARLY_FINISH | typeof FILTER_FIELD.LATE_START | typeof FILTER_FIELD.LATE_FINISH;
|
|
614
340
|
type IdArrayFilterField = typeof FILTER_FIELD.RESPONSABLE_IDS | typeof FILTER_FIELD.TAG_IDS;
|
|
615
341
|
type EnumFilterField = typeof FILTER_FIELD.STATUS | typeof FILTER_FIELD.CONSTRAINT_TYPE;
|
|
@@ -916,6 +642,9 @@ interface PersistedEntityIdentity {
|
|
|
916
642
|
interface PersistenceCheckpoint {
|
|
917
643
|
readonly activities: ReadonlyArray<Readonly<CoreActivity>>;
|
|
918
644
|
readonly links: ReadonlyArray<Readonly<Link>>;
|
|
645
|
+
readonly p6Settings?: Readonly<P6ScheduleSettings> | null;
|
|
646
|
+
readonly p6ProjectState?: Readonly<P6ProjectState> | null;
|
|
647
|
+
readonly p6LatestRunLog?: Readonly<P6ScheduleRunLog> | null;
|
|
919
648
|
readonly historyBoundary: number;
|
|
920
649
|
}
|
|
921
650
|
/** Available activity-batch replacement policies. */
|
|
@@ -1153,6 +882,7 @@ interface DispatchOptions {
|
|
|
1153
882
|
skipCriticalPath?: boolean;
|
|
1154
883
|
/** Rejects create/update commands that touch an activity with children. */
|
|
1155
884
|
rejectParentLinkMutations?: boolean;
|
|
885
|
+
confirmations?: readonly ConfirmationKind[];
|
|
1156
886
|
}
|
|
1157
887
|
/**
|
|
1158
888
|
* Complete accepted or rejected command result returned unchanged by public APIs.
|
|
@@ -1171,6 +901,7 @@ type DispatchResult = {
|
|
|
1171
901
|
ok: false;
|
|
1172
902
|
reason: string;
|
|
1173
903
|
alertKey?: string | undefined;
|
|
904
|
+
confirmation?: ConfirmationRequest;
|
|
1174
905
|
};
|
|
1175
906
|
/** Ordered per-command results plus the single deferred finalization payload. */
|
|
1176
907
|
interface DispatchManyResult {
|
|
@@ -1196,6 +927,7 @@ type DatesBatchVerdict = {
|
|
|
1196
927
|
ok: false;
|
|
1197
928
|
reason: string;
|
|
1198
929
|
alertKey?: string | undefined;
|
|
930
|
+
confirmation?: ConfirmationRequest;
|
|
1199
931
|
};
|
|
1200
932
|
/** Per-operation acceptance result for a dependency batch. */
|
|
1201
933
|
type LinkBatchVerdict = {
|
|
@@ -1244,59 +976,664 @@ interface ConstraintWarning {
|
|
|
1244
976
|
projectedDate: Date;
|
|
1245
977
|
messageKey: string;
|
|
1246
978
|
}
|
|
1247
|
-
/** Boolean value before and after a view-state mutation. */
|
|
1248
|
-
interface ViewStatePropChange {
|
|
1249
|
-
readonly before: boolean;
|
|
1250
|
-
readonly after: boolean;
|
|
979
|
+
/** Boolean value before and after a view-state mutation. */
|
|
980
|
+
interface ViewStatePropChange {
|
|
981
|
+
readonly before: boolean;
|
|
982
|
+
readonly after: boolean;
|
|
983
|
+
}
|
|
984
|
+
/** Selection and/or visibility projection change for one activity. */
|
|
985
|
+
interface ViewStateChange {
|
|
986
|
+
readonly activityId: ActivityId;
|
|
987
|
+
readonly checked?: ViewStatePropChange;
|
|
988
|
+
readonly visible?: ViewStatePropChange;
|
|
989
|
+
}
|
|
990
|
+
/** Aggregate and lifecycle change-set source kinds. */
|
|
991
|
+
declare const CHANGE_SET_SOURCE_KIND: {
|
|
992
|
+
readonly DISPATCH_MANY: "dispatch-many";
|
|
993
|
+
readonly INIT: "init";
|
|
994
|
+
readonly UNDO: "undo";
|
|
995
|
+
readonly REDO: "redo";
|
|
996
|
+
readonly P6_SETTINGS_UPDATE: "p6-settings-update";
|
|
997
|
+
readonly P6_ACTIVITY_UPDATE: "p6-activity-update";
|
|
998
|
+
readonly P6_SCHEDULE: "p6-schedule";
|
|
999
|
+
};
|
|
1000
|
+
/** Truthful source for one partial ordered public dispatch batch. */
|
|
1001
|
+
interface DispatchManyChangeSetSource {
|
|
1002
|
+
readonly kind: typeof CHANGE_SET_SOURCE_KIND.DISPATCH_MANY;
|
|
1003
|
+
readonly actions: readonly DispatchManyAction[];
|
|
1004
|
+
}
|
|
1005
|
+
/** Public command, activity batch, or lifecycle operation that produced changes. */
|
|
1006
|
+
type ChangeSetSource = DispatchManyAction | DispatchManyChangeSetSource | {
|
|
1007
|
+
kind: typeof CHANGE_SET_SOURCE_KIND.INIT | typeof CHANGE_SET_SOURCE_KIND.UNDO | typeof CHANGE_SET_SOURCE_KIND.REDO;
|
|
1008
|
+
} | {
|
|
1009
|
+
kind: typeof CHANGE_SET_SOURCE_KIND.P6_SETTINGS_UPDATE | typeof CHANGE_SET_SOURCE_KIND.P6_ACTIVITY_UPDATE | typeof CHANGE_SET_SOURCE_KIND.P6_SCHEDULE;
|
|
1010
|
+
};
|
|
1011
|
+
/** Before/after images of the P6 schedule settings when an operation changed them. */
|
|
1012
|
+
interface P6SettingsChange {
|
|
1013
|
+
readonly before: P6ScheduleSettings | null;
|
|
1014
|
+
readonly after: P6ScheduleSettings | null;
|
|
1015
|
+
}
|
|
1016
|
+
/** Before/after images of the project planned start when an operation changed it. */
|
|
1017
|
+
interface P6ProjectPlannedStartChange {
|
|
1018
|
+
readonly before: Date | null;
|
|
1019
|
+
readonly after: Date | null;
|
|
1020
|
+
}
|
|
1021
|
+
/**
|
|
1022
|
+
* Complete ordered projection payload produced by an accepted operation.
|
|
1023
|
+
*
|
|
1024
|
+
* Consumers apply every populated collection in result order. Applying a change
|
|
1025
|
+
* set updates external projection only; persistence remains consumer-owned.
|
|
1026
|
+
*/
|
|
1027
|
+
interface ChangeSet {
|
|
1028
|
+
/** Command, ordered dispatch batch, or lifecycle operation that produced it. */
|
|
1029
|
+
source: ChangeSetSource;
|
|
1030
|
+
/** Activity create, update, and delete records. */
|
|
1031
|
+
activities: ReadonlyArray<EntityChange<CoreActivity>>;
|
|
1032
|
+
/** Link create, update, and delete records; lag fields use stored hours. */
|
|
1033
|
+
links: ReadonlyArray<EntityChange<Link>>;
|
|
1034
|
+
/** Calendar create, update, and delete records. */
|
|
1035
|
+
calendars: ReadonlyArray<EntityChange<Calendar>>;
|
|
1036
|
+
/** Consumer-owned analytics events. */
|
|
1037
|
+
trackingEvents: ReadonlyArray<TrackingEvent>;
|
|
1038
|
+
/** Optional checked/visible projection updates. */
|
|
1039
|
+
viewState?: ReadonlyArray<ViewStateChange>;
|
|
1040
|
+
/** Optional visual child order grouped by parent. */
|
|
1041
|
+
order?: ReadonlyArray<BranchOrderChange>;
|
|
1042
|
+
/** Optional integration effects for consumer handling. */
|
|
1043
|
+
effects?: ReadonlyArray<ScheduleEffect>;
|
|
1044
|
+
/** Optional non-fatal warnings for consumer presentation. */
|
|
1045
|
+
warnings?: ReadonlyArray<ConstraintWarning>;
|
|
1046
|
+
p6Settings?: P6SettingsChange;
|
|
1047
|
+
p6ProjectPlannedStart?: P6ProjectPlannedStartChange;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
declare const P6_CRITICAL_ACTIVITY_METHOD: {
|
|
1051
|
+
readonly TOTAL_FLOAT: "total_float";
|
|
1052
|
+
readonly LONGEST_PATH: "longest_path";
|
|
1053
|
+
};
|
|
1054
|
+
declare const P6_PERCENT_COMPLETE_TYPE: {
|
|
1055
|
+
readonly DURATION: "duration";
|
|
1056
|
+
readonly UNITS: "units";
|
|
1057
|
+
readonly PHYSICAL: "physical";
|
|
1058
|
+
};
|
|
1059
|
+
declare const P6_ACTIVITY_TYPE: {
|
|
1060
|
+
readonly TASK: "task";
|
|
1061
|
+
readonly LEVEL_OF_EFFORT: "level_of_effort";
|
|
1062
|
+
readonly START_MILESTONE: "start_milestone";
|
|
1063
|
+
readonly FINISH_MILESTONE: "finish_milestone";
|
|
1064
|
+
readonly WBS_SUMMARY: "wbs_summary";
|
|
1065
|
+
readonly RESOURCE_DEPENDENT: "resource_dependent";
|
|
1066
|
+
};
|
|
1067
|
+
/** P6 scheduling option deciding how progressed successors with unsatisfied logic are scheduled. */
|
|
1068
|
+
type P6OutOfSequencePolicy = 'retained_logic' | 'progress_override' | 'actual_dates';
|
|
1069
|
+
/** Activity identifier column used when P6 relationships reference other activities. */
|
|
1070
|
+
type P6DependencyReference = 'correlative_id' | 'custom_id';
|
|
1071
|
+
/** Project-level Data Date state persisted alongside the schedule settings. */
|
|
1072
|
+
interface P6ProjectState {
|
|
1073
|
+
readonly plannedStart: Date | null;
|
|
1074
|
+
}
|
|
1075
|
+
/**
|
|
1076
|
+
* Persisted P6 schedule options (F9 dialog and project defaults). `dataDate`
|
|
1077
|
+
* `null` means the Data Date regime is inactive and normal Outbuild rules apply.
|
|
1078
|
+
* Durations and thresholds are expressed in working hours.
|
|
1079
|
+
*/
|
|
1080
|
+
interface P6ScheduleSettings {
|
|
1081
|
+
readonly dataDate: Date | null;
|
|
1082
|
+
readonly outOfSequencePolicy: P6OutOfSequencePolicy;
|
|
1083
|
+
readonly dependencyReference: P6DependencyReference;
|
|
1084
|
+
readonly useExpectedFinishDates: boolean;
|
|
1085
|
+
readonly startToStartLagBasis: 'actual_start' | 'early_start';
|
|
1086
|
+
readonly relationshipLagCalendar: 'predecessor' | 'successor' | 'project_default' | 'twenty_four_hour';
|
|
1087
|
+
readonly totalFloatMethod: 'start_float' | 'finish_float' | 'smallest';
|
|
1088
|
+
readonly criticalActivityMethod: (typeof P6_CRITICAL_ACTIVITY_METHOD)[keyof typeof P6_CRITICAL_ACTIVITY_METHOD];
|
|
1089
|
+
readonly criticalFloatThresholdHours: number;
|
|
1090
|
+
readonly makeOpenEndedActivitiesCritical: boolean;
|
|
1091
|
+
readonly externalRelationshipPolicy: string;
|
|
1092
|
+
readonly calculateFloatBasedOn: 'each_project' | 'opened_projects';
|
|
1093
|
+
readonly setDataDateAndPlannedStartToForecastStart: boolean;
|
|
1094
|
+
readonly projectMustFinishBy: Date | null;
|
|
1095
|
+
readonly projectForecastStart: Date | null;
|
|
1096
|
+
readonly multipleFloatPaths: {
|
|
1097
|
+
readonly enabled: boolean;
|
|
1098
|
+
readonly limitEnabled: boolean;
|
|
1099
|
+
readonly maximum: number;
|
|
1100
|
+
readonly useTotalFloat: boolean;
|
|
1101
|
+
readonly endingActivityId: ActivityId | null;
|
|
1102
|
+
};
|
|
1103
|
+
}
|
|
1104
|
+
/** P6 activity subtype (`task`, milestones, level of effort, WBS summary, resource dependent). */
|
|
1105
|
+
type P6ActivityType = (typeof P6_ACTIVITY_TYPE)[keyof typeof P6_ACTIVITY_TYPE];
|
|
1106
|
+
declare const P6_DURATION_TYPE: {
|
|
1107
|
+
readonly FIXED_DURATION_AND_UNITS: "fixed_duration_and_units";
|
|
1108
|
+
readonly FIXED_DURATION_AND_UNITS_PER_TIME: "fixed_duration_and_units_per_time";
|
|
1109
|
+
};
|
|
1110
|
+
/** P6 duration type governing how units and duration interact on an activity. */
|
|
1111
|
+
type P6DurationType = (typeof P6_DURATION_TYPE)[keyof typeof P6_DURATION_TYPE];
|
|
1112
|
+
type P6PrimaryConstraintType = ConstraintType | 'start_on' | 'finish_on' | 'mandatory_start' | 'mandatory_finish';
|
|
1113
|
+
/** Minimal scheduling contract for a P6 resource assignment. */
|
|
1114
|
+
interface P6ResourceAssignment {
|
|
1115
|
+
readonly id: string;
|
|
1116
|
+
readonly resourceId: string;
|
|
1117
|
+
readonly calendarId: CalendarId;
|
|
1118
|
+
readonly actualStart: Date | null;
|
|
1119
|
+
readonly actualFinish: Date | null;
|
|
1120
|
+
readonly actualUnits: number;
|
|
1121
|
+
readonly remainingUnits: number;
|
|
1122
|
+
readonly unitsPerHour: number;
|
|
1123
|
+
}
|
|
1124
|
+
/**
|
|
1125
|
+
* Persisted and calculated P6 properties of one activity. Dates are UTC
|
|
1126
|
+
* instants, durations and floats are working hours, percentages are 0–100.
|
|
1127
|
+
*/
|
|
1128
|
+
interface P6ActivityData {
|
|
1129
|
+
/** P6 scheduling subtype needed when its date endpoints have distinct logic. */
|
|
1130
|
+
readonly activityType?: P6ActivityType;
|
|
1131
|
+
/** P6 duration behavior, preserved when a certified calculation depends on it. */
|
|
1132
|
+
readonly durationType?: P6DurationType;
|
|
1133
|
+
/** Exact imported P6 token retained when canonical types have different scheduling semantics. */
|
|
1134
|
+
readonly sourcePrimaryConstraintToken?: string | null;
|
|
1135
|
+
readonly resourceAssignments?: readonly P6ResourceAssignment[];
|
|
1136
|
+
readonly actualStart: Date | null;
|
|
1137
|
+
readonly actualFinish: Date | null;
|
|
1138
|
+
readonly plannedStart: Date | null;
|
|
1139
|
+
readonly plannedFinish: Date | null;
|
|
1140
|
+
readonly remainingDurationHours: number;
|
|
1141
|
+
readonly executionStatus: 'not_started' | 'in_progress' | 'completed';
|
|
1142
|
+
readonly expectedFinish: Date | null;
|
|
1143
|
+
readonly suspendDate: Date | null;
|
|
1144
|
+
readonly resumeDate: Date | null;
|
|
1145
|
+
/** Raw primary constraint retained from P6 before activity-date normalization. */
|
|
1146
|
+
readonly primaryConstraintType?: P6PrimaryConstraintType | null;
|
|
1147
|
+
readonly primaryConstraintDate?: Date | null;
|
|
1148
|
+
readonly secondaryConstraintType: ConstraintType | null;
|
|
1149
|
+
readonly secondaryConstraintDate: Date | null;
|
|
1150
|
+
readonly percentCompleteType: (typeof P6_PERCENT_COMPLETE_TYPE)[keyof typeof P6_PERCENT_COMPLETE_TYPE];
|
|
1151
|
+
readonly physicalPercentComplete: number;
|
|
1152
|
+
readonly actualDurationHours: number;
|
|
1153
|
+
readonly atCompletionDurationHours: number;
|
|
1154
|
+
readonly durationPercentComplete: number;
|
|
1155
|
+
readonly unitsPercentComplete: number;
|
|
1156
|
+
readonly schedulePercentComplete: number | null;
|
|
1157
|
+
readonly remainingFloatHours: number | null;
|
|
1158
|
+
readonly remainingEarlyStart: Date | null;
|
|
1159
|
+
readonly remainingEarlyFinish: Date | null;
|
|
1160
|
+
readonly remainingLateStart: Date | null;
|
|
1161
|
+
readonly remainingLateFinish: Date | null;
|
|
1162
|
+
readonly earlyStart: Date | null;
|
|
1163
|
+
readonly earlyFinish: Date | null;
|
|
1164
|
+
readonly lateStart: Date | null;
|
|
1165
|
+
readonly lateFinish: Date | null;
|
|
1166
|
+
readonly floatPath: number | null;
|
|
1167
|
+
readonly floatPathOrder: number | null;
|
|
1168
|
+
readonly longestPath: boolean;
|
|
1169
|
+
}
|
|
1170
|
+
/** The closed set of activity properties exposed as P6 Data Date columns. */
|
|
1171
|
+
type P6ActivityColumnKey = Exclude<keyof P6ActivityData, 'activityType' | 'durationType' | 'sourcePrimaryConstraintToken' | 'resourceAssignments' | 'primaryConstraintType' | 'primaryConstraintDate'>;
|
|
1172
|
+
/** Imported inputs the P6 calculations read but never derive (original duration, units, baseline, free float). */
|
|
1173
|
+
interface P6ActivityCalculationInputs {
|
|
1174
|
+
readonly originalDurationHours: number;
|
|
1175
|
+
readonly actualLaborUnits: number;
|
|
1176
|
+
readonly remainingLaborUnits: number;
|
|
1177
|
+
readonly actualNonlaborUnits: number;
|
|
1178
|
+
readonly remainingNonlaborUnits: number;
|
|
1179
|
+
readonly primaryBaselineStart: Date | null;
|
|
1180
|
+
readonly primaryBaselineFinish: Date | null;
|
|
1181
|
+
readonly freeFloatHours: number | null;
|
|
1182
|
+
}
|
|
1183
|
+
/** Complete P6 state of an activity, ready to be scheduled. */
|
|
1184
|
+
type P6ActivityState = P6ActivityData & P6ActivityCalculationInputs;
|
|
1185
|
+
/**
|
|
1186
|
+
* P6 state stored on `CoreActivity.p6`. `remainingDurationHours` is `null`
|
|
1187
|
+
* until the activity has been imported or edited into a schedulable state.
|
|
1188
|
+
*/
|
|
1189
|
+
type P6ActivityDraftState = Omit<P6ActivityState, 'remainingDurationHours'> & {
|
|
1190
|
+
readonly remainingDurationHours: number | null;
|
|
1191
|
+
};
|
|
1192
|
+
/** Activity field the F9 readiness check requires before a schedule run. */
|
|
1193
|
+
type P6RequiredHistoricalField = 'actualStart' | 'actualFinish' | 'remainingDurationHours';
|
|
1194
|
+
/** One activity blocking a schedule run and the fields it still lacks. */
|
|
1195
|
+
interface P6MissingActivityInput {
|
|
1196
|
+
readonly activityId: ActivityId;
|
|
1197
|
+
readonly fields: readonly P6RequiredHistoricalField[];
|
|
1198
|
+
}
|
|
1199
|
+
/** Editable subset of the P6 activity state accepted by `dataDates.updateActivity`. */
|
|
1200
|
+
type P6ActivityInputPatch = Partial<Pick<P6ActivityState, 'actualStart' | 'actualFinish' | 'plannedStart' | 'plannedFinish' | 'remainingDurationHours' | 'originalDurationHours' | 'executionStatus' | 'expectedFinish' | 'suspendDate' | 'resumeDate' | 'secondaryConstraintType' | 'secondaryConstraintDate' | 'percentCompleteType' | 'physicalPercentComplete'>> & {
|
|
1201
|
+
/**
|
|
1202
|
+
* Generic Activity % Complete input, routed by the activity's
|
|
1203
|
+
* Percent Complete Type: physical writes Physical %, duration
|
|
1204
|
+
* normalizes Remaining Duration, units is read-only (P6 24.12).
|
|
1205
|
+
*/
|
|
1206
|
+
readonly activityPercentComplete?: number;
|
|
1207
|
+
};
|
|
1208
|
+
/** Data Date payload accepted by the core at load time (`input.p6`). */
|
|
1209
|
+
interface P6ScheduleInput {
|
|
1210
|
+
readonly settings: P6ScheduleSettings;
|
|
1211
|
+
readonly projectPlannedStart: Date | null;
|
|
1212
|
+
readonly activities: Readonly<Record<ActivityId, P6ActivityDraftState>>;
|
|
1213
|
+
readonly externalRelationshipIds?: readonly string[];
|
|
1214
|
+
readonly latestRunLog?: P6ScheduleRunLog | null;
|
|
1215
|
+
}
|
|
1216
|
+
/** Stable code identifying a schedule-run warning category. */
|
|
1217
|
+
type P6ScheduleDiagnosticCode = 'P6_NO_PREDECESSOR' | 'P6_NO_SUCCESSOR' | 'P6_OUT_OF_SEQUENCE' | 'P6_ACTUAL_AFTER_DATA_DATE' | 'P6_INVALID_MILESTONE_RELATIONSHIP' | 'P6_UNSATISFIED_CONSTRAINT';
|
|
1218
|
+
/** Project and schedule identity stamped on every diagnostic and run log. */
|
|
1219
|
+
interface P6DiagnosticProjectIdentity {
|
|
1220
|
+
readonly projectId: string;
|
|
1221
|
+
readonly scheduleId: string;
|
|
1222
|
+
readonly scheduleCode: string;
|
|
1223
|
+
readonly scheduleName: string;
|
|
1224
|
+
}
|
|
1225
|
+
/** Relationship type as reported in P6 diagnostics (long form of `fs`/`ss`/`ff`/`sf`). */
|
|
1226
|
+
type P6DiagnosticRelationshipType = 'finish_to_start' | 'start_to_start' | 'finish_to_finish' | 'start_to_finish';
|
|
1227
|
+
/** Relationship involved in a diagnostic; `lagHours` is in working hours. */
|
|
1228
|
+
interface P6DiagnosticRelationship {
|
|
1229
|
+
readonly id: string;
|
|
1230
|
+
readonly predecessorActivityId: ActivityId;
|
|
1231
|
+
readonly predecessorActivityCode: string | null;
|
|
1232
|
+
readonly successorActivityId: ActivityId;
|
|
1233
|
+
readonly successorActivityCode: string | null;
|
|
1234
|
+
readonly type: P6DiagnosticRelationshipType;
|
|
1235
|
+
readonly lagHours: number;
|
|
1236
|
+
}
|
|
1237
|
+
/** One schedule-run warning with the activity, relationship and rule that produced it. */
|
|
1238
|
+
interface P6ScheduleDiagnostic {
|
|
1239
|
+
readonly kind: 'diagnostic';
|
|
1240
|
+
readonly code: P6ScheduleDiagnosticCode;
|
|
1241
|
+
readonly category: 'open_ended' | 'out_of_sequence' | 'actual_after_data_date' | 'milestone_relationship' | 'unsatisfied_constraint';
|
|
1242
|
+
readonly severity: 'warning';
|
|
1243
|
+
readonly project: P6DiagnosticProjectIdentity;
|
|
1244
|
+
readonly activityId: ActivityId;
|
|
1245
|
+
readonly activityCode: string | null;
|
|
1246
|
+
readonly activityName: string;
|
|
1247
|
+
readonly activityStatus: P6ActivityState['executionStatus'];
|
|
1248
|
+
readonly dataDate: Date;
|
|
1249
|
+
readonly dates: {
|
|
1250
|
+
readonly actualStart: Date | null;
|
|
1251
|
+
readonly actualFinish: Date | null;
|
|
1252
|
+
};
|
|
1253
|
+
readonly relationship: P6DiagnosticRelationship | null;
|
|
1254
|
+
readonly explanation: {
|
|
1255
|
+
readonly rule: 'activity_has_no_predecessor' | 'activity_has_no_successor' | 'successor_progress_precedes_required_logic' | 'actual_date_is_after_data_date' | 'milestone_endpoint_is_not_available' | 'constraint_could_not_be_satisfied';
|
|
1256
|
+
};
|
|
1257
|
+
}
|
|
1258
|
+
/** Read-only diagnostic as surfaced in `P6ScheduleResult.warnings` and the run log. */
|
|
1259
|
+
type P6ScheduleWarning = Readonly<P6ScheduleDiagnostic>;
|
|
1260
|
+
/** Persisted summary of the latest schedule run (settings, statistics, warnings, digest). */
|
|
1261
|
+
interface P6ScheduleRunLog {
|
|
1262
|
+
readonly schemaVersion: 1;
|
|
1263
|
+
readonly calculatedAt: Date | null;
|
|
1264
|
+
readonly dataDate: Date;
|
|
1265
|
+
readonly project: P6DiagnosticProjectIdentity;
|
|
1266
|
+
readonly settings: P6ScheduleSettings;
|
|
1267
|
+
readonly statistics: {
|
|
1268
|
+
readonly calculatedActivityCount: number;
|
|
1269
|
+
readonly criticalActivityCount: number;
|
|
1270
|
+
readonly warningCount: number;
|
|
1271
|
+
};
|
|
1272
|
+
readonly warnings: ReadonlyArray<P6ScheduleWarning>;
|
|
1273
|
+
readonly scheduleDigest: string;
|
|
1274
|
+
}
|
|
1275
|
+
/** Outcome of `dataDates.schedule()`: the applied ChangeSet plus calculated activities, critical path, warnings and log. */
|
|
1276
|
+
interface P6ScheduleResult {
|
|
1277
|
+
readonly changes: ChangeSet;
|
|
1278
|
+
readonly calculatedActivities: ReadonlyArray<Readonly<CoreActivity>>;
|
|
1279
|
+
readonly criticalPath: ReadonlyArray<ActivityId>;
|
|
1280
|
+
readonly warnings: ReadonlyArray<P6ScheduleWarning>;
|
|
1281
|
+
readonly log: Readonly<P6ScheduleRunLog>;
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
/** Canonical activity identifier inside a schedule. */
|
|
1285
|
+
type ActivityId = string;
|
|
1286
|
+
/** Canonical dependency-link identifier inside a schedule. */
|
|
1287
|
+
type LinkId = string;
|
|
1288
|
+
/** Canonical calendar identifier inside a schedule. */
|
|
1289
|
+
type CalendarId = string;
|
|
1290
|
+
|
|
1291
|
+
/** Named work-time traversal directions. */
|
|
1292
|
+
declare const WORK_TIME_DIRECTION: {
|
|
1293
|
+
readonly FUTURE: "future";
|
|
1294
|
+
readonly PAST: "past";
|
|
1295
|
+
};
|
|
1296
|
+
/** Direction used for calendar-aware work-time traversal. */
|
|
1297
|
+
type WorkTimeDirection = (typeof WORK_TIME_DIRECTION)[keyof typeof WORK_TIME_DIRECTION];
|
|
1298
|
+
/** Named units accepted by calendar duration operations. */
|
|
1299
|
+
declare const CALENDAR_UNIT: {
|
|
1300
|
+
readonly MINUTE: "minute";
|
|
1301
|
+
readonly HOUR: "hour";
|
|
1302
|
+
readonly DAY: "day";
|
|
1303
|
+
};
|
|
1304
|
+
/** Unit accepted by calendar duration operations. */
|
|
1305
|
+
type CalendarUnit = (typeof CALENDAR_UNIT)[keyof typeof CALENDAR_UNIT];
|
|
1306
|
+
/** Criteria available for schedule-wide activity weighting. */
|
|
1307
|
+
declare const ACTIVITY_PONDERATOR_CRITERION: {
|
|
1308
|
+
readonly DURATION: "DURATION";
|
|
1309
|
+
readonly COST: "COST";
|
|
1310
|
+
readonly WORK_HOURS: "HH";
|
|
1311
|
+
};
|
|
1312
|
+
/** Schedule-wide activity weighting criterion. */
|
|
1313
|
+
type ActivityCreter = (typeof ACTIVITY_PONDERATOR_CRITERION)[keyof typeof ACTIVITY_PONDERATOR_CRITERION];
|
|
1314
|
+
/** Modes used to derive activity status from actual or baseline progress. */
|
|
1315
|
+
declare const STATUS_CRITERIA: {
|
|
1316
|
+
readonly BASELINE: "Baseline";
|
|
1317
|
+
readonly ACTUAL: "Actual";
|
|
1318
|
+
};
|
|
1319
|
+
/** Mode used to derive activity status. */
|
|
1320
|
+
type StatusCriteria = (typeof STATUS_CRITERIA)[keyof typeof STATUS_CRITERIA];
|
|
1321
|
+
/** Backend baseline-version metadata retained during normalization. */
|
|
1322
|
+
interface BaselineVersion {
|
|
1323
|
+
id?: number;
|
|
1324
|
+
name?: string | null;
|
|
1325
|
+
active?: boolean;
|
|
1326
|
+
visible?: boolean;
|
|
1327
|
+
[key: string]: unknown;
|
|
1328
|
+
}
|
|
1329
|
+
/** Backend baseline point accepted at the package boundary. */
|
|
1330
|
+
interface BaselinePoint {
|
|
1331
|
+
start_date: string | null;
|
|
1332
|
+
end_date: string | null;
|
|
1333
|
+
/** Baseline duration in working days. */
|
|
1334
|
+
duration: number;
|
|
1335
|
+
cost: number | string;
|
|
1336
|
+
/** Baseline work in hours. */
|
|
1337
|
+
hh_work: number | string;
|
|
1338
|
+
sectorbaselineversion?: BaselineVersion;
|
|
1339
|
+
sectorbaselineversionId?: number;
|
|
1340
|
+
baseCalendarId?: number;
|
|
1341
|
+
hoursPerDay?: number;
|
|
1342
|
+
hoursPerWeek?: number;
|
|
1343
|
+
[key: string]: unknown;
|
|
1344
|
+
}
|
|
1345
|
+
/** Minimal pending impact-request identity consumed by schedule effects. */
|
|
1346
|
+
interface PendingRequest {
|
|
1347
|
+
id: string;
|
|
1348
|
+
}
|
|
1349
|
+
/** Derived activity statuses exposed to consumers. */
|
|
1350
|
+
declare const STATUS: {
|
|
1351
|
+
readonly DONE: "Done";
|
|
1352
|
+
readonly OVERDUE: "Overdue";
|
|
1353
|
+
readonly ADVANCEMENT: "Advancement";
|
|
1354
|
+
readonly WAITING: "Waiting";
|
|
1355
|
+
readonly DOING: "Doing";
|
|
1356
|
+
};
|
|
1357
|
+
/** Derived activity status exposed on normalized activities. */
|
|
1358
|
+
type ActivityStatus = (typeof STATUS)[keyof typeof STATUS];
|
|
1359
|
+
/** Critical-path dates and slack for one activity. */
|
|
1360
|
+
interface CriticalPathResult {
|
|
1361
|
+
/** Earliest feasible start, or `null` when not calculated. */
|
|
1362
|
+
earlyStart: Date | null;
|
|
1363
|
+
/** Earliest feasible finish, or `null` when not calculated. */
|
|
1364
|
+
earlyFinish: Date | null;
|
|
1365
|
+
/** Latest feasible start, or `null` when not calculated. */
|
|
1366
|
+
lateStart: Date | null;
|
|
1367
|
+
/** Latest feasible finish, or `null` when not calculated. */
|
|
1368
|
+
lateFinish: Date | null;
|
|
1369
|
+
/** Total working-hour slack, or `null` when not calculated. */
|
|
1370
|
+
totalSlackHours: number | null;
|
|
1371
|
+
}
|
|
1372
|
+
/** Active baseline values copied onto an activity for projection. */
|
|
1373
|
+
interface ActivityBaselineSnapshot {
|
|
1374
|
+
/** Baseline start, or `null` when unavailable. */
|
|
1375
|
+
startDate: Date | null;
|
|
1376
|
+
/** Baseline end, or `null` when unavailable. */
|
|
1377
|
+
endDate: Date | null;
|
|
1378
|
+
/** Baseline duration in working days. */
|
|
1379
|
+
durationDays: number;
|
|
1380
|
+
cost: number;
|
|
1381
|
+
/** Baseline work in hours. */
|
|
1382
|
+
workHours: number;
|
|
1383
|
+
}
|
|
1384
|
+
/** Normalized baseline point retained on a core activity. */
|
|
1385
|
+
interface CoreBaselinePoint {
|
|
1386
|
+
/** Baseline start, or `null` when the wire value is unavailable. */
|
|
1387
|
+
startDate: Date | null;
|
|
1388
|
+
/** Baseline end, or `null` when the wire value is unavailable. */
|
|
1389
|
+
endDate: Date | null;
|
|
1390
|
+
/** Duration in working days. */
|
|
1391
|
+
durationDays: number;
|
|
1392
|
+
cost: number;
|
|
1393
|
+
workHours: number;
|
|
1394
|
+
versionId: number | null;
|
|
1395
|
+
isActiveVersion: boolean;
|
|
1396
|
+
isVisibleVersion: boolean;
|
|
1397
|
+
baseCalendarId: CalendarId | null;
|
|
1398
|
+
/** Calendar hours per working day, or `null` when unspecified. */
|
|
1399
|
+
hoursPerDay: number | null;
|
|
1400
|
+
/** Calendar hours per working week, or `null` when unspecified. */
|
|
1401
|
+
hoursPerWeek: number | null;
|
|
1402
|
+
}
|
|
1403
|
+
/**
|
|
1404
|
+
* Complete normalized activity snapshot owned by Schedule Core.
|
|
1405
|
+
*
|
|
1406
|
+
* Read APIs return defensive copies. Stored duration and slack fields use
|
|
1407
|
+
* working hours; façade inputs use working days where documented.
|
|
1408
|
+
*/
|
|
1409
|
+
interface CoreActivity {
|
|
1410
|
+
id: ActivityId;
|
|
1411
|
+
proplannerId: number | null;
|
|
1412
|
+
parentId: ActivityId | null;
|
|
1413
|
+
name: string;
|
|
1414
|
+
description: string;
|
|
1415
|
+
type: ActivityType;
|
|
1416
|
+
startDate: Date;
|
|
1417
|
+
endDate: Date;
|
|
1418
|
+
/** Stored duration in working hours. */
|
|
1419
|
+
durationHours: number;
|
|
1420
|
+
/** Scheduling constraint, or `null` when unconstrained. */
|
|
1421
|
+
constraintType: ConstraintType | null;
|
|
1422
|
+
/** Constraint date, or `null` when the constraint has no date. */
|
|
1423
|
+
constraintDate: Date | null;
|
|
1424
|
+
autoScheduling: boolean;
|
|
1425
|
+
/** Assigned calendar ID, or `null` when no known source/default calendar resolves. */
|
|
1426
|
+
calendarId: CalendarId | null;
|
|
1427
|
+
assignedDefaultCalendar: boolean;
|
|
1428
|
+
/** Consumer-origin date, or `null` when absent. */
|
|
1429
|
+
dateOrigin: Date | null;
|
|
1430
|
+
progress: number;
|
|
1431
|
+
cost: number;
|
|
1432
|
+
usedCost: number;
|
|
1433
|
+
realCost: number;
|
|
1434
|
+
workHours: number;
|
|
1435
|
+
realWorkHours: number;
|
|
1436
|
+
ponderator: number;
|
|
1437
|
+
hasCustomPonderator: boolean;
|
|
1438
|
+
correlativeId: number;
|
|
1439
|
+
uniqueCorrelativeId: string;
|
|
1440
|
+
customId: string | null;
|
|
1441
|
+
subcontractId: number | null;
|
|
1442
|
+
isLookahead: boolean;
|
|
1443
|
+
hasLookaheadTasks: boolean;
|
|
1444
|
+
newActivityIds: ActivityId[];
|
|
1445
|
+
hasNewActivities: boolean;
|
|
1446
|
+
isNewActivity?: true | null;
|
|
1447
|
+
pendingRequestIds: string[];
|
|
1448
|
+
responsableIds: string[];
|
|
1449
|
+
tagIds: string[];
|
|
1450
|
+
baselinePoints: CoreBaselinePoint[];
|
|
1451
|
+
baselineSnapshot: ActivityBaselineSnapshot | null;
|
|
1452
|
+
/** Summary roll-up duration in working hours. */
|
|
1453
|
+
recursiveDurationHours: number;
|
|
1454
|
+
isCritical: boolean;
|
|
1455
|
+
/** Free slack in working hours, or `null` when not calculated. */
|
|
1456
|
+
freeSlackHours: number | null;
|
|
1457
|
+
/** Inclusive calendar-day span, or `null` when unavailable. */
|
|
1458
|
+
calendarDuration?: number | null;
|
|
1459
|
+
/**
|
|
1460
|
+
* Signed working days between the activity end and its visible baseline end,
|
|
1461
|
+
* or `null` when no visible baseline applies. Positive means finishing late.
|
|
1462
|
+
*/
|
|
1463
|
+
baselineVarianceDays: number | null;
|
|
1464
|
+
/** Expected progress percentage, or `null` when unavailable. */
|
|
1465
|
+
expectedProgress: number | null;
|
|
1466
|
+
/** Baseline expected progress percentage, or `null` when unavailable. */
|
|
1467
|
+
expectedProgressBaseline: number | null;
|
|
1468
|
+
status: ActivityStatus | null;
|
|
1469
|
+
criticalPath: CriticalPathResult | null;
|
|
1470
|
+
p6?: P6ActivityDraftState;
|
|
1471
|
+
}
|
|
1472
|
+
/** Normalized dependency-link snapshot. */
|
|
1473
|
+
interface Link {
|
|
1474
|
+
id: LinkId;
|
|
1475
|
+
source: ActivityId;
|
|
1476
|
+
target: ActivityId;
|
|
1477
|
+
type: LinkType;
|
|
1478
|
+
/** Stored dependency lag in working hours. */
|
|
1479
|
+
lag: number;
|
|
1480
|
+
/** Free slack in working hours, or `null` when not calculated. */
|
|
1481
|
+
freeSlackHours: number | null;
|
|
1482
|
+
isCritical: boolean;
|
|
1483
|
+
ganttId?: number;
|
|
1484
|
+
sectorId?: number;
|
|
1485
|
+
proplannerId?: number;
|
|
1486
|
+
}
|
|
1487
|
+
/** Persisted identity retained after an activity is deleted. */
|
|
1488
|
+
interface DeletedActivitySnapshot {
|
|
1489
|
+
readonly id: ActivityId;
|
|
1490
|
+
readonly proplannerId: number;
|
|
1491
|
+
readonly parentId: ActivityId | null;
|
|
1492
|
+
readonly hadBaseline: boolean;
|
|
1251
1493
|
}
|
|
1252
|
-
/**
|
|
1253
|
-
interface
|
|
1254
|
-
readonly
|
|
1255
|
-
readonly
|
|
1256
|
-
readonly
|
|
1494
|
+
/** Persisted link identity and endpoints retained after deletion. */
|
|
1495
|
+
interface DeletedLinkSnapshot {
|
|
1496
|
+
readonly id: LinkId;
|
|
1497
|
+
readonly proplannerId: number;
|
|
1498
|
+
readonly source: ActivityId;
|
|
1499
|
+
readonly target: ActivityId;
|
|
1500
|
+
readonly type: LinkType;
|
|
1501
|
+
/** Stored lag in working hours. */
|
|
1502
|
+
readonly lag: number;
|
|
1257
1503
|
}
|
|
1258
|
-
/**
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1504
|
+
/** Normalized calendar work-week, exception, and custom-week rules. */
|
|
1505
|
+
interface CalendarWorktime {
|
|
1506
|
+
days: Array<false | string[]>;
|
|
1507
|
+
hours: string[];
|
|
1508
|
+
dates?: Record<string, false | string[]>;
|
|
1509
|
+
customWeeks?: Record<string, unknown>;
|
|
1510
|
+
}
|
|
1511
|
+
/** Normalized schedule or base calendar snapshot. */
|
|
1512
|
+
interface Calendar {
|
|
1513
|
+
id: CalendarId;
|
|
1514
|
+
name: string;
|
|
1515
|
+
worktime: CalendarWorktime;
|
|
1516
|
+
is_default: boolean;
|
|
1517
|
+
baseDefault?: boolean;
|
|
1518
|
+
exceptions?: Record<string, {
|
|
1519
|
+
working: boolean;
|
|
1520
|
+
hours?: string[];
|
|
1521
|
+
}>;
|
|
1522
|
+
}
|
|
1523
|
+
/** Normalized schedule metadata derived from the backend `sector` field. */
|
|
1524
|
+
interface SectorMetadata {
|
|
1525
|
+
id: string;
|
|
1526
|
+
name: string;
|
|
1527
|
+
/** Working hours per day used for day/hour conversion. */
|
|
1528
|
+
hoursPerDay: number;
|
|
1529
|
+
/** Working hours per week. */
|
|
1530
|
+
hoursPerWeek: number;
|
|
1531
|
+
dateFormat: string;
|
|
1532
|
+
projectId: number;
|
|
1533
|
+
companyId: number;
|
|
1534
|
+
customIdPrefix?: string;
|
|
1535
|
+
customIdIncrement?: string;
|
|
1536
|
+
updateDurationForPrimaveraEndDate?: boolean;
|
|
1537
|
+
activityCreter?: ActivityCreter;
|
|
1538
|
+
statusCriteria: StatusCriteria;
|
|
1539
|
+
ganttId: number | null;
|
|
1540
|
+
}
|
|
1541
|
+
/** Canonical entity-change operations in consumer projections. */
|
|
1542
|
+
declare const ENTITY_CHANGE_KIND: {
|
|
1543
|
+
readonly CREATED: "created";
|
|
1544
|
+
readonly UPDATED: "updated";
|
|
1545
|
+
readonly DELETED: "deleted";
|
|
1264
1546
|
};
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1547
|
+
type EntityChangeKind = (typeof ENTITY_CHANGE_KIND)[keyof typeof ENTITY_CHANGE_KIND];
|
|
1548
|
+
/** One created, updated, or deleted entity in a consumer projection. */
|
|
1549
|
+
interface EntityChange<T> {
|
|
1550
|
+
id: string;
|
|
1551
|
+
kind: EntityChangeKind;
|
|
1552
|
+
fields?: Record<string, {
|
|
1553
|
+
before: unknown;
|
|
1554
|
+
after: unknown;
|
|
1555
|
+
}> | undefined;
|
|
1556
|
+
/** Complete post-change snapshot, or `null` for deletion. */
|
|
1557
|
+
after: Readonly<T> | null;
|
|
1269
1558
|
}
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1559
|
+
|
|
1560
|
+
/** Named normalized activity scheduling constraints. */
|
|
1561
|
+
declare const CONSTRAINT_TYPE: {
|
|
1562
|
+
readonly ASAP: "asap";
|
|
1563
|
+
readonly ALAP: "alap";
|
|
1564
|
+
readonly SNET: "snet";
|
|
1565
|
+
readonly SNLT: "snlt";
|
|
1566
|
+
readonly FNET: "fnet";
|
|
1567
|
+
readonly FNLT: "fnlt";
|
|
1568
|
+
readonly MSO: "mso";
|
|
1569
|
+
readonly MFO: "mfo";
|
|
1570
|
+
};
|
|
1571
|
+
/** Normalized activity scheduling constraint. */
|
|
1572
|
+
type ConstraintType = (typeof CONSTRAINT_TYPE)[keyof typeof CONSTRAINT_TYPE];
|
|
1573
|
+
|
|
1574
|
+
declare const SAVE_FIELD_POLICY: {
|
|
1575
|
+
readonly TRACKED: "tracked";
|
|
1576
|
+
readonly IGNORED: "ignored";
|
|
1577
|
+
};
|
|
1578
|
+
|
|
1579
|
+
declare const ACTIVITY_SAVE_FIELD_POLICY: {
|
|
1580
|
+
readonly id: "ignored";
|
|
1581
|
+
readonly proplannerId: "ignored";
|
|
1582
|
+
readonly parentId: "tracked";
|
|
1583
|
+
readonly name: "tracked";
|
|
1584
|
+
readonly description: "tracked";
|
|
1585
|
+
readonly type: "tracked";
|
|
1586
|
+
readonly startDate: "tracked";
|
|
1587
|
+
readonly endDate: "tracked";
|
|
1588
|
+
readonly durationHours: "tracked";
|
|
1589
|
+
readonly constraintType: "tracked";
|
|
1590
|
+
readonly constraintDate: "tracked";
|
|
1591
|
+
readonly autoScheduling: "tracked";
|
|
1592
|
+
readonly calendarId: "tracked";
|
|
1593
|
+
readonly assignedDefaultCalendar: "ignored";
|
|
1594
|
+
readonly dateOrigin: "tracked";
|
|
1595
|
+
readonly progress: "tracked";
|
|
1596
|
+
readonly cost: "tracked";
|
|
1597
|
+
readonly usedCost: "tracked";
|
|
1598
|
+
readonly realCost: "tracked";
|
|
1599
|
+
readonly workHours: "tracked";
|
|
1600
|
+
readonly realWorkHours: "tracked";
|
|
1601
|
+
readonly ponderator: "tracked";
|
|
1602
|
+
readonly hasCustomPonderator: "tracked";
|
|
1603
|
+
readonly correlativeId: "tracked";
|
|
1604
|
+
readonly uniqueCorrelativeId: "tracked";
|
|
1605
|
+
readonly customId: "tracked";
|
|
1606
|
+
readonly subcontractId: "tracked";
|
|
1607
|
+
readonly isLookahead: "tracked";
|
|
1608
|
+
readonly hasLookaheadTasks: "ignored";
|
|
1609
|
+
readonly newActivityIds: "tracked";
|
|
1610
|
+
readonly hasNewActivities: "tracked";
|
|
1611
|
+
readonly isNewActivity: "ignored";
|
|
1612
|
+
readonly pendingRequestIds: "ignored";
|
|
1613
|
+
readonly responsableIds: "tracked";
|
|
1614
|
+
readonly tagIds: "tracked";
|
|
1615
|
+
readonly baselinePoints: "ignored";
|
|
1616
|
+
readonly baselineSnapshot: "ignored";
|
|
1617
|
+
readonly recursiveDurationHours: "ignored";
|
|
1618
|
+
readonly isCritical: "ignored";
|
|
1619
|
+
readonly freeSlackHours: "ignored";
|
|
1620
|
+
readonly calendarDuration: "ignored";
|
|
1621
|
+
readonly baselineVarianceDays: "ignored";
|
|
1622
|
+
readonly expectedProgress: "ignored";
|
|
1623
|
+
readonly expectedProgressBaseline: "ignored";
|
|
1624
|
+
readonly status: "ignored";
|
|
1625
|
+
readonly criticalPath: "ignored";
|
|
1626
|
+
readonly p6: "ignored";
|
|
1273
1627
|
};
|
|
1274
1628
|
/**
|
|
1275
|
-
*
|
|
1629
|
+
* Activity field included in consumer persistence comparisons.
|
|
1276
1630
|
*
|
|
1277
|
-
*
|
|
1278
|
-
*
|
|
1631
|
+
* Derived scheduling, baseline, selection, and backend identity fields are
|
|
1632
|
+
* intentionally excluded.
|
|
1279
1633
|
*/
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
/** Activity create, update, and delete records. */
|
|
1284
|
-
activities: ReadonlyArray<EntityChange<CoreActivity>>;
|
|
1285
|
-
/** Link create, update, and delete records; lag fields use stored hours. */
|
|
1286
|
-
links: ReadonlyArray<EntityChange<Link>>;
|
|
1287
|
-
/** Calendar create, update, and delete records. */
|
|
1288
|
-
calendars: ReadonlyArray<EntityChange<Calendar>>;
|
|
1289
|
-
/** Consumer-owned analytics events. */
|
|
1290
|
-
trackingEvents: ReadonlyArray<TrackingEvent>;
|
|
1291
|
-
/** Optional checked/visible projection updates. */
|
|
1292
|
-
viewState?: ReadonlyArray<ViewStateChange>;
|
|
1293
|
-
/** Optional visual child order grouped by parent. */
|
|
1294
|
-
order?: ReadonlyArray<BranchOrderChange>;
|
|
1295
|
-
/** Optional integration effects for consumer handling. */
|
|
1296
|
-
effects?: ReadonlyArray<ScheduleEffect>;
|
|
1297
|
-
/** Optional non-fatal warnings for consumer presentation. */
|
|
1298
|
-
warnings?: ReadonlyArray<ConstraintWarning>;
|
|
1299
|
-
}
|
|
1634
|
+
type PersistableActivityField = {
|
|
1635
|
+
[Field in keyof typeof ACTIVITY_SAVE_FIELD_POLICY]: (typeof ACTIVITY_SAVE_FIELD_POLICY)[Field] extends typeof SAVE_FIELD_POLICY.TRACKED ? Field : never;
|
|
1636
|
+
}[keyof typeof ACTIVITY_SAVE_FIELD_POLICY];
|
|
1300
1637
|
|
|
1301
1638
|
/** Earliest start and latest end from the default calendar's work ranges. */
|
|
1302
1639
|
interface ProjectWorkHours {
|
|
@@ -2031,6 +2368,8 @@ interface ScheduleDiagnosticsApi {
|
|
|
2031
2368
|
stateRevision(): number;
|
|
2032
2369
|
/** @returns A deterministic serialization digest of canonical schedule state. */
|
|
2033
2370
|
canonicalDigest(): string;
|
|
2371
|
+
/** @returns A fixed-size deterministic fingerprint of canonical schedule state. */
|
|
2372
|
+
canonicalFingerprint(): string;
|
|
2034
2373
|
}
|
|
2035
2374
|
/** Namespaced façade attached to each {@link ScheduleCore} instance. */
|
|
2036
2375
|
interface ScheduleApiNamespaces {
|
|
@@ -2221,6 +2560,81 @@ interface LoadDiagnostic {
|
|
|
2221
2560
|
}
|
|
2222
2561
|
type LoadDiagnosticRecorder = (code: LoadDiagnosticCode, sampleId: string) => void;
|
|
2223
2562
|
|
|
2563
|
+
/** Reason a Data Date operation is refused before any state is written. */
|
|
2564
|
+
type P6CapabilityErrorCode = 'capability_not_enabled' | 'data_date_required' | 'activity_scheduling_state_required' | 'P6_ACTIVITY_STATE_INVARIANT' | 'EXTERNAL_RELATIONSHIP_F9_NOT_CERTIFIED';
|
|
2565
|
+
/**
|
|
2566
|
+
* Whether `dataDates.schedule()` can run. When not ready it carries the
|
|
2567
|
+
* blocking code, how many activities block it, a bounded sample of their ids
|
|
2568
|
+
* and the exact fields each one lacks.
|
|
2569
|
+
*/
|
|
2570
|
+
type P6ScheduleReadiness = {
|
|
2571
|
+
readonly ready: true;
|
|
2572
|
+
} | {
|
|
2573
|
+
readonly ready: false;
|
|
2574
|
+
readonly code: P6CapabilityErrorCode;
|
|
2575
|
+
readonly count: number;
|
|
2576
|
+
readonly sampleActivityIds: readonly ActivityId[];
|
|
2577
|
+
readonly missingInputs: readonly P6MissingActivityInput[];
|
|
2578
|
+
};
|
|
2579
|
+
/** Selectable candidate for the multiple-float-paths ending activity. */
|
|
2580
|
+
interface P6EndingActivityOption {
|
|
2581
|
+
readonly id: ActivityId;
|
|
2582
|
+
readonly label: string;
|
|
2583
|
+
}
|
|
2584
|
+
/** Case-insensitive label search over the visual order, paginated by `offset`/`limit`. */
|
|
2585
|
+
interface P6EndingActivitySearch {
|
|
2586
|
+
readonly query: string;
|
|
2587
|
+
readonly offset: number;
|
|
2588
|
+
readonly limit: number;
|
|
2589
|
+
}
|
|
2590
|
+
/** One page of ending-activity candidates; `hasMore` signals a further page exists. */
|
|
2591
|
+
interface P6EndingActivityPage {
|
|
2592
|
+
readonly items: readonly P6EndingActivityOption[];
|
|
2593
|
+
readonly hasMore: boolean;
|
|
2594
|
+
}
|
|
2595
|
+
declare class P6CapabilityError extends Error {
|
|
2596
|
+
readonly code: P6CapabilityErrorCode;
|
|
2597
|
+
readonly relationshipIds: readonly string[];
|
|
2598
|
+
readonly count: number;
|
|
2599
|
+
readonly sampleActivityIds: readonly ActivityId[];
|
|
2600
|
+
constructor(code: P6CapabilityErrorCode, message: string, relationshipIds?: readonly string[], count?: number, sampleActivityIds?: readonly ActivityId[]);
|
|
2601
|
+
}
|
|
2602
|
+
/**
|
|
2603
|
+
* Data Date namespace exposed as `core.dataDates`. Reads are synchronous and
|
|
2604
|
+
* never throw for an inactive capability; writes go through `dispatch` and
|
|
2605
|
+
* reject with a `P6CapabilityError` when the capability is not enabled.
|
|
2606
|
+
*/
|
|
2607
|
+
interface ScheduleP6Api {
|
|
2608
|
+
/** Persisted P6 schedule settings, or `null` when the schedule carries none. */
|
|
2609
|
+
getSettings(): Readonly<P6ScheduleSettings> | null;
|
|
2610
|
+
/** Project-level Data Date state, or `null` when the schedule carries none. */
|
|
2611
|
+
getProjectState(): Readonly<P6ProjectState> | null;
|
|
2612
|
+
/** Log of the latest schedule run, or `null` before the first run. */
|
|
2613
|
+
getLatestRunLog(): Readonly<P6ScheduleRunLog> | null;
|
|
2614
|
+
/** Digest of the inputs a schedule run reads; stable while the state revision is unchanged. */
|
|
2615
|
+
getScheduleStateFingerprint(): string;
|
|
2616
|
+
/** Outbuild defaults applied when a schedule has no persisted P6 settings. */
|
|
2617
|
+
getDefaultSettings(): Readonly<P6ScheduleSettings>;
|
|
2618
|
+
/** Readiness of a schedule run under the current settings merged with `patch`. */
|
|
2619
|
+
getScheduleReadiness(patch?: Readonly<Partial<P6ScheduleSettings>>): P6ScheduleReadiness;
|
|
2620
|
+
/** Pages ending-activity candidates matching `input.query` in visual order. */
|
|
2621
|
+
searchEndingActivities(input: P6EndingActivitySearch): P6EndingActivityPage;
|
|
2622
|
+
/** Candidate for one activity id, or `null` when it is not selectable. */
|
|
2623
|
+
getEndingActivityOption(activityId: ActivityId): P6EndingActivityOption | null;
|
|
2624
|
+
/** Instant a first-time Must Finish By takes for a `YYYY-MM-DD` day: the project default calendar's shift start, as P6 assigns it; `null` when no calendar can resolve it. */
|
|
2625
|
+
resolveMustFinishByDefault(day: string): Date | null;
|
|
2626
|
+
/** Dispatches a settings update and returns the resulting ChangeSet. */
|
|
2627
|
+
updateSettings(patch: Readonly<Partial<P6ScheduleSettings>>): Promise<{
|
|
2628
|
+
changes: ChangeSet;
|
|
2629
|
+
}>;
|
|
2630
|
+
/** Dispatches a P6 activity update and returns the resulting ChangeSet. */
|
|
2631
|
+
updateActivity(activityId: ActivityId, patch: Readonly<P6ActivityInputPatch>): Promise<{
|
|
2632
|
+
changes: ChangeSet;
|
|
2633
|
+
}>;
|
|
2634
|
+
/** Runs F9 with the current settings merged with `patch` and applies the projection. */
|
|
2635
|
+
schedule(patch?: Readonly<Partial<P6ScheduleSettings>>): Promise<P6ScheduleResult>;
|
|
2636
|
+
}
|
|
2637
|
+
|
|
2224
2638
|
/**
|
|
2225
2639
|
* Lifecycle health states observable without awaiting initialization.
|
|
2226
2640
|
* `ready` means alive, not initialized; await {@link ScheduleCore.ready} before
|
|
@@ -2257,6 +2671,7 @@ interface ScheduleCoreInput extends BackendScheduleInput {
|
|
|
2257
2671
|
ganttId?: number;
|
|
2258
2672
|
/** Optional normalization and background-error diagnostics sink. */
|
|
2259
2673
|
reporter?: ScheduleCoreReporter;
|
|
2674
|
+
p6?: P6ScheduleInput;
|
|
2260
2675
|
}
|
|
2261
2676
|
|
|
2262
2677
|
/** Summary of logical links and projected effective dependency edges. */
|
|
@@ -2313,6 +2728,7 @@ declare class ScheduleCore {
|
|
|
2313
2728
|
readonly criticalPath: ScheduleApiNamespaces['criticalPath'];
|
|
2314
2729
|
/** Effective-graph, revision, and digest diagnostics. */
|
|
2315
2730
|
readonly diagnostics: ScheduleApiNamespaces['diagnostics'];
|
|
2731
|
+
readonly dataDates: ScheduleP6Api;
|
|
2316
2732
|
private readonly _activityClipboard;
|
|
2317
2733
|
private _status;
|
|
2318
2734
|
private readonly coreRuntime;
|
|
@@ -2321,6 +2737,8 @@ declare class ScheduleCore {
|
|
|
2321
2737
|
private _opQueue;
|
|
2322
2738
|
private _scheduleRevision;
|
|
2323
2739
|
private _stateRevision;
|
|
2740
|
+
private _canonicalFingerprintCache;
|
|
2741
|
+
private _p6ScheduleStateFingerprintCache;
|
|
2324
2742
|
private _pendingScheduleRevision;
|
|
2325
2743
|
private _criticalPathRevision;
|
|
2326
2744
|
private _activeCriticalPath;
|
|
@@ -2413,6 +2831,21 @@ declare class ScheduleCore {
|
|
|
2413
2831
|
}): Date | null;
|
|
2414
2832
|
/** Returns the canonical progress editability decision without mutation. */
|
|
2415
2833
|
getProgressEditability(id: ActivityId): EditResult | null;
|
|
2834
|
+
/**
|
|
2835
|
+
* Whether a move or resize gesture may start on an activity under an active
|
|
2836
|
+
* Data Date (a started activity locks its start, a completed one its end).
|
|
2837
|
+
*
|
|
2838
|
+
* @returns The edit verdict, or `null` when the activity does not exist.
|
|
2839
|
+
*/
|
|
2840
|
+
getDateGestureEditability(id: ActivityId, gesture: DateGestureKind): EditResult | null;
|
|
2841
|
+
/**
|
|
2842
|
+
* Composes the verdict an inline edit of `column` would receive before any
|
|
2843
|
+
* value is parsed: the column policy, with progress-based denials replaced
|
|
2844
|
+
* by the execution-status verdict while a Data Date is active.
|
|
2845
|
+
*
|
|
2846
|
+
* @returns The edit verdict, or `null` when the activity or column is unknown.
|
|
2847
|
+
*/
|
|
2848
|
+
getColumnEditability(id: ActivityId, column: string): EditResult | null;
|
|
2416
2849
|
/**
|
|
2417
2850
|
* Creates a read-only date prediction bound to the current revision.
|
|
2418
2851
|
*
|
|
@@ -2528,14 +2961,24 @@ declare class ScheduleCore {
|
|
|
2528
2961
|
getNewActivities(): ReadonlyArray<Readonly<CoreActivity>>;
|
|
2529
2962
|
/** @returns Whether tracked state differs from the acknowledged save baseline. */
|
|
2530
2963
|
hasUnsavedChanges(): boolean;
|
|
2964
|
+
/** @returns The P6 schedule settings pending persistence, or `null` when unchanged since the last acknowledge. */
|
|
2965
|
+
getModifiedDataDateSettings(): Readonly<P6ScheduleSettings> | null;
|
|
2966
|
+
/** @returns The P6 state of every activity whose Data Date fields changed since the last acknowledge, keyed by activity id. */
|
|
2967
|
+
getModifiedDataDateActivities(): ReadonlyMap<string, Readonly<P6ActivityDraftState>>;
|
|
2531
2968
|
/** @returns The monotonic scheduling revision without a readiness guard. */
|
|
2532
2969
|
getScheduleRevision(): number;
|
|
2533
2970
|
/** @returns The monotonic canonical-state revision without a readiness guard. */
|
|
2534
2971
|
getStateRevision(): number;
|
|
2535
2972
|
/** @returns The undo-history boundary for an external save checkpoint. */
|
|
2536
2973
|
capturePersistenceHistoryBoundary(): number;
|
|
2974
|
+
/** @returns A defensive checkpoint for consumer-owned persistence. */
|
|
2975
|
+
readPersistenceCheckpoint(): PersistenceCheckpoint;
|
|
2537
2976
|
/** @returns A deterministic serialization digest of canonical schedule state. */
|
|
2538
2977
|
getCanonicalDigest(): string;
|
|
2978
|
+
/** @returns A fixed-size deterministic fingerprint of canonical schedule state. */
|
|
2979
|
+
getCanonicalFingerprint(): string;
|
|
2980
|
+
private _getP6ScheduleStateFingerprint;
|
|
2981
|
+
private _computeP6ScheduleStateFingerprint;
|
|
2539
2982
|
/**
|
|
2540
2983
|
* Produces changes that transform a projection of `source` into this schedule.
|
|
2541
2984
|
*
|
|
@@ -2550,6 +2993,25 @@ declare class ScheduleCore {
|
|
|
2550
2993
|
/** @returns Deleted persisted link identities since the last save. */
|
|
2551
2994
|
getDeletedLinksSinceLastSave(): ReadonlyArray<Readonly<DeletedLinkSnapshot>>;
|
|
2552
2995
|
private _enqueue;
|
|
2996
|
+
private _getP6Settings;
|
|
2997
|
+
private _getP6ProjectState;
|
|
2998
|
+
private _getP6LatestRunLog;
|
|
2999
|
+
private _resolveP6MustFinishByDefault;
|
|
3000
|
+
private _searchP6EndingActivities;
|
|
3001
|
+
private _getP6EndingActivityOption;
|
|
3002
|
+
private _getP6ScheduleReadiness;
|
|
3003
|
+
private _updateP6Settings;
|
|
3004
|
+
private _updateP6Activity;
|
|
3005
|
+
private _scheduleP6;
|
|
3006
|
+
private _runP6Schedule;
|
|
3007
|
+
private _requireDataDateCapability;
|
|
3008
|
+
private _changeSetIsSubstantive;
|
|
3009
|
+
private _hasDataDateChanges;
|
|
3010
|
+
private _applyDataDateChangeSet;
|
|
3011
|
+
private _applyDataDateActivationProjection;
|
|
3012
|
+
private _assembleDataDateActivationProjection;
|
|
3013
|
+
private _snapshotActivities;
|
|
3014
|
+
private _setP6ProjectPlannedStart;
|
|
2553
3015
|
private _beginScheduleMutation;
|
|
2554
3016
|
private _admitScheduleMutation;
|
|
2555
3017
|
private _settleScheduleMutation;
|
|
@@ -2605,6 +3067,7 @@ declare class ScheduleCore {
|
|
|
2605
3067
|
private _reapplyActiveOrder;
|
|
2606
3068
|
private _reapplyActiveFilter;
|
|
2607
3069
|
private _recordScheduleMutation;
|
|
3070
|
+
private _recordDirectScheduleMutation;
|
|
2608
3071
|
private _startCriticalPathForCurrentRevision;
|
|
2609
3072
|
/**
|
|
2610
3073
|
* Applies the latest inverse operation through the serialized queue.
|
|
@@ -2778,6 +3241,227 @@ declare function yieldToBrowser(): Promise<void>;
|
|
|
2778
3241
|
*/
|
|
2779
3242
|
declare function willRunCriticalPath(action: DispatchAction): boolean;
|
|
2780
3243
|
|
|
3244
|
+
/**
|
|
3245
|
+
* Combines the `YYYY-MM-DD` day picked for Expected Finish with the UTC time
|
|
3246
|
+
* of day of the current expected finish, or of the displayed finish when none
|
|
3247
|
+
* is set. Throws `LookaheadActualTransitionError` on an invalid day.
|
|
3248
|
+
*/
|
|
3249
|
+
declare function resolveExpectedFinishDateSelection(input: {
|
|
3250
|
+
readonly selectedDay: string;
|
|
3251
|
+
readonly expectedFinish: Date | null;
|
|
3252
|
+
readonly displayedFinish: Date;
|
|
3253
|
+
}): Date;
|
|
3254
|
+
|
|
3255
|
+
/** Validation failure raised while planning or preparing Lookahead actual dates. */
|
|
3256
|
+
type LookaheadActualTransitionErrorCode = 'ACTUAL_FINISH_BEFORE_START' | 'ACTUAL_FINISH_REMOVAL_NOT_APPLICABLE' | 'ACTUAL_FINISH_REMOVAL_REQUIRED' | 'ACTUAL_FINISH_REQUIRES_100' | 'ACTUAL_START_REQUIRED' | 'DATA_DATE_INACTIVE' | 'INVALID_ACTUAL_DAY' | 'INVALID_ACTUAL_TIME_SOURCE' | 'INVALID_DATA_DATE' | 'INVALID_DISPLAYED_FINISH' | 'INVALID_PROGRESS';
|
|
3257
|
+
declare class LookaheadActualTransitionError extends Error {
|
|
3258
|
+
readonly code: LookaheadActualTransitionErrorCode;
|
|
3259
|
+
constructor(code: LookaheadActualTransitionErrorCode);
|
|
3260
|
+
}
|
|
3261
|
+
/**
|
|
3262
|
+
* Actual dates the user confirmed in the Lookahead progress dialog.
|
|
3263
|
+
* `actualFinish: null` is the confirmed removal of the Actual Finish when
|
|
3264
|
+
* progress drops below 100 on a completed activity.
|
|
3265
|
+
*/
|
|
3266
|
+
interface LookaheadActualIntent {
|
|
3267
|
+
readonly actualStart?: Date;
|
|
3268
|
+
readonly actualFinish?: Date | null;
|
|
3269
|
+
}
|
|
3270
|
+
/** Slice of the P6 activity state the Lookahead progress transition reads. */
|
|
3271
|
+
type LookaheadProgressActualActivityState = Pick<P6ActivityDraftState, 'actualStart' | 'actualFinish' | 'remainingDurationHours' | 'executionStatus' | 'suspendDate' | 'resumeDate' | 'physicalPercentComplete' | 'originalDurationHours' | 'percentCompleteType'>;
|
|
3272
|
+
/**
|
|
3273
|
+
* Input of a Lookahead progress change under a Data Date: the active
|
|
3274
|
+
* `dataDate` (`null` when inactive), the activity's P6 slice, the target
|
|
3275
|
+
* progress (0–100) and the finish currently displayed to the user.
|
|
3276
|
+
*/
|
|
3277
|
+
interface LookaheadProgressActualInput {
|
|
3278
|
+
readonly dataDate: Date | null;
|
|
3279
|
+
readonly activity: Readonly<LookaheadProgressActualActivityState>;
|
|
3280
|
+
readonly nextProgress: number;
|
|
3281
|
+
readonly displayedFinish?: Date | null;
|
|
3282
|
+
}
|
|
3283
|
+
/**
|
|
3284
|
+
* Which actual dates the transition needs: `start` is required when a
|
|
3285
|
+
* not-started activity gains progress, `finish` is optional when progress
|
|
3286
|
+
* reaches 100, `uncomplete` is required when a completed activity drops
|
|
3287
|
+
* below 100 (the Actual Finish must be removed; the Actual Start stays).
|
|
3288
|
+
* All are `null` when the Data Date is inactive.
|
|
3289
|
+
*/
|
|
3290
|
+
interface LookaheadProgressActualPlan {
|
|
3291
|
+
readonly start: {
|
|
3292
|
+
readonly required: true;
|
|
3293
|
+
readonly suggestedAt: Date;
|
|
3294
|
+
} | null;
|
|
3295
|
+
readonly finish: {
|
|
3296
|
+
readonly optional: true;
|
|
3297
|
+
readonly suggestedAt: Date | null;
|
|
3298
|
+
} | null;
|
|
3299
|
+
readonly uncomplete: {
|
|
3300
|
+
readonly required: true;
|
|
3301
|
+
readonly removes: Date;
|
|
3302
|
+
} | null;
|
|
3303
|
+
}
|
|
3304
|
+
/**
|
|
3305
|
+
* Combines a `YYYY-MM-DD` day picked by the user with the UTC time of day of
|
|
3306
|
+
* `timeSource`. Throws `LookaheadActualTransitionError` on an invalid day or
|
|
3307
|
+
* time source.
|
|
3308
|
+
*/
|
|
3309
|
+
declare function resolveLookaheadActualDateSelection(input: {
|
|
3310
|
+
readonly selectedDay: string;
|
|
3311
|
+
readonly timeSource: Date;
|
|
3312
|
+
}): Date;
|
|
3313
|
+
/**
|
|
3314
|
+
* Decides which actual dates a progress change requires and suggests default
|
|
3315
|
+
* values (the Data Date for the start, the displayed finish for the finish).
|
|
3316
|
+
* Throws `LookaheadActualTransitionError` on invalid input.
|
|
3317
|
+
*/
|
|
3318
|
+
declare function planLookaheadProgressActuals(input: LookaheadProgressActualInput): LookaheadProgressActualPlan;
|
|
3319
|
+
/**
|
|
3320
|
+
* Validates the confirmed `intent` against the plan and returns the P6
|
|
3321
|
+
* activity patch to dispatch: the actual-date transition plus, while the
|
|
3322
|
+
* activity is in progress, `nextProgress` mirrored into the percent field
|
|
3323
|
+
* selected by `percentCompleteType` (Physical %, or the Remaining Duration
|
|
3324
|
+
* for the duration type; the units type is read-only). Throws
|
|
3325
|
+
* `LookaheadActualTransitionError` when a required actual start is missing,
|
|
3326
|
+
* a finish is given below 100 %, a completed activity drops below 100 %
|
|
3327
|
+
* without the confirmed removal of its Actual Finish, or an intent arrives
|
|
3328
|
+
* while the Data Date is inactive.
|
|
3329
|
+
*/
|
|
3330
|
+
declare function prepareLookaheadProgressActuals(input: LookaheadProgressActualInput & {
|
|
3331
|
+
readonly intent?: LookaheadActualIntent;
|
|
3332
|
+
}): Readonly<Partial<P6ActivityDraftState>>;
|
|
3333
|
+
|
|
3334
|
+
/** Calendars of the schedule that owns the activities being re-derived. */
|
|
3335
|
+
interface LookaheadDerivedCalendars {
|
|
3336
|
+
readonly calendars: readonly BackendCalendarInput[];
|
|
3337
|
+
readonly baseCalendars?: readonly BackendCalendarInput[];
|
|
3338
|
+
}
|
|
3339
|
+
/**
|
|
3340
|
+
* One actual-date transition confirmed from the Lookahead: the stored P6
|
|
3341
|
+
* state before it, the state after applying the normalized patch, the
|
|
3342
|
+
* activity calendar and the active Data Date.
|
|
3343
|
+
*/
|
|
3344
|
+
interface LookaheadDerivedInput {
|
|
3345
|
+
readonly previous: Readonly<P6ActivityDraftState>;
|
|
3346
|
+
readonly next: Readonly<P6ActivityDraftState>;
|
|
3347
|
+
readonly calendarId: CalendarId | null;
|
|
3348
|
+
readonly dataDate: Date;
|
|
3349
|
+
readonly totalFloatMethod?: P6ScheduleSettings['totalFloatMethod'];
|
|
3350
|
+
}
|
|
3351
|
+
/** Derived fields P6 refreshes as soon as an actual date is written. */
|
|
3352
|
+
type LookaheadDerivedFields = Pick<P6ActivityData, 'actualDurationHours' | 'atCompletionDurationHours' | 'durationPercentComplete' | 'unitsPercentComplete' | 'schedulePercentComplete'>;
|
|
3353
|
+
/**
|
|
3354
|
+
* Backend-side resolver bound to one schedule's calendars; re-derives the
|
|
3355
|
+
* P6 fields for each confirmed Lookahead actual-date transition.
|
|
3356
|
+
*/
|
|
3357
|
+
interface LookaheadDerivedFieldsResolver {
|
|
3358
|
+
/**
|
|
3359
|
+
* Derives the refreshed P6 fields for one transition, or `null` when the
|
|
3360
|
+
* next state is not yet a schedulable P6 activity or its calendar is
|
|
3361
|
+
* unknown.
|
|
3362
|
+
*/
|
|
3363
|
+
derive(input: LookaheadDerivedInput): LookaheadDerivedFields | null;
|
|
3364
|
+
}
|
|
3365
|
+
/**
|
|
3366
|
+
* Re-derives an activity after a Lookahead actual-date transition with the
|
|
3367
|
+
* same live projection the Schedule card uses, so both write paths leave the
|
|
3368
|
+
* stored derived fields identical. Returns `null` while the activity has no
|
|
3369
|
+
* schedulable Remaining Duration yet.
|
|
3370
|
+
*/
|
|
3371
|
+
declare function createLookaheadDerivedFields(input: LookaheadDerivedCalendars): LookaheadDerivedFieldsResolver;
|
|
3372
|
+
|
|
3373
|
+
/** Human-readable behaviour of a Data Date property in each documented edge case. */
|
|
3374
|
+
interface P6PropertyEdgeCases {
|
|
3375
|
+
readonly notStarted: string;
|
|
3376
|
+
readonly inProgress: string;
|
|
3377
|
+
readonly completed: string;
|
|
3378
|
+
readonly zeroDuration: string;
|
|
3379
|
+
readonly zeroDenominator: string;
|
|
3380
|
+
readonly suspendResume: string;
|
|
3381
|
+
readonly calendarException: string;
|
|
3382
|
+
readonly signedValues: string;
|
|
3383
|
+
readonly nullValue: string;
|
|
3384
|
+
readonly milestone: string;
|
|
3385
|
+
}
|
|
3386
|
+
/** Documented contract of one Data Date column: source fields, classification, editability, lifecycle and edge cases. */
|
|
3387
|
+
interface P6PropertyContractRow {
|
|
3388
|
+
readonly uiName: string;
|
|
3389
|
+
readonly property: P6ActivityColumnKey;
|
|
3390
|
+
readonly xerField: string;
|
|
3391
|
+
readonly xmlField: string;
|
|
3392
|
+
readonly classification: 'reality' | 'editable_input' | 'f9_output' | 'derived';
|
|
3393
|
+
readonly typeAndUnit: string;
|
|
3394
|
+
readonly editability: 'controlled' | 'editable' | 'readonly';
|
|
3395
|
+
readonly authority: string;
|
|
3396
|
+
readonly lifecycle: P6PropertyLifecycle;
|
|
3397
|
+
readonly changesWhen: string;
|
|
3398
|
+
readonly f9Behavior: string;
|
|
3399
|
+
readonly persistence: string;
|
|
3400
|
+
readonly nullAndZero: string;
|
|
3401
|
+
readonly calendarRule: string;
|
|
3402
|
+
readonly algorithm: string;
|
|
3403
|
+
readonly interactions: string;
|
|
3404
|
+
readonly unitTest: string;
|
|
3405
|
+
readonly p6Golden: string;
|
|
3406
|
+
readonly status: 'VERIFIED' | 'PARTIAL';
|
|
3407
|
+
readonly phase: 'input' | 'forward' | 'backward' | 'float_path' | 'derived';
|
|
3408
|
+
readonly edgeCases: Readonly<Partial<P6PropertyEdgeCases>>;
|
|
3409
|
+
}
|
|
3410
|
+
type P6PropertyLifecycle = 'explicit_edit' | 'dependency_change' | 'f9' | 'open';
|
|
3411
|
+
/** Frozen catalog of every Data Date column, one `P6PropertyContractRow` per `P6ActivityColumnKey`. */
|
|
3412
|
+
declare const P6_PROPERTY_CONTRACT: readonly P6PropertyContractRow[];
|
|
3413
|
+
|
|
3414
|
+
/** Raw `PROJECT` row fields of a P6 export (XER wall-clock strings) read to derive schedule settings. */
|
|
3415
|
+
interface P6RawProjectOptions {
|
|
3416
|
+
readonly last_recalc_date: string;
|
|
3417
|
+
readonly plan_start_date: string;
|
|
3418
|
+
readonly plan_end_date?: string;
|
|
3419
|
+
readonly scd_end_date: string;
|
|
3420
|
+
readonly fcst_start_date: string;
|
|
3421
|
+
readonly critical_path_type: string;
|
|
3422
|
+
readonly critical_drtn_hr_cnt: string;
|
|
3423
|
+
}
|
|
3424
|
+
/** Raw `SCHEDOPTIONS` row fields of a P6 export (`Y`/`N` flags and P6 tokens). */
|
|
3425
|
+
interface P6RawScheduleOptions {
|
|
3426
|
+
readonly sched_retained_logic: string;
|
|
3427
|
+
readonly sched_progress_override: string;
|
|
3428
|
+
readonly sched_lag_early_start_flag: string;
|
|
3429
|
+
readonly sched_float_type: string;
|
|
3430
|
+
readonly sched_calendar_on_relationship_lag: string;
|
|
3431
|
+
readonly sched_use_expect_end_flag: string;
|
|
3432
|
+
readonly sched_open_critical_flag: string;
|
|
3433
|
+
readonly sched_outer_depend_type: string;
|
|
3434
|
+
readonly sched_setplantoforecast: string;
|
|
3435
|
+
readonly sched_use_project_end_date_for_float: string;
|
|
3436
|
+
readonly enable_multiple_longest_path_calc: string;
|
|
3437
|
+
readonly limit_multiple_longest_path_calc: string;
|
|
3438
|
+
readonly max_multiple_longest_path: string;
|
|
3439
|
+
readonly use_total_float_multiple_longest_paths: string;
|
|
3440
|
+
readonly key_activity_for_multiple_longest_paths: string;
|
|
3441
|
+
readonly level_all_rsrc_flag?: string;
|
|
3442
|
+
readonly LevelPriorityList?: string;
|
|
3443
|
+
}
|
|
3444
|
+
/** Schedule settings and project planned start derived from raw P6 options. */
|
|
3445
|
+
interface P6MappedScheduleOptions {
|
|
3446
|
+
readonly settings: P6ScheduleSettings;
|
|
3447
|
+
readonly projectPlannedStart: Date | null;
|
|
3448
|
+
}
|
|
3449
|
+
/**
|
|
3450
|
+
* Maps raw P6 `PROJECT` and `SCHEDOPTIONS` rows to `P6ScheduleSettings`.
|
|
3451
|
+
* Dates are parsed as UTC wall dates; `resolveActivityId` maps the raw
|
|
3452
|
+
* ending-activity id of multiple float paths. Throws on an unknown token.
|
|
3453
|
+
*/
|
|
3454
|
+
declare function mapP6ScheduleOptions(project: P6RawProjectOptions, schedule: P6RawScheduleOptions, resolveActivityId?: (rawActivityId: string) => ActivityId | null): P6MappedScheduleOptions;
|
|
3455
|
+
/** Outbuild default P6 settings for a schedule without imported options (`dataDate` inactive). */
|
|
3456
|
+
declare function createOutbuildP6ScheduleSettings(): P6ScheduleSettings;
|
|
3457
|
+
|
|
3458
|
+
/** Parses a P6 wall date `YYYY-MM-DD HH:MM` as a UTC instant; `null` passes through, malformed input throws. */
|
|
3459
|
+
declare function parseP6WallDateAsUtc(value: string | null): Date | null;
|
|
3460
|
+
/** Formats a UTC instant as the P6 wall date `YYYY-MM-DD HH:MM`; `null` passes through, an invalid Date throws. */
|
|
3461
|
+
declare function formatUtcAsP6WallDate(value: Date | null): string | null;
|
|
3462
|
+
/** Parses a `YYYY-MM-DD` day and snaps it forward to the calendar's shift start (`shiftStart`); `null` passes through. */
|
|
3463
|
+
declare function parseP6DayAsCalendarStart(value: string | null, calendar: CalendarAPI): Date | null;
|
|
3464
|
+
|
|
2781
3465
|
/** Stable reasons returned when filter input cannot be normalized. */
|
|
2782
3466
|
declare const FILTER_REJECTION_REASON: {
|
|
2783
3467
|
readonly UNKNOWN_FIELD: "unknown_field";
|
|
@@ -2817,6 +3501,9 @@ declare const CONSTRAINT_TYPE_TO_LABEL: Record<ConstraintType, string>;
|
|
|
2817
3501
|
/** Fallback working hours per day when schedule metadata is unavailable. */
|
|
2818
3502
|
declare const DEFAULT_HOURS_PER_DAY = 8;
|
|
2819
3503
|
|
|
3504
|
+
/** Secondary constraint types P6 allows for a given primary constraint; empty when there is no primary. */
|
|
3505
|
+
declare function allowedSecondaryConstraintTypes(primary: ConstraintType | null): readonly ConstraintType[];
|
|
3506
|
+
|
|
2820
3507
|
/** Consumer creation contexts recognized by schedule integrations. */
|
|
2821
3508
|
declare const CREATION_KIND: {
|
|
2822
3509
|
readonly CHILD: "child";
|
|
@@ -2836,6 +3523,9 @@ declare const REJECTION_REASON: {
|
|
|
2836
3523
|
readonly INVALID_LINK_TYPE: "invalid_link_type";
|
|
2837
3524
|
readonly INVALID_LINK_LAG: "invalid_link_lag";
|
|
2838
3525
|
readonly INVALID_VALUE: "invalid_value";
|
|
3526
|
+
readonly CONFIRMATION_REQUIRED: "confirmation_required";
|
|
3527
|
+
readonly DATA_DATE_ACTUAL_START_LOCKED: "data_date_actual_start_locked";
|
|
3528
|
+
readonly DATA_DATE_ACTIVITY_COMPLETED: "data_date_activity_completed";
|
|
2839
3529
|
readonly NO_PIPELINE_FOR_COLUMN: "no_pipeline_for_column";
|
|
2840
3530
|
readonly ACTIVITY_NOT_FOUND: "activity_not_found";
|
|
2841
3531
|
readonly PARENT_NOT_FOUND: "parent_not_found";
|
|
@@ -2851,6 +3541,7 @@ declare const REJECTION_REASON: {
|
|
|
2851
3541
|
readonly INDENT_NO_ELIGIBLE_SIBLING: "indent_no_eligible_sibling";
|
|
2852
3542
|
readonly OUTDENT_ROOT_LEVEL_NOT_EDITABLE: "outdent_root_level_not_editable";
|
|
2853
3543
|
readonly HIERARCHY_CYCLE: "hierarchy_cycle";
|
|
3544
|
+
readonly MANUAL_SCHEDULING_ACTIVE: "manual_scheduling_active";
|
|
2854
3545
|
readonly SANDBOX_PERSISTENCE_FORBIDDEN: "sandbox_persistence_forbidden";
|
|
2855
3546
|
readonly STALE_STATE_REVISION: "stale-state-revision";
|
|
2856
3547
|
readonly INVALID_PROGRESS_VALUE: "invalid_progress_value_must_be_0_or_100";
|
|
@@ -2869,4 +3560,4 @@ declare const DISPATCH_TRACK_EVENT: {
|
|
|
2869
3560
|
/** Consumer analytics event name emitted by a schedule mutation. */
|
|
2870
3561
|
type DispatchTrackEvent = (typeof DISPATCH_TRACK_EVENT)[keyof typeof DISPATCH_TRACK_EVENT];
|
|
2871
3562
|
|
|
2872
|
-
export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchInput, type ActivityBatchItem, type ActivityBatchItemInput, type ActivityBatchLinkInput$1 as ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityBulkEdit, type ActivityCreateInput, type ActivityCreationOverrides, type ActivityCreter, type ActivityDateEdge, type ActivityDateEdit, type ActivityField, type ActivityFieldEdit, type ActivityFieldValue, type ActivityId, type ActivityLookaheadSyncInput, type ActivityMoveInput, type ActivityStatus, type ActivityType, type ApplyLookaheadConversionInput, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, type Calendar, type CalendarId, type CalendarLike, type CalendarUnit, type CalendarWorktime, type ChangeSet, type ChangeSetSource, type ColumnName, type ConstraintType, type ConstraintWarning, type CoreActivity, type CoreBaselinePoint, type CreationKind, type CriticalPathResult, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, type DateGesture, type DateGestureKind, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchManyAction, type DispatchManyChangeSetSource, type DispatchManyResult, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, type EditAlertKey, type EditDenialReason, type EditResult, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ActivityBatchLinkInput as ErgonomicActivityBatchLinkInput, type ExpectedProgressAdapter, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, type FilterCriterion, type FilterCriterionGroup, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterLogic, type FilterOperator, type FilterRejection, type FilterState, type FilterValueKind, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, type GroupCriterion, type GroupCriterionInput, type GroupLevelWindow, type GroupState, type GroupStateInput, type ImpactRequestSyncInput, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchOperationKind, type LinkBatchRequest, type LinkBatchVerdict, type LinkCreateRequest, type LinkId, type LinkPatchRequest, type LinkRejection, type LinkRelationship, type LinkType, type LinkTypeCode, type LinkUpdateAction, type LinksBatchOperation, type LoadDiagnostic, type LoadDiagnosticCode, type LookaheadConversionFormerParent, type LookaheadConversionGroup, type LookaheadConversionInput, type LookaheadConversionMilestoneMove, type LookaheadConversionPlan, type LookaheadConversionResult, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, type MutationContext, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, type OrderDirection, type OrderMode, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistableActivityField, type PersistedEntityIdentity, type PersistenceCheckpoint, type PipelineColumnName, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, type ScheduleActivitiesApi, type ScheduleApiNamespaces, type ScheduleAutoScheduleAction, type ScheduleBaselinesApi, type ScheduleCalendarsApi, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleCriticalPathApi, type ScheduleDiagnosticsApi, type ScheduleEffect, type ScheduleHistoryApi, type ScheduleImpactRequestsApi, type ScheduleLinksApi, type SchedulePersistenceApi, type ScheduleProjectionApi, type ScheduleSelectionApi, type ScheduleViewApi, type SectorMetadata, type SelectionToggleInput, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, type UndoOptions, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, type ViewAttributeAssignmentInput, type ViewAttributeCatalogInput, type ViewAttributeFilterCriterion, type ViewAttributeOrderRule, type ViewAttributeValueInput, type ViewFilterInput, type ViewStateChange, type ViewStatePropChange, type VisualRow, WORK_TIME_DIRECTION, type WbsDepth, type WithProplannerId, type WorkTimeDirection, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
|
|
3563
|
+
export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchInput, type ActivityBatchItem, type ActivityBatchItemInput, type ActivityBatchLinkInput$1 as ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityBulkEdit, type ActivityCreateInput, type ActivityCreationOverrides, type ActivityCreter, type ActivityDateEdge, type ActivityDateEdit, type ActivityField, type ActivityFieldEdit, type ActivityFieldValue, type ActivityId, type ActivityLookaheadSyncInput, type ActivityMoveInput, type ActivityStatus, type ActivityType, type ApplyLookaheadConversionInput, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONFIRMATION_KIND, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, type Calendar, type CalendarId, type CalendarLike, type CalendarUnit, type CalendarWorktime, type ChangeSet, type ChangeSetSource, type ColumnName, type ConfirmationAlternative, type ConfirmationKind, type ConfirmationRequest, type ConstraintType, type ConstraintWarning, type CoreActivity, type CoreBaselinePoint, type CreationKind, type CriticalPathResult, P6_PROPERTY_CONTRACT as DATA_DATE_PROPERTY_CONTRACT, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, type P6ActivityCalculationInputs as DataDateActivityCalculationInputs, type P6ActivityColumnKey as DataDateActivityColumnKey, type P6ActivityData as DataDateActivityData, type P6ActivityDraftState as DataDateActivityDraftState, type P6ActivityInputPatch as DataDateActivityInputPatch, type P6ActivityState as DataDateActivityState, type P6ActivityType as DataDateActivityType, P6CapabilityError as DataDateCapabilityError, type P6CapabilityErrorCode as DataDateCapabilityErrorCode, type P6DependencyReference as DataDateDependencyReference, type P6DiagnosticProjectIdentity as DataDateDiagnosticProjectIdentity, type P6DiagnosticRelationship as DataDateDiagnosticRelationship, type P6DiagnosticRelationshipType as DataDateDiagnosticRelationshipType, type P6DurationType as DataDateDurationType, type P6EndingActivityOption as DataDateEndingActivityOption, type P6EndingActivityPage as DataDateEndingActivityPage, type P6EndingActivitySearch as DataDateEndingActivitySearch, type P6MappedScheduleOptions as DataDateMappedScheduleOptions, type P6MissingActivityInput as DataDateMissingActivityInput, type P6OutOfSequencePolicy as DataDateOutOfSequencePolicy, type P6ProjectPlannedStartChange as DataDateProjectPlannedStartChange, type P6ProjectState as DataDateProjectState, type P6PropertyContractRow as DataDatePropertyContractRow, type P6PropertyEdgeCases as DataDatePropertyEdgeCases, type P6RawProjectOptions as DataDateRawProjectOptions, type P6RawScheduleOptions as DataDateRawScheduleOptions, type P6RequiredHistoricalField as DataDateRequiredHistoricalField, type P6ResourceAssignment as DataDateResourceAssignment, type P6ScheduleDiagnostic as DataDateScheduleDiagnostic, type P6ScheduleDiagnosticCode as DataDateScheduleDiagnosticCode, type P6ScheduleInput as DataDateScheduleInput, type P6ScheduleReadiness as DataDateScheduleReadiness, type P6ScheduleResult as DataDateScheduleResult, type P6ScheduleRunLog as DataDateScheduleRunLog, type P6ScheduleSettings as DataDateScheduleSettings, type P6ScheduleWarning as DataDateScheduleWarning, type P6SettingsChange as DataDateSettingsChange, type DateGesture, type DateGestureKind, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchManyAction, type DispatchManyChangeSetSource, type DispatchManyResult, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, type EditAlertKey, type EditDenialReason, type EditResult, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ActivityBatchLinkInput as ErgonomicActivityBatchLinkInput, type ExpectedProgressAdapter, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, type FilterCriterion, type FilterCriterionGroup, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterLogic, type FilterOperator, type FilterRejection, type FilterState, type FilterValueKind, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, type GroupCriterion, type GroupCriterionInput, type GroupLevelWindow, type GroupState, type GroupStateInput, type ImpactRequestSyncInput, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchOperationKind, type LinkBatchRequest, type LinkBatchVerdict, type LinkCreateRequest, type LinkId, type LinkPatchRequest, type LinkRejection, type LinkRelationship, type LinkType, type LinkTypeCode, type LinkUpdateAction, type LinksBatchOperation, type LoadDiagnostic, type LoadDiagnosticCode, type LookaheadActualIntent, LookaheadActualTransitionError, type LookaheadActualTransitionErrorCode, type LookaheadConversionFormerParent, type LookaheadConversionGroup, type LookaheadConversionInput, type LookaheadConversionMilestoneMove, type LookaheadConversionPlan, type LookaheadConversionResult, type LookaheadDerivedCalendars, type LookaheadDerivedFields, type LookaheadDerivedFieldsResolver, type LookaheadDerivedInput, type LookaheadProgressActualActivityState, type LookaheadProgressActualInput, type LookaheadProgressActualPlan, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, type MutationContext, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, type OrderDirection, type OrderMode, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistableActivityField, type PersistedEntityIdentity, type PersistenceCheckpoint, type PipelineColumnName, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, type ScheduleActivitiesApi, type ScheduleApiNamespaces, type ScheduleAutoScheduleAction, type ScheduleBaselinesApi, type ScheduleCalendarsApi, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleCriticalPathApi, type ScheduleP6Api as ScheduleDataDatesApi, type ScheduleDiagnosticsApi, type ScheduleEffect, type ScheduleHistoryApi, type ScheduleImpactRequestsApi, type ScheduleLinksApi, type SchedulePersistenceApi, type ScheduleProjectionApi, type ScheduleSelectionApi, type ScheduleViewApi, type SectorMetadata, type SelectionToggleInput, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, type UndoOptions, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, type ViewAttributeAssignmentInput, type ViewAttributeCatalogInput, type ViewAttributeFilterCriterion, type ViewAttributeOrderRule, type ViewAttributeValueInput, type ViewFilterInput, type ViewStateChange, type ViewStatePropChange, type VisualRow, WORK_TIME_DIRECTION, type WbsDepth, type WithProplannerId, type WorkTimeDirection, allowedSecondaryConstraintTypes, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createLookaheadDerivedFields, createOutbuildP6ScheduleSettings as createOutbuildDataDateScheduleSettings, createSchedule, expectedProgressFromBaseline, formatUtcAsP6WallDate, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, mapP6ScheduleOptions as mapDataDateScheduleOptions, normalizeParentKey, parseFromBackend, parseP6DayAsCalendarStart, parseP6WallDateAsUtc, planLookaheadProgressActuals, prepareLookaheadProgressActuals, resolveExpectedFinishDateSelection, resolveLookaheadActualDateSelection, willRunCriticalPath, yieldToBrowser };
|