@outbuild-company/schedule-core 1.6.3 → 1.7.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/dist/cdn/schedule-core.global.js +1 -1
- package/dist/cdn/schedule-core.global.js.map +1 -1
- package/dist/index.cjs +1374 -542
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +134 -34
- package/dist/index.d.ts +134 -34
- package/dist/index.js +1374 -542
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -134,6 +134,14 @@ interface CoreActivity {
|
|
|
134
134
|
recursiveDurationHours: number;
|
|
135
135
|
isCritical: boolean;
|
|
136
136
|
freeSlackHours: number | null;
|
|
137
|
+
/**
|
|
138
|
+
* Días de calendario crudos entre start y end (incluye no laborables). Es una
|
|
139
|
+
* columna del grid, así que la posee el core (decisión del owner 2026-08-03):
|
|
140
|
+
* estado derivado que el core mantiene al nacer la actividad y al escribir
|
|
141
|
+
* start/end/type (`internal/state/calendar-duration.ts`), y que por eso fluye
|
|
142
|
+
* solo por vistas, ChangeSets y undo. Milestone → 0; fechas inválidas → null.
|
|
143
|
+
*/
|
|
144
|
+
calendarDuration?: number | null;
|
|
137
145
|
expectedProgress: number | null;
|
|
138
146
|
expectedProgressBaseline: number | null;
|
|
139
147
|
status: ActivityStatus | null;
|
|
@@ -193,6 +201,8 @@ interface SectorMetadata {
|
|
|
193
201
|
updateDurationForPrimaveraEndDate?: boolean;
|
|
194
202
|
activityCreter?: ActivityCreter;
|
|
195
203
|
statusCriteria: StatusCriteria;
|
|
204
|
+
/** Declared by the loader input; never derived from the backend payload. */
|
|
205
|
+
ganttId: number | null;
|
|
196
206
|
}
|
|
197
207
|
interface EntityChange<T> {
|
|
198
208
|
id: string;
|
|
@@ -279,14 +289,22 @@ type NumberOperator = 'equals' | 'notEquals' | 'greaterThan' | 'lessThan' | 'gre
|
|
|
279
289
|
type DateOperator = 'after' | 'before';
|
|
280
290
|
type MembershipOperator = 'someOf' | 'notSomeOf';
|
|
281
291
|
type FilterOperator = StringOperator | NumberOperator | DateOperator | MembershipOperator;
|
|
282
|
-
type
|
|
292
|
+
type StringFilterField = 'name' | 'description' | 'customId';
|
|
293
|
+
type NumberFilterField = 'correlativeId' | 'uniqueCorrelativeId' | 'progress' | 'durationDays' | 'calendarDuration' | 'cost' | 'usedCost' | 'realCost' | 'workHours' | 'realWorkHours' | 'ponderator' | 'freeSlackDays' | 'totalSlackDays' | 'expectedProgressBaseline' | 'baselineDurationDays' | 'baselineCost' | 'baselineWorkHours';
|
|
294
|
+
type DateFilterField = 'startDate' | 'endDate' | 'constraintDate' | 'baselineStartDate' | 'baselineEndDate' | 'earlyStart' | 'earlyFinish' | 'lateStart' | 'lateFinish';
|
|
295
|
+
type IdArrayFilterField = 'responsableIds' | 'tagIds';
|
|
296
|
+
type EnumFilterField = 'status' | 'constraintType';
|
|
297
|
+
type ReferenceFilterField = 'calendarId' | 'subcontractId';
|
|
298
|
+
type BooleanFilterField = 'isCritical';
|
|
299
|
+
type FilterField = StringFilterField | NumberFilterField | DateFilterField | IdArrayFilterField | EnumFilterField | ReferenceFilterField | BooleanFilterField;
|
|
283
300
|
type FilterScalarValue = string | number | Date;
|
|
284
|
-
type FilterCriterionValue = FilterScalarValue | ReadonlyArray<string | number>;
|
|
285
|
-
interface
|
|
286
|
-
readonly field:
|
|
287
|
-
readonly operator:
|
|
288
|
-
readonly value:
|
|
301
|
+
type FilterCriterionValue = FilterScalarValue | ReadonlyArray<string | number | boolean>;
|
|
302
|
+
interface Criterion<Field extends FilterField, Operator, Value> {
|
|
303
|
+
readonly field: Field;
|
|
304
|
+
readonly operator: Operator;
|
|
305
|
+
readonly value: Value;
|
|
289
306
|
}
|
|
307
|
+
type FilterCriterion = Criterion<StringFilterField, StringOperator, string> | Criterion<NumberFilterField, NumberOperator, string | number> | Criterion<DateFilterField, DateOperator, string | number | Date> | Criterion<IdArrayFilterField, MembershipOperator, ReadonlyArray<string | number>> | Criterion<EnumFilterField, MembershipOperator, ReadonlyArray<string>> | Criterion<ReferenceFilterField, MembershipOperator, ReadonlyArray<string | number>> | Criterion<BooleanFilterField, MembershipOperator, ReadonlyArray<boolean>>;
|
|
290
308
|
interface FilterDateRange {
|
|
291
309
|
readonly start: Date;
|
|
292
310
|
readonly end: Date;
|
|
@@ -341,6 +359,10 @@ type LinksBatchOperation = {
|
|
|
341
359
|
kind: 'delete';
|
|
342
360
|
linkId: LinkId;
|
|
343
361
|
};
|
|
362
|
+
interface ReconciledActivityProgress {
|
|
363
|
+
readonly activityId: string;
|
|
364
|
+
readonly progress: number;
|
|
365
|
+
}
|
|
344
366
|
interface PersistedEntityIdentity {
|
|
345
367
|
readonly id: string;
|
|
346
368
|
readonly proplannerId: number;
|
|
@@ -373,9 +395,28 @@ interface ActivityBatchAction {
|
|
|
373
395
|
}
|
|
374
396
|
|
|
375
397
|
type DispatchAction = {
|
|
398
|
+
kind: 'activity-copy';
|
|
399
|
+
eventSource?: string;
|
|
400
|
+
} | {
|
|
401
|
+
kind: 'activity-clipboard-clear';
|
|
402
|
+
eventSource?: string;
|
|
403
|
+
} | {
|
|
404
|
+
kind: 'activity-paste-copied';
|
|
405
|
+
destination: {
|
|
406
|
+
afterSiblingId: ActivityId;
|
|
407
|
+
};
|
|
408
|
+
eventSource?: string;
|
|
409
|
+
} | {
|
|
376
410
|
kind: 'persistence-acknowledge';
|
|
377
411
|
activities?: ReadonlyArray<PersistedEntityIdentity>;
|
|
378
412
|
links?: ReadonlyArray<PersistedEntityIdentity>;
|
|
413
|
+
/**
|
|
414
|
+
* CP19 (ISSUE-070): valores que el backend normalizo al guardar (hoy solo
|
|
415
|
+
* progress). El motor los reconcilia — aplica los que difieren, ignora
|
|
416
|
+
* los iguales — para que el core refleje lo persistido. Sin undo: el
|
|
417
|
+
* acuse es clear-on-success y el tracker snapshotea despues.
|
|
418
|
+
*/
|
|
419
|
+
reconciledProgress?: ReadonlyArray<ReconciledActivityProgress>;
|
|
379
420
|
} | {
|
|
380
421
|
kind: 'baseline-apply';
|
|
381
422
|
points: ReadonlyArray<BaselinePoint>;
|
|
@@ -454,6 +495,15 @@ type DispatchAction = {
|
|
|
454
495
|
kind: 'activity-set-progress';
|
|
455
496
|
activityId: ActivityId;
|
|
456
497
|
newValue: 0 | 100;
|
|
498
|
+
/**
|
|
499
|
+
* CP15 (ISSUE-066): el origen se DECLARA, no se adivina (mismo patron
|
|
500
|
+
* que inputUnit). 'action-button' es el unico origen con salvoconducto
|
|
501
|
+
* de negocio para actividades en Lookahead (espejo del flag
|
|
502
|
+
* progressChangedByActionButton que consume parseToUpdate en el
|
|
503
|
+
* backend; guia agents/progreso-lookahead.md). Sin origen declarado
|
|
504
|
+
* aplica el canEdit completo del pipeline.
|
|
505
|
+
*/
|
|
506
|
+
origin?: 'action-button';
|
|
457
507
|
eventSource?: string;
|
|
458
508
|
} | {
|
|
459
509
|
kind: 'selection-toggle';
|
|
@@ -485,6 +535,13 @@ type DispatchAction = {
|
|
|
485
535
|
activityId: ActivityId;
|
|
486
536
|
pendingRequests: ReadonlyArray<PendingRequest>;
|
|
487
537
|
eventSource?: string;
|
|
538
|
+
} | {
|
|
539
|
+
kind: 'sir-approve';
|
|
540
|
+
activityId: ActivityId;
|
|
541
|
+
approvedRequestId: string;
|
|
542
|
+
startDate: unknown;
|
|
543
|
+
endDate: unknown;
|
|
544
|
+
eventSource?: string;
|
|
488
545
|
} | {
|
|
489
546
|
kind: 'activity-lookahead-sync';
|
|
490
547
|
activityIds: ReadonlyArray<ActivityId>;
|
|
@@ -492,38 +549,32 @@ type DispatchAction = {
|
|
|
492
549
|
hasLookaheadTasks: boolean;
|
|
493
550
|
acknowledgePersistedLookahead?: boolean;
|
|
494
551
|
eventSource?: string;
|
|
495
|
-
} | {
|
|
496
|
-
kind: 'activity-paste';
|
|
497
|
-
destination: {
|
|
498
|
-
parentId: ActivityId | '0';
|
|
499
|
-
index: number;
|
|
500
|
-
} | {
|
|
501
|
-
afterSiblingId: ActivityId;
|
|
502
|
-
};
|
|
503
|
-
referenceActivityId: ActivityId;
|
|
504
|
-
activities: ReadonlyArray<PastedActivityInput>;
|
|
505
|
-
links: ReadonlyArray<PastedLinkInput>;
|
|
506
|
-
eventSource?: string;
|
|
507
552
|
};
|
|
508
553
|
type InternalDispatchAction = DispatchAction | ActivityBatchAction;
|
|
509
|
-
interface PastedActivityInput {
|
|
510
|
-
readonly originalId: ActivityId;
|
|
511
|
-
readonly originalParentId: ActivityId | '0';
|
|
512
|
-
readonly activityId?: ActivityId;
|
|
513
|
-
readonly overrides: CreationOverrides;
|
|
514
|
-
readonly baselineSnapshot?: ActivityBaselineSnapshot | null;
|
|
515
|
-
}
|
|
516
|
-
interface PastedLinkInput {
|
|
517
|
-
readonly source: ActivityId;
|
|
518
|
-
readonly target: ActivityId;
|
|
519
|
-
readonly type: LinkType;
|
|
520
|
-
readonly lag: number;
|
|
521
|
-
readonly linkId?: LinkId;
|
|
522
|
-
}
|
|
523
554
|
interface DispatchOptions {
|
|
524
555
|
skipAutoSchedule?: boolean;
|
|
525
556
|
skipCriticalPath?: boolean;
|
|
526
557
|
inputUnit?: 'days' | 'hours';
|
|
558
|
+
/**
|
|
559
|
+
* Reversible preview mode (SIR). The edit mutates internal state with the
|
|
560
|
+
* exact same scheduling rules as a real edit (calendar, link/autoschedule
|
|
561
|
+
* propagation, parents, derived fields), but leaves no session trace: no
|
|
562
|
+
* save-tracker dirty, no undo entry, no SIR auto-reject effect or
|
|
563
|
+
* pendingRequestIds mutation, and the schedule revision does not move.
|
|
564
|
+
* The result carries `preview` with the exact inverse ChangeSet; exiting
|
|
565
|
+
* the preview is `ScheduleCore.applyPreviewInverse(inverse)`.
|
|
566
|
+
*/
|
|
567
|
+
preview?: boolean;
|
|
568
|
+
}
|
|
569
|
+
interface PreviewDispatchInfo {
|
|
570
|
+
/**
|
|
571
|
+
* Exact inverse of `changes`. Note its `after` images were captured while
|
|
572
|
+
* the preview edit was still applied; project the ChangeSet RETURNED by
|
|
573
|
+
* `applyPreviewInverse`, which re-reads them from the restored state.
|
|
574
|
+
*/
|
|
575
|
+
inverse: ChangeSet;
|
|
576
|
+
/** `getScheduleRevision()` at the time the preview was computed. */
|
|
577
|
+
revision: number;
|
|
527
578
|
}
|
|
528
579
|
type DispatchResult = {
|
|
529
580
|
ok: true;
|
|
@@ -531,6 +582,8 @@ type DispatchResult = {
|
|
|
531
582
|
verdicts?: ReadonlyArray<DatesBatchVerdict>;
|
|
532
583
|
activityVerdicts?: ReadonlyArray<DatesBatchVerdict>;
|
|
533
584
|
linkVerdicts?: ReadonlyArray<LinkBatchVerdict>;
|
|
585
|
+
/** Present only when dispatched with `DispatchOptions.preview`. */
|
|
586
|
+
preview?: PreviewDispatchInfo;
|
|
534
587
|
} | {
|
|
535
588
|
ok: false;
|
|
536
589
|
reason: string;
|
|
@@ -746,6 +799,7 @@ interface ScheduleCoreInput extends BackendScheduleInput {
|
|
|
746
799
|
clock?: () => Date;
|
|
747
800
|
criticalPathOnLoad?: boolean;
|
|
748
801
|
statusCriteria?: StatusCriteria;
|
|
802
|
+
ganttId?: number;
|
|
749
803
|
reporter?: ScheduleCoreReporter;
|
|
750
804
|
}
|
|
751
805
|
|
|
@@ -764,12 +818,20 @@ interface DateGesturePreview {
|
|
|
764
818
|
} | null;
|
|
765
819
|
}
|
|
766
820
|
|
|
821
|
+
interface EffectiveGraphAudit {
|
|
822
|
+
readonly activityCount: number;
|
|
823
|
+
readonly logicalLinkCount: number;
|
|
824
|
+
readonly effectiveEdgeCount: number;
|
|
825
|
+
readonly circularComponents: ReadonlyArray<ReadonlyArray<string>>;
|
|
826
|
+
readonly largestComponentSize: number;
|
|
827
|
+
}
|
|
767
828
|
interface UndoOptions {
|
|
768
829
|
readonly skipCriticalPath?: boolean;
|
|
769
830
|
readonly expectedUndoDepth?: number;
|
|
770
831
|
}
|
|
771
832
|
|
|
772
833
|
declare class ScheduleCore {
|
|
834
|
+
private readonly _activityClipboard;
|
|
773
835
|
private _status;
|
|
774
836
|
private readonly coreRuntime;
|
|
775
837
|
private readonly _undo;
|
|
@@ -811,9 +873,18 @@ declare class ScheduleCore {
|
|
|
811
873
|
getActivityView(id: ActivityId): Readonly<CoreActivity> | null;
|
|
812
874
|
createDateGesturePreview(gesture: DateGesture): DateGesturePreview;
|
|
813
875
|
getAllActivitiesView(): ReadonlyArray<Readonly<CoreActivity>>;
|
|
876
|
+
/**
|
|
877
|
+
* Read del plan de indent (ISSUE-080): los padres destino DISTINTOS bajo los
|
|
878
|
+
* que quedarían las actividades si se indentaran ahora. Es exactamente la
|
|
879
|
+
* planificación que ejecuta el handler (`planIndentMoves`, autoridad única),
|
|
880
|
+
* expuesta para que la frontera pueda correr el protocolo de conversión a
|
|
881
|
+
* madre (chequeo backend + modal) ANTES de despachar. Solo lecturas.
|
|
882
|
+
*/
|
|
883
|
+
getIndentTargetParentIds(activityIds: ReadonlyArray<ActivityId | string>): readonly string[];
|
|
814
884
|
getChildrenView(parentId: ActivityId | '0'): ReadonlyArray<Readonly<CoreActivity>>;
|
|
815
885
|
getLinkView(id: LinkId): Readonly<Link> | null;
|
|
816
886
|
getAllLinksView(): ReadonlyArray<Readonly<Link>>;
|
|
887
|
+
auditEffectiveGraph(): EffectiveGraphAudit;
|
|
817
888
|
getProperty<Property extends keyof CoreActivity>(activityId: ActivityId, property: Property): CoreActivity[Property] | null;
|
|
818
889
|
getAllIds(): readonly string[];
|
|
819
890
|
forEachActivityId(visit: (id: string) => void): void;
|
|
@@ -832,6 +903,26 @@ declare class ScheduleCore {
|
|
|
832
903
|
getModifiedLinks(): ReadonlyArray<Readonly<Link>>;
|
|
833
904
|
getModifiedActivities(): ReadonlyArray<Readonly<CoreActivity>>;
|
|
834
905
|
hasUnsavedChanges(): boolean;
|
|
906
|
+
/**
|
|
907
|
+
* Read-only view of the internal schedule revision. It moves once per
|
|
908
|
+
* substantive CANONICAL mutation (dispatch, undo, redo). It does NOT move
|
|
909
|
+
* for a preview dispatch nor for `applyPreviewInverse`: comparing the value
|
|
910
|
+
* captured in `PreviewDispatchInfo.revision` against the current one
|
|
911
|
+
* answers "did the schedule change while the preview was open".
|
|
912
|
+
*/
|
|
913
|
+
getScheduleRevision(): number;
|
|
914
|
+
/**
|
|
915
|
+
* Exit channel for a preview dispatch (`DispatchOptions.preview`): applies
|
|
916
|
+
* the inverse ChangeSet the preview returned, restoring the canonical
|
|
917
|
+
* state exactly. Like the preview itself it leaves no session trace: no
|
|
918
|
+
* save-tracker dirty, no undo entry, no effects, and the schedule revision
|
|
919
|
+
* does not move (see `getScheduleRevision`).
|
|
920
|
+
*
|
|
921
|
+
* Returns the ChangeSet to project to the view layer: the same changes as
|
|
922
|
+
* `inverse`, but with `after` images re-read from the restored state (the
|
|
923
|
+
* ones inside `inverse` were captured while the preview edit was applied).
|
|
924
|
+
*/
|
|
925
|
+
applyPreviewInverse(inverse: ChangeSet): Promise<ChangeSet>;
|
|
835
926
|
getDeletedActivitiesSinceLastSave(): ReadonlyArray<Readonly<DeletedActivitySnapshot>>;
|
|
836
927
|
getDeletedLinksSinceLastSave(): ReadonlyArray<Readonly<DeletedLinkSnapshot>>;
|
|
837
928
|
private _enqueue;
|
|
@@ -1029,6 +1120,9 @@ declare const DEFAULT_HOURS_PER_DAY = 8;
|
|
|
1029
1120
|
|
|
1030
1121
|
type DispatchActionKind = DispatchAction['kind'];
|
|
1031
1122
|
declare const DISPATCH_ACTION_KIND: {
|
|
1123
|
+
readonly ACTIVITY_CLIPBOARD_CLEAR: "activity-clipboard-clear";
|
|
1124
|
+
readonly ACTIVITY_COPY: "activity-copy";
|
|
1125
|
+
readonly ACTIVITY_PASTE_COPIED: "activity-paste-copied";
|
|
1032
1126
|
readonly PERSISTENCE_ACKNOWLEDGE: "persistence-acknowledge";
|
|
1033
1127
|
readonly BASELINE_APPLY: "baseline-apply";
|
|
1034
1128
|
readonly PONDERATOR_CRITERION_SET: "ponderator-criterion-set";
|
|
@@ -1046,13 +1140,13 @@ declare const DISPATCH_ACTION_KIND: {
|
|
|
1046
1140
|
readonly ACTIVITY_INDENT: "activity-indent";
|
|
1047
1141
|
readonly ACTIVITY_OUTDENT: "activity-outdent";
|
|
1048
1142
|
readonly ACTIVITY_SET_PROGRESS: "activity-set-progress";
|
|
1049
|
-
readonly ACTIVITY_PASTE: "activity-paste";
|
|
1050
1143
|
readonly SELECTION_TOGGLE: "selection-toggle";
|
|
1051
1144
|
readonly SELECTION_REPLACE: "selection-replace";
|
|
1052
1145
|
readonly VISIBILITY_SET: "visibility-set";
|
|
1053
1146
|
readonly FILTER_SET: "filter-set";
|
|
1054
1147
|
readonly SORT_SET: "sort-set";
|
|
1055
1148
|
readonly SIR_SYNC: "sir-sync";
|
|
1149
|
+
readonly SIR_APPROVE: "sir-approve";
|
|
1056
1150
|
readonly ACTIVITY_LOOKAHEAD_SYNC: "activity-lookahead-sync";
|
|
1057
1151
|
};
|
|
1058
1152
|
declare const DISPATCH_ACTION_KINDS: ReadonlyArray<DispatchActionKind>;
|
|
@@ -1077,13 +1171,19 @@ declare const REJECTION_REASON: {
|
|
|
1077
1171
|
readonly ACTIVITY_NOT_FOUND: "activity_not_found";
|
|
1078
1172
|
readonly PARENT_NOT_FOUND: "parent_not_found";
|
|
1079
1173
|
readonly ACTIVITY_IDS_EMPTY: "activity_ids_empty";
|
|
1174
|
+
readonly NO_ACTIVITY_SELECTION: "no_activity_selection";
|
|
1175
|
+
readonly CLIPBOARD_EMPTY: "clipboard_empty";
|
|
1176
|
+
readonly ACTIVITY_PASTE_INVARIANT_FAILED: "activity_paste_invariant_failed";
|
|
1080
1177
|
readonly ANCHOR_SIBLING_CONFLICT: "anchor_sibling_conflict";
|
|
1081
1178
|
readonly ANCHOR_SIBLING_NOT_FOUND: "anchor_sibling_not_found";
|
|
1082
1179
|
readonly ANCHOR_SIBLING_WRONG_PARENT: "anchor_sibling_wrong_parent";
|
|
1083
1180
|
readonly PARENT_FROZEN_BY_SIR: "parent_frozen_by_sir";
|
|
1181
|
+
readonly SIR_REQUEST_NOT_PENDING: "sir_request_not_pending";
|
|
1182
|
+
readonly PREVIEW_UNSUPPORTED_ACTION: "preview_unsupported_action";
|
|
1084
1183
|
readonly CANNOT_MOVE_INTO_OWN_DESCENDANT: "cannot_move_into_own_descendant";
|
|
1085
1184
|
readonly INDENT_NO_ELIGIBLE_SIBLING: "indent_no_eligible_sibling";
|
|
1086
1185
|
readonly OUTDENT_ROOT_LEVEL_NOT_EDITABLE: "outdent_root_level_not_editable";
|
|
1186
|
+
readonly HIERARCHY_CYCLE: "hierarchy_cycle";
|
|
1087
1187
|
readonly INVALID_PROGRESS_VALUE: "invalid_progress_value_must_be_0_or_100";
|
|
1088
1188
|
};
|
|
1089
1189
|
type DispatchRejectReason = (typeof REJECTION_REASON)[keyof typeof REJECTION_REASON];
|
|
@@ -1097,4 +1197,4 @@ declare const DISPATCH_TRACK_EVENT: {
|
|
|
1097
1197
|
};
|
|
1098
1198
|
type DispatchTrackEvent = (typeof DISPATCH_TRACK_EVENT)[keyof typeof DISPATCH_TRACK_EVENT];
|
|
1099
1199
|
|
|
1100
|
-
export { ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchItem, type ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityCreter, type ActivityId, type ActivityStatus, type ActivityType, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, COLUMN, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, 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 CreationOverrides, type CriticalPathResult, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_TRACK_EVENT, type DateGesture, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, type EditableColumnName, type EntityChange, type ExpectedProgressAdapter, type FilterCriterion, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterOperator, type FilterState, LINK_CODE_TO_TYPE, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchVerdict, type LinkId, type LinkType, type LinkTypeCode, type LinksBatchOperation, NEW_ACTIVITY_DEFAULTS, type OrderRule, type OrderState, type ParsedInput, type
|
|
1200
|
+
export { ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchItem, type ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityCreter, type ActivityId, type ActivityStatus, type ActivityType, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, COLUMN, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, 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 CreationOverrides, type CriticalPathResult, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_TRACK_EVENT, type DateGesture, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ExpectedProgressAdapter, type FilterCriterion, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterOperator, type FilterState, LINK_CODE_TO_TYPE, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchVerdict, type LinkId, type LinkType, type LinkTypeCode, type LinksBatchOperation, NEW_ACTIVITY_DEFAULTS, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistedEntityIdentity, type PipelineColumnName, type PreviewDispatchInfo, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, STATUS, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleEffect, type SectorMetadata, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, type UndoOptions, type ViewStateChange, type ViewStatePropChange, WORK_TIME_DIRECTION, type WithProplannerId, type WorkTimeDirection, checkNoUpdatedLinks, computeExpectedProgress, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
|
package/dist/index.d.ts
CHANGED
|
@@ -134,6 +134,14 @@ interface CoreActivity {
|
|
|
134
134
|
recursiveDurationHours: number;
|
|
135
135
|
isCritical: boolean;
|
|
136
136
|
freeSlackHours: number | null;
|
|
137
|
+
/**
|
|
138
|
+
* Días de calendario crudos entre start y end (incluye no laborables). Es una
|
|
139
|
+
* columna del grid, así que la posee el core (decisión del owner 2026-08-03):
|
|
140
|
+
* estado derivado que el core mantiene al nacer la actividad y al escribir
|
|
141
|
+
* start/end/type (`internal/state/calendar-duration.ts`), y que por eso fluye
|
|
142
|
+
* solo por vistas, ChangeSets y undo. Milestone → 0; fechas inválidas → null.
|
|
143
|
+
*/
|
|
144
|
+
calendarDuration?: number | null;
|
|
137
145
|
expectedProgress: number | null;
|
|
138
146
|
expectedProgressBaseline: number | null;
|
|
139
147
|
status: ActivityStatus | null;
|
|
@@ -193,6 +201,8 @@ interface SectorMetadata {
|
|
|
193
201
|
updateDurationForPrimaveraEndDate?: boolean;
|
|
194
202
|
activityCreter?: ActivityCreter;
|
|
195
203
|
statusCriteria: StatusCriteria;
|
|
204
|
+
/** Declared by the loader input; never derived from the backend payload. */
|
|
205
|
+
ganttId: number | null;
|
|
196
206
|
}
|
|
197
207
|
interface EntityChange<T> {
|
|
198
208
|
id: string;
|
|
@@ -279,14 +289,22 @@ type NumberOperator = 'equals' | 'notEquals' | 'greaterThan' | 'lessThan' | 'gre
|
|
|
279
289
|
type DateOperator = 'after' | 'before';
|
|
280
290
|
type MembershipOperator = 'someOf' | 'notSomeOf';
|
|
281
291
|
type FilterOperator = StringOperator | NumberOperator | DateOperator | MembershipOperator;
|
|
282
|
-
type
|
|
292
|
+
type StringFilterField = 'name' | 'description' | 'customId';
|
|
293
|
+
type NumberFilterField = 'correlativeId' | 'uniqueCorrelativeId' | 'progress' | 'durationDays' | 'calendarDuration' | 'cost' | 'usedCost' | 'realCost' | 'workHours' | 'realWorkHours' | 'ponderator' | 'freeSlackDays' | 'totalSlackDays' | 'expectedProgressBaseline' | 'baselineDurationDays' | 'baselineCost' | 'baselineWorkHours';
|
|
294
|
+
type DateFilterField = 'startDate' | 'endDate' | 'constraintDate' | 'baselineStartDate' | 'baselineEndDate' | 'earlyStart' | 'earlyFinish' | 'lateStart' | 'lateFinish';
|
|
295
|
+
type IdArrayFilterField = 'responsableIds' | 'tagIds';
|
|
296
|
+
type EnumFilterField = 'status' | 'constraintType';
|
|
297
|
+
type ReferenceFilterField = 'calendarId' | 'subcontractId';
|
|
298
|
+
type BooleanFilterField = 'isCritical';
|
|
299
|
+
type FilterField = StringFilterField | NumberFilterField | DateFilterField | IdArrayFilterField | EnumFilterField | ReferenceFilterField | BooleanFilterField;
|
|
283
300
|
type FilterScalarValue = string | number | Date;
|
|
284
|
-
type FilterCriterionValue = FilterScalarValue | ReadonlyArray<string | number>;
|
|
285
|
-
interface
|
|
286
|
-
readonly field:
|
|
287
|
-
readonly operator:
|
|
288
|
-
readonly value:
|
|
301
|
+
type FilterCriterionValue = FilterScalarValue | ReadonlyArray<string | number | boolean>;
|
|
302
|
+
interface Criterion<Field extends FilterField, Operator, Value> {
|
|
303
|
+
readonly field: Field;
|
|
304
|
+
readonly operator: Operator;
|
|
305
|
+
readonly value: Value;
|
|
289
306
|
}
|
|
307
|
+
type FilterCriterion = Criterion<StringFilterField, StringOperator, string> | Criterion<NumberFilterField, NumberOperator, string | number> | Criterion<DateFilterField, DateOperator, string | number | Date> | Criterion<IdArrayFilterField, MembershipOperator, ReadonlyArray<string | number>> | Criterion<EnumFilterField, MembershipOperator, ReadonlyArray<string>> | Criterion<ReferenceFilterField, MembershipOperator, ReadonlyArray<string | number>> | Criterion<BooleanFilterField, MembershipOperator, ReadonlyArray<boolean>>;
|
|
290
308
|
interface FilterDateRange {
|
|
291
309
|
readonly start: Date;
|
|
292
310
|
readonly end: Date;
|
|
@@ -341,6 +359,10 @@ type LinksBatchOperation = {
|
|
|
341
359
|
kind: 'delete';
|
|
342
360
|
linkId: LinkId;
|
|
343
361
|
};
|
|
362
|
+
interface ReconciledActivityProgress {
|
|
363
|
+
readonly activityId: string;
|
|
364
|
+
readonly progress: number;
|
|
365
|
+
}
|
|
344
366
|
interface PersistedEntityIdentity {
|
|
345
367
|
readonly id: string;
|
|
346
368
|
readonly proplannerId: number;
|
|
@@ -373,9 +395,28 @@ interface ActivityBatchAction {
|
|
|
373
395
|
}
|
|
374
396
|
|
|
375
397
|
type DispatchAction = {
|
|
398
|
+
kind: 'activity-copy';
|
|
399
|
+
eventSource?: string;
|
|
400
|
+
} | {
|
|
401
|
+
kind: 'activity-clipboard-clear';
|
|
402
|
+
eventSource?: string;
|
|
403
|
+
} | {
|
|
404
|
+
kind: 'activity-paste-copied';
|
|
405
|
+
destination: {
|
|
406
|
+
afterSiblingId: ActivityId;
|
|
407
|
+
};
|
|
408
|
+
eventSource?: string;
|
|
409
|
+
} | {
|
|
376
410
|
kind: 'persistence-acknowledge';
|
|
377
411
|
activities?: ReadonlyArray<PersistedEntityIdentity>;
|
|
378
412
|
links?: ReadonlyArray<PersistedEntityIdentity>;
|
|
413
|
+
/**
|
|
414
|
+
* CP19 (ISSUE-070): valores que el backend normalizo al guardar (hoy solo
|
|
415
|
+
* progress). El motor los reconcilia — aplica los que difieren, ignora
|
|
416
|
+
* los iguales — para que el core refleje lo persistido. Sin undo: el
|
|
417
|
+
* acuse es clear-on-success y el tracker snapshotea despues.
|
|
418
|
+
*/
|
|
419
|
+
reconciledProgress?: ReadonlyArray<ReconciledActivityProgress>;
|
|
379
420
|
} | {
|
|
380
421
|
kind: 'baseline-apply';
|
|
381
422
|
points: ReadonlyArray<BaselinePoint>;
|
|
@@ -454,6 +495,15 @@ type DispatchAction = {
|
|
|
454
495
|
kind: 'activity-set-progress';
|
|
455
496
|
activityId: ActivityId;
|
|
456
497
|
newValue: 0 | 100;
|
|
498
|
+
/**
|
|
499
|
+
* CP15 (ISSUE-066): el origen se DECLARA, no se adivina (mismo patron
|
|
500
|
+
* que inputUnit). 'action-button' es el unico origen con salvoconducto
|
|
501
|
+
* de negocio para actividades en Lookahead (espejo del flag
|
|
502
|
+
* progressChangedByActionButton que consume parseToUpdate en el
|
|
503
|
+
* backend; guia agents/progreso-lookahead.md). Sin origen declarado
|
|
504
|
+
* aplica el canEdit completo del pipeline.
|
|
505
|
+
*/
|
|
506
|
+
origin?: 'action-button';
|
|
457
507
|
eventSource?: string;
|
|
458
508
|
} | {
|
|
459
509
|
kind: 'selection-toggle';
|
|
@@ -485,6 +535,13 @@ type DispatchAction = {
|
|
|
485
535
|
activityId: ActivityId;
|
|
486
536
|
pendingRequests: ReadonlyArray<PendingRequest>;
|
|
487
537
|
eventSource?: string;
|
|
538
|
+
} | {
|
|
539
|
+
kind: 'sir-approve';
|
|
540
|
+
activityId: ActivityId;
|
|
541
|
+
approvedRequestId: string;
|
|
542
|
+
startDate: unknown;
|
|
543
|
+
endDate: unknown;
|
|
544
|
+
eventSource?: string;
|
|
488
545
|
} | {
|
|
489
546
|
kind: 'activity-lookahead-sync';
|
|
490
547
|
activityIds: ReadonlyArray<ActivityId>;
|
|
@@ -492,38 +549,32 @@ type DispatchAction = {
|
|
|
492
549
|
hasLookaheadTasks: boolean;
|
|
493
550
|
acknowledgePersistedLookahead?: boolean;
|
|
494
551
|
eventSource?: string;
|
|
495
|
-
} | {
|
|
496
|
-
kind: 'activity-paste';
|
|
497
|
-
destination: {
|
|
498
|
-
parentId: ActivityId | '0';
|
|
499
|
-
index: number;
|
|
500
|
-
} | {
|
|
501
|
-
afterSiblingId: ActivityId;
|
|
502
|
-
};
|
|
503
|
-
referenceActivityId: ActivityId;
|
|
504
|
-
activities: ReadonlyArray<PastedActivityInput>;
|
|
505
|
-
links: ReadonlyArray<PastedLinkInput>;
|
|
506
|
-
eventSource?: string;
|
|
507
552
|
};
|
|
508
553
|
type InternalDispatchAction = DispatchAction | ActivityBatchAction;
|
|
509
|
-
interface PastedActivityInput {
|
|
510
|
-
readonly originalId: ActivityId;
|
|
511
|
-
readonly originalParentId: ActivityId | '0';
|
|
512
|
-
readonly activityId?: ActivityId;
|
|
513
|
-
readonly overrides: CreationOverrides;
|
|
514
|
-
readonly baselineSnapshot?: ActivityBaselineSnapshot | null;
|
|
515
|
-
}
|
|
516
|
-
interface PastedLinkInput {
|
|
517
|
-
readonly source: ActivityId;
|
|
518
|
-
readonly target: ActivityId;
|
|
519
|
-
readonly type: LinkType;
|
|
520
|
-
readonly lag: number;
|
|
521
|
-
readonly linkId?: LinkId;
|
|
522
|
-
}
|
|
523
554
|
interface DispatchOptions {
|
|
524
555
|
skipAutoSchedule?: boolean;
|
|
525
556
|
skipCriticalPath?: boolean;
|
|
526
557
|
inputUnit?: 'days' | 'hours';
|
|
558
|
+
/**
|
|
559
|
+
* Reversible preview mode (SIR). The edit mutates internal state with the
|
|
560
|
+
* exact same scheduling rules as a real edit (calendar, link/autoschedule
|
|
561
|
+
* propagation, parents, derived fields), but leaves no session trace: no
|
|
562
|
+
* save-tracker dirty, no undo entry, no SIR auto-reject effect or
|
|
563
|
+
* pendingRequestIds mutation, and the schedule revision does not move.
|
|
564
|
+
* The result carries `preview` with the exact inverse ChangeSet; exiting
|
|
565
|
+
* the preview is `ScheduleCore.applyPreviewInverse(inverse)`.
|
|
566
|
+
*/
|
|
567
|
+
preview?: boolean;
|
|
568
|
+
}
|
|
569
|
+
interface PreviewDispatchInfo {
|
|
570
|
+
/**
|
|
571
|
+
* Exact inverse of `changes`. Note its `after` images were captured while
|
|
572
|
+
* the preview edit was still applied; project the ChangeSet RETURNED by
|
|
573
|
+
* `applyPreviewInverse`, which re-reads them from the restored state.
|
|
574
|
+
*/
|
|
575
|
+
inverse: ChangeSet;
|
|
576
|
+
/** `getScheduleRevision()` at the time the preview was computed. */
|
|
577
|
+
revision: number;
|
|
527
578
|
}
|
|
528
579
|
type DispatchResult = {
|
|
529
580
|
ok: true;
|
|
@@ -531,6 +582,8 @@ type DispatchResult = {
|
|
|
531
582
|
verdicts?: ReadonlyArray<DatesBatchVerdict>;
|
|
532
583
|
activityVerdicts?: ReadonlyArray<DatesBatchVerdict>;
|
|
533
584
|
linkVerdicts?: ReadonlyArray<LinkBatchVerdict>;
|
|
585
|
+
/** Present only when dispatched with `DispatchOptions.preview`. */
|
|
586
|
+
preview?: PreviewDispatchInfo;
|
|
534
587
|
} | {
|
|
535
588
|
ok: false;
|
|
536
589
|
reason: string;
|
|
@@ -746,6 +799,7 @@ interface ScheduleCoreInput extends BackendScheduleInput {
|
|
|
746
799
|
clock?: () => Date;
|
|
747
800
|
criticalPathOnLoad?: boolean;
|
|
748
801
|
statusCriteria?: StatusCriteria;
|
|
802
|
+
ganttId?: number;
|
|
749
803
|
reporter?: ScheduleCoreReporter;
|
|
750
804
|
}
|
|
751
805
|
|
|
@@ -764,12 +818,20 @@ interface DateGesturePreview {
|
|
|
764
818
|
} | null;
|
|
765
819
|
}
|
|
766
820
|
|
|
821
|
+
interface EffectiveGraphAudit {
|
|
822
|
+
readonly activityCount: number;
|
|
823
|
+
readonly logicalLinkCount: number;
|
|
824
|
+
readonly effectiveEdgeCount: number;
|
|
825
|
+
readonly circularComponents: ReadonlyArray<ReadonlyArray<string>>;
|
|
826
|
+
readonly largestComponentSize: number;
|
|
827
|
+
}
|
|
767
828
|
interface UndoOptions {
|
|
768
829
|
readonly skipCriticalPath?: boolean;
|
|
769
830
|
readonly expectedUndoDepth?: number;
|
|
770
831
|
}
|
|
771
832
|
|
|
772
833
|
declare class ScheduleCore {
|
|
834
|
+
private readonly _activityClipboard;
|
|
773
835
|
private _status;
|
|
774
836
|
private readonly coreRuntime;
|
|
775
837
|
private readonly _undo;
|
|
@@ -811,9 +873,18 @@ declare class ScheduleCore {
|
|
|
811
873
|
getActivityView(id: ActivityId): Readonly<CoreActivity> | null;
|
|
812
874
|
createDateGesturePreview(gesture: DateGesture): DateGesturePreview;
|
|
813
875
|
getAllActivitiesView(): ReadonlyArray<Readonly<CoreActivity>>;
|
|
876
|
+
/**
|
|
877
|
+
* Read del plan de indent (ISSUE-080): los padres destino DISTINTOS bajo los
|
|
878
|
+
* que quedarían las actividades si se indentaran ahora. Es exactamente la
|
|
879
|
+
* planificación que ejecuta el handler (`planIndentMoves`, autoridad única),
|
|
880
|
+
* expuesta para que la frontera pueda correr el protocolo de conversión a
|
|
881
|
+
* madre (chequeo backend + modal) ANTES de despachar. Solo lecturas.
|
|
882
|
+
*/
|
|
883
|
+
getIndentTargetParentIds(activityIds: ReadonlyArray<ActivityId | string>): readonly string[];
|
|
814
884
|
getChildrenView(parentId: ActivityId | '0'): ReadonlyArray<Readonly<CoreActivity>>;
|
|
815
885
|
getLinkView(id: LinkId): Readonly<Link> | null;
|
|
816
886
|
getAllLinksView(): ReadonlyArray<Readonly<Link>>;
|
|
887
|
+
auditEffectiveGraph(): EffectiveGraphAudit;
|
|
817
888
|
getProperty<Property extends keyof CoreActivity>(activityId: ActivityId, property: Property): CoreActivity[Property] | null;
|
|
818
889
|
getAllIds(): readonly string[];
|
|
819
890
|
forEachActivityId(visit: (id: string) => void): void;
|
|
@@ -832,6 +903,26 @@ declare class ScheduleCore {
|
|
|
832
903
|
getModifiedLinks(): ReadonlyArray<Readonly<Link>>;
|
|
833
904
|
getModifiedActivities(): ReadonlyArray<Readonly<CoreActivity>>;
|
|
834
905
|
hasUnsavedChanges(): boolean;
|
|
906
|
+
/**
|
|
907
|
+
* Read-only view of the internal schedule revision. It moves once per
|
|
908
|
+
* substantive CANONICAL mutation (dispatch, undo, redo). It does NOT move
|
|
909
|
+
* for a preview dispatch nor for `applyPreviewInverse`: comparing the value
|
|
910
|
+
* captured in `PreviewDispatchInfo.revision` against the current one
|
|
911
|
+
* answers "did the schedule change while the preview was open".
|
|
912
|
+
*/
|
|
913
|
+
getScheduleRevision(): number;
|
|
914
|
+
/**
|
|
915
|
+
* Exit channel for a preview dispatch (`DispatchOptions.preview`): applies
|
|
916
|
+
* the inverse ChangeSet the preview returned, restoring the canonical
|
|
917
|
+
* state exactly. Like the preview itself it leaves no session trace: no
|
|
918
|
+
* save-tracker dirty, no undo entry, no effects, and the schedule revision
|
|
919
|
+
* does not move (see `getScheduleRevision`).
|
|
920
|
+
*
|
|
921
|
+
* Returns the ChangeSet to project to the view layer: the same changes as
|
|
922
|
+
* `inverse`, but with `after` images re-read from the restored state (the
|
|
923
|
+
* ones inside `inverse` were captured while the preview edit was applied).
|
|
924
|
+
*/
|
|
925
|
+
applyPreviewInverse(inverse: ChangeSet): Promise<ChangeSet>;
|
|
835
926
|
getDeletedActivitiesSinceLastSave(): ReadonlyArray<Readonly<DeletedActivitySnapshot>>;
|
|
836
927
|
getDeletedLinksSinceLastSave(): ReadonlyArray<Readonly<DeletedLinkSnapshot>>;
|
|
837
928
|
private _enqueue;
|
|
@@ -1029,6 +1120,9 @@ declare const DEFAULT_HOURS_PER_DAY = 8;
|
|
|
1029
1120
|
|
|
1030
1121
|
type DispatchActionKind = DispatchAction['kind'];
|
|
1031
1122
|
declare const DISPATCH_ACTION_KIND: {
|
|
1123
|
+
readonly ACTIVITY_CLIPBOARD_CLEAR: "activity-clipboard-clear";
|
|
1124
|
+
readonly ACTIVITY_COPY: "activity-copy";
|
|
1125
|
+
readonly ACTIVITY_PASTE_COPIED: "activity-paste-copied";
|
|
1032
1126
|
readonly PERSISTENCE_ACKNOWLEDGE: "persistence-acknowledge";
|
|
1033
1127
|
readonly BASELINE_APPLY: "baseline-apply";
|
|
1034
1128
|
readonly PONDERATOR_CRITERION_SET: "ponderator-criterion-set";
|
|
@@ -1046,13 +1140,13 @@ declare const DISPATCH_ACTION_KIND: {
|
|
|
1046
1140
|
readonly ACTIVITY_INDENT: "activity-indent";
|
|
1047
1141
|
readonly ACTIVITY_OUTDENT: "activity-outdent";
|
|
1048
1142
|
readonly ACTIVITY_SET_PROGRESS: "activity-set-progress";
|
|
1049
|
-
readonly ACTIVITY_PASTE: "activity-paste";
|
|
1050
1143
|
readonly SELECTION_TOGGLE: "selection-toggle";
|
|
1051
1144
|
readonly SELECTION_REPLACE: "selection-replace";
|
|
1052
1145
|
readonly VISIBILITY_SET: "visibility-set";
|
|
1053
1146
|
readonly FILTER_SET: "filter-set";
|
|
1054
1147
|
readonly SORT_SET: "sort-set";
|
|
1055
1148
|
readonly SIR_SYNC: "sir-sync";
|
|
1149
|
+
readonly SIR_APPROVE: "sir-approve";
|
|
1056
1150
|
readonly ACTIVITY_LOOKAHEAD_SYNC: "activity-lookahead-sync";
|
|
1057
1151
|
};
|
|
1058
1152
|
declare const DISPATCH_ACTION_KINDS: ReadonlyArray<DispatchActionKind>;
|
|
@@ -1077,13 +1171,19 @@ declare const REJECTION_REASON: {
|
|
|
1077
1171
|
readonly ACTIVITY_NOT_FOUND: "activity_not_found";
|
|
1078
1172
|
readonly PARENT_NOT_FOUND: "parent_not_found";
|
|
1079
1173
|
readonly ACTIVITY_IDS_EMPTY: "activity_ids_empty";
|
|
1174
|
+
readonly NO_ACTIVITY_SELECTION: "no_activity_selection";
|
|
1175
|
+
readonly CLIPBOARD_EMPTY: "clipboard_empty";
|
|
1176
|
+
readonly ACTIVITY_PASTE_INVARIANT_FAILED: "activity_paste_invariant_failed";
|
|
1080
1177
|
readonly ANCHOR_SIBLING_CONFLICT: "anchor_sibling_conflict";
|
|
1081
1178
|
readonly ANCHOR_SIBLING_NOT_FOUND: "anchor_sibling_not_found";
|
|
1082
1179
|
readonly ANCHOR_SIBLING_WRONG_PARENT: "anchor_sibling_wrong_parent";
|
|
1083
1180
|
readonly PARENT_FROZEN_BY_SIR: "parent_frozen_by_sir";
|
|
1181
|
+
readonly SIR_REQUEST_NOT_PENDING: "sir_request_not_pending";
|
|
1182
|
+
readonly PREVIEW_UNSUPPORTED_ACTION: "preview_unsupported_action";
|
|
1084
1183
|
readonly CANNOT_MOVE_INTO_OWN_DESCENDANT: "cannot_move_into_own_descendant";
|
|
1085
1184
|
readonly INDENT_NO_ELIGIBLE_SIBLING: "indent_no_eligible_sibling";
|
|
1086
1185
|
readonly OUTDENT_ROOT_LEVEL_NOT_EDITABLE: "outdent_root_level_not_editable";
|
|
1186
|
+
readonly HIERARCHY_CYCLE: "hierarchy_cycle";
|
|
1087
1187
|
readonly INVALID_PROGRESS_VALUE: "invalid_progress_value_must_be_0_or_100";
|
|
1088
1188
|
};
|
|
1089
1189
|
type DispatchRejectReason = (typeof REJECTION_REASON)[keyof typeof REJECTION_REASON];
|
|
@@ -1097,4 +1197,4 @@ declare const DISPATCH_TRACK_EVENT: {
|
|
|
1097
1197
|
};
|
|
1098
1198
|
type DispatchTrackEvent = (typeof DISPATCH_TRACK_EVENT)[keyof typeof DISPATCH_TRACK_EVENT];
|
|
1099
1199
|
|
|
1100
|
-
export { ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchItem, type ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityCreter, type ActivityId, type ActivityStatus, type ActivityType, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, COLUMN, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, 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 CreationOverrides, type CriticalPathResult, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_TRACK_EVENT, type DateGesture, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, type EditableColumnName, type EntityChange, type ExpectedProgressAdapter, type FilterCriterion, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterOperator, type FilterState, LINK_CODE_TO_TYPE, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchVerdict, type LinkId, type LinkType, type LinkTypeCode, type LinksBatchOperation, NEW_ACTIVITY_DEFAULTS, type OrderRule, type OrderState, type ParsedInput, type
|
|
1200
|
+
export { ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchItem, type ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityCreter, type ActivityId, type ActivityStatus, type ActivityType, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, COLUMN, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, 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 CreationOverrides, type CriticalPathResult, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_TRACK_EVENT, type DateGesture, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ExpectedProgressAdapter, type FilterCriterion, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterOperator, type FilterState, LINK_CODE_TO_TYPE, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchVerdict, type LinkId, type LinkType, type LinkTypeCode, type LinksBatchOperation, NEW_ACTIVITY_DEFAULTS, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistedEntityIdentity, type PipelineColumnName, type PreviewDispatchInfo, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, STATUS, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleEffect, type SectorMetadata, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, type UndoOptions, type ViewStateChange, type ViewStatePropChange, WORK_TIME_DIRECTION, type WithProplannerId, type WorkTimeDirection, checkNoUpdatedLinks, computeExpectedProgress, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
|