@outbuild-company/schedule-core 1.36.0 → 1.38.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/build-fingerprint.json +2 -2
- package/dist/cdn/schedule-core.global.js +1 -1
- package/dist/cdn/schedule-core.global.js.map +1 -1
- package/dist/index.cjs +95 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +117 -59
- package/dist/index.d.ts +117 -59
- package/dist/index.js +93 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8223,25 +8223,39 @@ function getVisibleBaseline(activity) {
|
|
|
8223
8223
|
return points.find((point) => point.isVisibleVersion) ?? null;
|
|
8224
8224
|
}
|
|
8225
8225
|
|
|
8226
|
-
// src/columns/baseline-variance/
|
|
8226
|
+
// src/columns/baseline-variance/baseline-variance-days.ts
|
|
8227
8227
|
var VARIANCE_DECIMAL_SCALE = 100;
|
|
8228
8228
|
var roundToVariancePrecision = (days) => Math.round(days * VARIANCE_DECIMAL_SCALE) / VARIANCE_DECIMAL_SCALE;
|
|
8229
|
-
function
|
|
8230
|
-
|
|
8231
|
-
const
|
|
8232
|
-
if (!
|
|
8233
|
-
|
|
8234
|
-
const
|
|
8229
|
+
function baselineVarianceDays(input) {
|
|
8230
|
+
const { endDate, baselineEnd, calendar, hoursPerDay } = input;
|
|
8231
|
+
const hasUsableHoursPerDay = Number.isFinite(hoursPerDay) && hoursPerDay > 0;
|
|
8232
|
+
if (!hasUsableHoursPerDay) return null;
|
|
8233
|
+
if (!baselineEnd || !endDate) return null;
|
|
8234
|
+
const hasValidDates = Number.isFinite(endDate.getTime()) && Number.isFinite(baselineEnd.getTime());
|
|
8235
|
+
if (!hasValidDates) return null;
|
|
8236
|
+
const finishesLate = endDate.getTime() > baselineEnd.getTime();
|
|
8237
|
+
const finishesEarly = baselineEnd.getTime() > endDate.getTime();
|
|
8235
8238
|
if (!finishesLate && !finishesEarly) return 0;
|
|
8236
|
-
const durationHours =
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
|
|
8240
|
-
});
|
|
8239
|
+
const durationHours = calendar.calculateDuration(
|
|
8240
|
+
finishesLate ? baselineEnd : endDate,
|
|
8241
|
+
finishesLate ? endDate : baselineEnd
|
|
8242
|
+
);
|
|
8241
8243
|
const magnitude = roundToVariancePrecision(durationHours / hoursPerDay);
|
|
8242
8244
|
if (magnitude === 0) return 0;
|
|
8243
8245
|
return finishesLate ? magnitude : -magnitude;
|
|
8244
8246
|
}
|
|
8247
|
+
|
|
8248
|
+
// src/columns/baseline-variance/compute.ts
|
|
8249
|
+
function varianceDaysForBaselineEnd(activity, baselineEnd, calendars, hoursPerDay) {
|
|
8250
|
+
return baselineVarianceDays({
|
|
8251
|
+
endDate: activity.endDate,
|
|
8252
|
+
baselineEnd,
|
|
8253
|
+
calendar: {
|
|
8254
|
+
calculateDuration: (startDate, endDate) => calendars.calculateDuration({ startDate, endDate, task: activity })
|
|
8255
|
+
},
|
|
8256
|
+
hoursPerDay
|
|
8257
|
+
});
|
|
8258
|
+
}
|
|
8245
8259
|
function computeBaselineVarianceDays(activity, calendars, hoursPerDay) {
|
|
8246
8260
|
return varianceDaysForBaselineEnd(
|
|
8247
8261
|
activity,
|
|
@@ -14122,6 +14136,14 @@ var PASTE_PLACEMENT = {
|
|
|
14122
14136
|
END: "end"
|
|
14123
14137
|
};
|
|
14124
14138
|
|
|
14139
|
+
// src/dispatch/confirmations.ts
|
|
14140
|
+
var LOOKAHEAD_CONFIRMATION_KIND = {
|
|
14141
|
+
HAS_LOOKAHEAD_TASKS: "has_lookahead_tasks"
|
|
14142
|
+
};
|
|
14143
|
+
var CUSTOM_ID_CONFIRMATION_KIND = {
|
|
14144
|
+
PASTE_CONFLICTS: "custom_id_paste_conflicts"
|
|
14145
|
+
};
|
|
14146
|
+
|
|
14125
14147
|
// src/activity-copy-paste/paste.ts
|
|
14126
14148
|
function childIdsInCorrelativeOrder(parentId, adapter) {
|
|
14127
14149
|
return collectChildrenSnapshots(parentId, adapter).sort(compareActivitiesInVisualOrder).map((activity) => activity.id);
|
|
@@ -14177,6 +14199,59 @@ var invariantFailure = () => ({
|
|
|
14177
14199
|
ok: false,
|
|
14178
14200
|
reason: REJECTION_REASON.ACTIVITY_PASTE_INVARIANT_FAILED
|
|
14179
14201
|
});
|
|
14202
|
+
function customIdHolders(adapter) {
|
|
14203
|
+
const holders = /* @__PURE__ */ new Map();
|
|
14204
|
+
adapter.forEachActivity((activity, activityId) => {
|
|
14205
|
+
if (activity.customId !== null) {
|
|
14206
|
+
holders.set(activity.customId, String(activityId));
|
|
14207
|
+
}
|
|
14208
|
+
});
|
|
14209
|
+
return holders;
|
|
14210
|
+
}
|
|
14211
|
+
function conflictingCustomIds(clipboard, deps) {
|
|
14212
|
+
const holders = customIdHolders(deps.adapter);
|
|
14213
|
+
const copiedCustomIds = /* @__PURE__ */ new Set();
|
|
14214
|
+
const conflicts = /* @__PURE__ */ new Set();
|
|
14215
|
+
for (const copied of clipboard.activities) {
|
|
14216
|
+
const customId = copied.overrides.customId;
|
|
14217
|
+
if (typeof customId !== "string" || customId.length === 0) continue;
|
|
14218
|
+
const isHeldByAnotherActivity = deps.customIdTracker.isCustomIdInUse(customId) && holders.get(customId) !== String(copied.originalId);
|
|
14219
|
+
if (isHeldByAnotherActivity || copiedCustomIds.has(customId)) {
|
|
14220
|
+
conflicts.add(customId);
|
|
14221
|
+
}
|
|
14222
|
+
copiedCustomIds.add(customId);
|
|
14223
|
+
}
|
|
14224
|
+
return [...conflicts];
|
|
14225
|
+
}
|
|
14226
|
+
function reserveFreeCopiedCustomIds(clipboard, deps) {
|
|
14227
|
+
const reserved = /* @__PURE__ */ new Set();
|
|
14228
|
+
for (const copied of clipboard.activities) {
|
|
14229
|
+
const customId = copied.overrides.customId;
|
|
14230
|
+
const isFreeCopiedCustomId = typeof customId === "string" && customId.length > 0 && !deps.customIdTracker.isCustomIdInUse(customId);
|
|
14231
|
+
if (!isFreeCopiedCustomId) continue;
|
|
14232
|
+
deps.customIdTracker.registerCustomId(customId);
|
|
14233
|
+
reserved.add(customId);
|
|
14234
|
+
}
|
|
14235
|
+
return reserved;
|
|
14236
|
+
}
|
|
14237
|
+
function releaseReservedCustomId(customId, reserved, deps) {
|
|
14238
|
+
if (typeof customId !== "string" || !reserved.has(customId)) return;
|
|
14239
|
+
deps.customIdTracker.releaseCustomId(customId);
|
|
14240
|
+
reserved.delete(customId);
|
|
14241
|
+
}
|
|
14242
|
+
function customIdConflictRejection(clipboard, options, deps) {
|
|
14243
|
+
if (options.regenerateConflictingCustomIds === true) return null;
|
|
14244
|
+
const customIds = conflictingCustomIds(clipboard, deps);
|
|
14245
|
+
if (customIds.length === 0) return null;
|
|
14246
|
+
return {
|
|
14247
|
+
ok: false,
|
|
14248
|
+
reason: REJECTION_REASON.CONFIRMATION_REQUIRED,
|
|
14249
|
+
confirmation: {
|
|
14250
|
+
kind: CUSTOM_ID_CONFIRMATION_KIND.PASTE_CONFLICTS,
|
|
14251
|
+
customIds
|
|
14252
|
+
}
|
|
14253
|
+
};
|
|
14254
|
+
}
|
|
14180
14255
|
async function dispatchActivityPasteCopied(action, options, deps) {
|
|
14181
14256
|
const clipboard = deps.activityClipboard.value;
|
|
14182
14257
|
if (clipboard === null) {
|
|
@@ -14184,6 +14259,8 @@ async function dispatchActivityPasteCopied(action, options, deps) {
|
|
|
14184
14259
|
}
|
|
14185
14260
|
const destination = resolvePasteDestination(action.destination, deps.adapter);
|
|
14186
14261
|
if (!destination.ok) return destination;
|
|
14262
|
+
const conflictRejection = customIdConflictRejection(clipboard, options, deps);
|
|
14263
|
+
if (conflictRejection !== null) return conflictRejection;
|
|
14187
14264
|
const createOptions = createOptionsFor(action.destination, destination);
|
|
14188
14265
|
const beforeSnapshot = await snapshotActivities(
|
|
14189
14266
|
deps.adapter,
|
|
@@ -14193,7 +14270,9 @@ async function dispatchActivityPasteCopied(action, options, deps) {
|
|
|
14193
14270
|
const originalToNew = /* @__PURE__ */ new Map();
|
|
14194
14271
|
const createdIds = [];
|
|
14195
14272
|
let previousRootId;
|
|
14273
|
+
const reservedCustomIds = reserveFreeCopiedCustomIds(clipboard, deps);
|
|
14196
14274
|
for (const copied of clipboard.activities) {
|
|
14275
|
+
releaseReservedCustomId(copied.overrides.customId, reservedCustomIds, deps);
|
|
14197
14276
|
const mappedParent = originalToNew.get(copied.originalParentId);
|
|
14198
14277
|
const afterSiblingId = mappedParent === void 0 ? previousRootId ?? destination.afterSiblingId : void 0;
|
|
14199
14278
|
const beforeSiblingId = mappedParent === void 0 && afterSiblingId === void 0 ? destination.beforeSiblingId : void 0;
|
|
@@ -14286,11 +14365,6 @@ async function dispatchActivityPasteCopied(action, options, deps) {
|
|
|
14286
14365
|
};
|
|
14287
14366
|
}
|
|
14288
14367
|
|
|
14289
|
-
// src/dispatch/confirmations.ts
|
|
14290
|
-
var LOOKAHEAD_CONFIRMATION_KIND = {
|
|
14291
|
-
HAS_LOOKAHEAD_TASKS: "has_lookahead_tasks"
|
|
14292
|
-
};
|
|
14293
|
-
|
|
14294
14368
|
// src/dispatch/shared/hierarchy-cycle-guard.ts
|
|
14295
14369
|
function reparentClosesEffectiveCycle(adapter, reparented) {
|
|
14296
14370
|
return !validateReparenting(adapter, { reparented }).ok;
|
|
@@ -21030,7 +21104,7 @@ var ACTIVITY_COPY_FIELDS = [
|
|
|
21030
21104
|
|
|
21031
21105
|
// src/activity-copy-paste/copy.ts
|
|
21032
21106
|
function copyOverrides(activity) {
|
|
21033
|
-
const overrides = {};
|
|
21107
|
+
const overrides = { customId: activity.customId };
|
|
21034
21108
|
for (const field of ACTIVITY_COPY_FIELDS) {
|
|
21035
21109
|
Object.assign(overrides, { [field]: cloneDomainValue(activity[field]) });
|
|
21036
21110
|
}
|
|
@@ -38113,6 +38187,6 @@ var CREATION_KIND = {
|
|
|
38113
38187
|
ROOT: "root"
|
|
38114
38188
|
};
|
|
38115
38189
|
|
|
38116
|
-
export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, BASELINE_ROLE, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONFIRMATION_KIND, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, 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, P6CapabilityError as DataDateCapabilityError, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, LOOKAHEAD_CONFIRMATION_KIND, LookaheadActualTransitionError, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, PASTE_PLACEMENT, PERSISTENCE_REBASE_CONFLICT_KIND, PERSISTENCE_REBASE_ENTITY, REJECTION_REASON, RESTORABLE_ACTIVITY_FIELDS, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, STRUCTURE_ACTIVITY_FIELDS, ScheduleCore, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, WORK_TIME_DIRECTION, activityBackendRow, allowedSecondaryConstraintTypes, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createCalendarReader, createLookaheadDerivedFields, createOutbuildP6ScheduleSettings as createOutbuildDataDateScheduleSettings, createSchedule, p6InputFromDto as dataDateInputFromDto, decodeWireValue, encodeWireValue, expectedProgressFromBaseline, formatUtcAsP6WallDate, getActiveBaseline, getUnsavedActivities, hostScheduleInput, isRestorableActivityField, isRevertibleActivityField, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, linkBackendRow, loadTimeWork, mapP6ScheduleOptions as mapDataDateScheduleOptions, movedToAnotherUtcDay, normalizeParentKey, parseFromBackend, parseP6DayAsCalendarStart, parseP6WallDateAsUtc, planLookaheadProgressActuals, prepareLookaheadProgressActuals, prepareLookaheadProgressActualsForPersistence, rescheduledOnLoad, resolveExpectedFinishDateSelection, resolveLookaheadActualDateSelection, serializeP6Activity as serializeDataDateActivity, serializeP6Settings as serializeDataDateSettings, serializeP6State as serializeDataDateState, willRunCriticalPath, yieldToBrowser };
|
|
38190
|
+
export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, BASELINE_ROLE, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONFIRMATION_KIND, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, CUSTOM_ID_CONFIRMATION_KIND, 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, P6CapabilityError as DataDateCapabilityError, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, LOOKAHEAD_CONFIRMATION_KIND, LookaheadActualTransitionError, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, PASTE_PLACEMENT, PERSISTENCE_REBASE_CONFLICT_KIND, PERSISTENCE_REBASE_ENTITY, REJECTION_REASON, RESTORABLE_ACTIVITY_FIELDS, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, STRUCTURE_ACTIVITY_FIELDS, ScheduleCore, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, WORK_TIME_DIRECTION, activityBackendRow, allowedSecondaryConstraintTypes, appendGroupRowId, baselineVarianceDays, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createCalendarReader, createLookaheadDerivedFields, createOutbuildP6ScheduleSettings as createOutbuildDataDateScheduleSettings, createSchedule, p6InputFromDto as dataDateInputFromDto, decodeWireValue, encodeWireValue, expectedProgressFromBaseline, formatUtcAsP6WallDate, getActiveBaseline, getUnsavedActivities, getVisibleBaseline, hostScheduleInput, isRestorableActivityField, isRevertibleActivityField, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, linkBackendRow, loadTimeWork, mapP6ScheduleOptions as mapDataDateScheduleOptions, movedToAnotherUtcDay, normalizeParentKey, parseFromBackend, parseP6DayAsCalendarStart, parseP6WallDateAsUtc, planLookaheadProgressActuals, prepareLookaheadProgressActuals, prepareLookaheadProgressActualsForPersistence, rescheduledOnLoad, resolveExpectedFinishDateSelection, resolveLookaheadActualDateSelection, serializeP6Activity as serializeDataDateActivity, serializeP6Settings as serializeDataDateSettings, serializeP6State as serializeDataDateState, willRunCriticalPath, yieldToBrowser };
|
|
38117
38191
|
//# sourceMappingURL=index.js.map
|
|
38118
38192
|
//# sourceMappingURL=index.js.map
|