@ifc-lite/parser 6.4.0 → 6.5.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/relationship-schema-slots.d.ts.map +1 -1
- package/dist/relationship-schema-slots.js +36 -1
- package/dist/relationship-schema-slots.js.map +1 -1
- package/dist/schedule-calendar-types.d.ts +89 -0
- package/dist/schedule-calendar-types.d.ts.map +1 -0
- package/dist/schedule-calendar-types.js +175 -0
- package/dist/schedule-calendar-types.js.map +1 -0
- package/dist/schedule-control-extractor.d.ts +41 -0
- package/dist/schedule-control-extractor.d.ts.map +1 -0
- package/dist/schedule-control-extractor.js +91 -0
- package/dist/schedule-control-extractor.js.map +1 -0
- package/dist/schedule-extractor.d.ts +1 -0
- package/dist/schedule-extractor.d.ts.map +1 -1
- package/dist/schedule-extractor.js +51 -61
- package/dist/schedule-extractor.js.map +1 -1
- package/dist/schedule-serializer-calendar-builders.d.ts +50 -0
- package/dist/schedule-serializer-calendar-builders.d.ts.map +1 -0
- package/dist/schedule-serializer-calendar-builders.js +126 -0
- package/dist/schedule-serializer-calendar-builders.js.map +1 -0
- package/dist/schedule-serializer.d.ts +21 -3
- package/dist/schedule-serializer.d.ts.map +1 -1
- package/dist/schedule-serializer.js +56 -0
- package/dist/schedule-serializer.js.map +1 -1
- package/dist/schedule-types.d.ts +24 -0
- package/dist/schedule-types.d.ts.map +1 -1
- package/dist/schedule-types.js.map +1 -1
- package/package.json +4 -4
|
@@ -4,23 +4,27 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Schedule (4D) extractor — walks IfcTask, IfcTaskTime, IfcRelSequence,
|
|
6
6
|
* IfcRelAssignsToProcess, IfcRelAssignsToControl, IfcRelNests, IfcWorkSchedule,
|
|
7
|
-
* IfcWorkPlan, IfcLagTime entities in a parsed IfcDataStore
|
|
8
|
-
* normalized ScheduleExtraction that the viewer can drive a
|
|
9
|
-
* animation from.
|
|
7
|
+
* IfcWorkPlan, IfcWorkCalendar, IfcLagTime entities in a parsed IfcDataStore
|
|
8
|
+
* and assembles a normalized ScheduleExtraction that the viewer can drive a
|
|
9
|
+
* Gantt/4D animation from.
|
|
10
10
|
*
|
|
11
11
|
* Handles IFC4 / IFC4X3. IFC2X3 has a different IfcTask layout (no TaskTime
|
|
12
|
-
* attribute, ScheduleStart/ScheduleFinish/TaskOwner instead) and
|
|
13
|
-
*
|
|
12
|
+
* attribute, ScheduleStart/ScheduleFinish/TaskOwner instead) and a different,
|
|
13
|
+
* older IfcWorkCalendar layout; both are out of scope and best-effort
|
|
14
|
+
* degrade (task metadata without dates; calendars simply aren't extracted).
|
|
14
15
|
*
|
|
15
16
|
* STEP attribute-index layouts, the record types themselves, and the small
|
|
16
|
-
* pure/single-entity helpers
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* records together via their IFC relationships)
|
|
17
|
+
* pure/single-entity helpers live in `schedule-types.ts` (tasks/schedules)
|
|
18
|
+
* and `schedule-calendar-types.ts` (calendars) — this file owns only the
|
|
19
|
+
* cross-entity orchestration (the multi-pass walk below that wires those
|
|
20
|
+
* records together via their IFC relationships); the calendar-assignment
|
|
21
|
+
* half of that walk is in `schedule-control-extractor.ts`, split out
|
|
22
|
+
* purely to keep this file under the ~400-line module-size guideline.
|
|
20
23
|
*/
|
|
21
24
|
import { EntityExtractor } from './entity-extractor.js';
|
|
22
25
|
import { parseIso8601Duration } from './iso8601-duration.js';
|
|
23
|
-
import { TASK_ATTR, TASK_ATTR_2X3, REL_SEQUENCE_ATTR, REL_ASSIGNS_TO_PROCESS_ATTR, REL_ASSIGNS_TO_CONTROL_ATTR, REL_NESTS_ATTR,
|
|
26
|
+
import { TASK_ATTR, TASK_ATTR_2X3, REL_SEQUENCE_ATTR, REL_ASSIGNS_TO_PROCESS_ATTR, REL_ASSIGNS_TO_CONTROL_ATTR, REL_NESTS_ATTR, asString, asNumber, asBoolean, asEnum, asRef, asRefList, sequenceTypeFromString, extractTaskTime, extractLagTimeSeconds, } from './schedule-types.js';
|
|
27
|
+
import { extractWorkScheduleInfo, extractWorkCalendars, tryAssignCalendar, } from './schedule-control-extractor.js';
|
|
24
28
|
// Re-exported for backward compatibility — this is where consumers
|
|
25
29
|
// (including this package's own public surface, see index.ts) have always
|
|
26
30
|
// imported it from. The implementation itself now lives in
|
|
@@ -37,7 +41,7 @@ export { parseIso8601Duration };
|
|
|
37
41
|
*/
|
|
38
42
|
export function extractScheduleOnDemand(store) {
|
|
39
43
|
if (!store.source?.length) {
|
|
40
|
-
return { workSchedules: [], tasks: [], sequences: [], hasSchedule: false };
|
|
44
|
+
return { workSchedules: [], tasks: [], sequences: [], workCalendars: [], hasSchedule: false };
|
|
41
45
|
}
|
|
42
46
|
const byType = store.entityIndex.byType;
|
|
43
47
|
const taskIds = byType.get('IFCTASK') ?? [];
|
|
@@ -47,13 +51,18 @@ export function extractScheduleOnDemand(store) {
|
|
|
47
51
|
const relAssignsProcessIds = byType.get('IFCRELASSIGNSTOPROCESS') ?? [];
|
|
48
52
|
const relAssignsControlIds = byType.get('IFCRELASSIGNSTOCONTROL') ?? [];
|
|
49
53
|
const relNestsIds = byType.get('IFCRELNESTS') ?? [];
|
|
54
|
+
const workCalendarIds = byType.get('IFCWORKCALENDAR') ?? [];
|
|
55
|
+
// A calendar-only file (no tasks/schedules/sequences yet) still counts as
|
|
56
|
+
// real 4D data worth surfacing, so it flips `hasAny`/`hasSchedule` exactly
|
|
57
|
+
// like the other schedule entity types.
|
|
50
58
|
const hasAny = taskIds.length +
|
|
51
59
|
workScheduleIds.length +
|
|
52
60
|
workPlanIds.length +
|
|
53
|
-
relSeqIds.length
|
|
61
|
+
relSeqIds.length +
|
|
62
|
+
workCalendarIds.length >
|
|
54
63
|
0;
|
|
55
64
|
if (!hasAny) {
|
|
56
|
-
return { workSchedules: [], tasks: [], sequences: [], hasSchedule: false };
|
|
65
|
+
return { workSchedules: [], tasks: [], sequences: [], workCalendars: [], hasSchedule: false };
|
|
57
66
|
}
|
|
58
67
|
const extractor = new EntityExtractor(store.source);
|
|
59
68
|
const schemaIs2x3 = store.schemaVersion === 'IFC2X3';
|
|
@@ -181,53 +190,21 @@ export function extractScheduleOnDemand(store) {
|
|
|
181
190
|
globalIdByExpressId.set(productId, gid);
|
|
182
191
|
}
|
|
183
192
|
}
|
|
184
|
-
// Pass 4: extract work schedules / work plans.
|
|
193
|
+
// Pass 4: extract work schedules / work plans. The per-entity decode
|
|
194
|
+
// lives in `schedule-control-extractor.ts` alongside the calendar one.
|
|
185
195
|
const workSchedules = [];
|
|
186
196
|
const scheduleByExpressId = new Map();
|
|
187
|
-
const
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (!entity)
|
|
193
|
-
return null;
|
|
194
|
-
const a = entity.attributes || [];
|
|
195
|
-
const layout = kind === 'WorkPlan' ? WORK_PLAN_ATTR : WORK_SCHEDULE_ATTR;
|
|
196
|
-
const globalId = asString(a[layout.GlobalId]) ?? '';
|
|
197
|
-
const info = {
|
|
198
|
-
expressId,
|
|
199
|
-
kind,
|
|
200
|
-
globalId,
|
|
201
|
-
name: asString(a[layout.Name]) ?? kind,
|
|
202
|
-
description: asString(a[layout.Description]),
|
|
203
|
-
identification: asString(a[layout.Identification]),
|
|
204
|
-
creationDate: asString(a[layout.CreationDate]),
|
|
205
|
-
purpose: asString(a[layout.Purpose]),
|
|
206
|
-
duration: asString(a[layout.Duration]),
|
|
207
|
-
startTime: asString(a[layout.StartTime]),
|
|
208
|
-
finishTime: asString(a[layout.FinishTime]),
|
|
209
|
-
predefinedType: asEnum(a[layout.PredefinedType]),
|
|
210
|
-
taskGlobalIds: [],
|
|
211
|
-
childScheduleGlobalIds: [],
|
|
212
|
-
};
|
|
213
|
-
if (globalId)
|
|
214
|
-
globalIdByExpressId.set(expressId, globalId);
|
|
215
|
-
return info;
|
|
216
|
-
};
|
|
217
|
-
for (const id of workScheduleIds) {
|
|
218
|
-
const info = extractSchedule(id, 'WorkSchedule');
|
|
219
|
-
if (info) {
|
|
220
|
-
workSchedules.push(info);
|
|
221
|
-
scheduleByExpressId.set(id, info);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
for (const id of workPlanIds) {
|
|
225
|
-
const info = extractSchedule(id, 'WorkPlan');
|
|
226
|
-
if (info) {
|
|
197
|
+
const collectSchedules = (ids, kind) => {
|
|
198
|
+
for (const id of ids) {
|
|
199
|
+
const info = extractWorkScheduleInfo(extractor, store, id, kind, globalIdByExpressId);
|
|
200
|
+
if (!info)
|
|
201
|
+
continue;
|
|
227
202
|
workSchedules.push(info);
|
|
228
203
|
scheduleByExpressId.set(id, info);
|
|
229
204
|
}
|
|
230
|
-
}
|
|
205
|
+
};
|
|
206
|
+
collectSchedules(workScheduleIds, 'WorkSchedule');
|
|
207
|
+
collectSchedules(workPlanIds, 'WorkPlan');
|
|
231
208
|
// Pass 4b: walk IfcRelNests again — IfcWorkPlan nesting IfcWorkSchedule.
|
|
232
209
|
// Real-world files use IfcRelNests for this grouping (confirmed against the
|
|
233
210
|
// buildingSMART IFC4 spec's own reference example), distinct from Pass 2's
|
|
@@ -270,17 +247,26 @@ export function extractScheduleOnDemand(store) {
|
|
|
270
247
|
}
|
|
271
248
|
}
|
|
272
249
|
}
|
|
273
|
-
// Pass
|
|
250
|
+
// Pass 4c: extract IfcWorkCalendar entities. Collection + the
|
|
251
|
+
// calendar-assignment branch of Pass 5 live in
|
|
252
|
+
// `schedule-control-extractor.ts` — split out purely for module size.
|
|
253
|
+
const { workCalendars, calendarByExpressId } = extractWorkCalendars(extractor, store, schemaIs2x3 ? [] : workCalendarIds);
|
|
254
|
+
// Pass 5: IfcRelAssignsToControl — map schedules to tasks, (a second,
|
|
274
255
|
// distinct grouping path from Pass 4b's IfcRelNests) IfcWorkPlan grouping
|
|
275
|
-
// IfcWorkSchedule
|
|
276
|
-
// (`assignSchedulesToWorkPlan`
|
|
277
|
-
// emits exactly this relation —
|
|
278
|
-
// the
|
|
279
|
-
//
|
|
256
|
+
// IfcWorkSchedule, and (via `tryAssignCalendar`) calendar assignment to
|
|
257
|
+
// tasks/schedules. The SDK's scripting bridge (`assignSchedulesToWorkPlan`
|
|
258
|
+
// in packages/create/src/ifc-creator.ts) emits exactly this relation —
|
|
259
|
+
// RelatingControl the plan, RelatedObjects the schedules — not
|
|
260
|
+
// IfcRelNests, so a plan grouped through that bridge must resolve here
|
|
261
|
+
// too or the SDK-authored grouping never reads back.
|
|
280
262
|
// If a source file expresses the same WorkPlan->WorkSchedule pair through
|
|
281
263
|
// *both* relations, Pass 4b (IfcRelNests) runs first and wins:
|
|
282
264
|
// `parentPlanGlobalId` is set-once (guarded below and in Pass 4b), and
|
|
283
265
|
// `childScheduleGlobalIds` is deduped so the pair is not double-counted.
|
|
266
|
+
// `tryAssignCalendar` only ever touches `calendarGlobalIds`, so a task
|
|
267
|
+
// carrying both a controlling schedule and a calendar (via two separate
|
|
268
|
+
// relation instances) gets both fields populated without either clobbering
|
|
269
|
+
// the other.
|
|
284
270
|
for (const relId of relAssignsControlIds) {
|
|
285
271
|
const ref = store.entityIndex.byId.get(relId);
|
|
286
272
|
if (!ref)
|
|
@@ -293,6 +279,9 @@ export function extractScheduleOnDemand(store) {
|
|
|
293
279
|
const objects = asRefList(a[REL_ASSIGNS_TO_CONTROL_ATTR.RelatedObjects]);
|
|
294
280
|
if (controlId === undefined)
|
|
295
281
|
continue;
|
|
282
|
+
if (tryAssignCalendar(controlId, objects, calendarByExpressId, taskByExpressId, scheduleByExpressId)) {
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
296
285
|
const schedule = scheduleByExpressId.get(controlId);
|
|
297
286
|
if (!schedule)
|
|
298
287
|
continue;
|
|
@@ -361,6 +350,7 @@ export function extractScheduleOnDemand(store) {
|
|
|
361
350
|
workSchedules,
|
|
362
351
|
tasks: Array.from(taskByExpressId.values()),
|
|
363
352
|
sequences,
|
|
353
|
+
workCalendars,
|
|
364
354
|
hasSchedule: true,
|
|
365
355
|
};
|
|
366
356
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-extractor.js","sourceRoot":"","sources":["../src/schedule-extractor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,KAAK,EACL,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAW7B,mEAAmE;AACnE,0EAA0E;AAC1E,2DAA2D;AAC3D,0DAA0D;AAC1D,4EAA4E;AAC5E,wBAAwB;AACxB,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAehC;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAmB;IACzD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAEpD,MAAM,MAAM,GACV,OAAO,CAAC,MAAM;QACZ,eAAe,CAAC,MAAM;QACtB,WAAW,CAAC,MAAM;QAClB,SAAS,CAAC,MAAM;QAClB,CAAC,CAAC;IAEJ,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC;IAErD,mDAAmD;IACnD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD,wCAAwC;IACxC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAElC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAqB;gBAC7B,SAAS;gBACT,QAAQ;gBACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;gBAC3C,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACnD,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjD,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACjD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACzC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjD,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK;gBAC7D,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC7C,cAAc,EAAE,EAAE;gBAClB,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;gBACpB,4BAA4B,EAAE,EAAE;aACjC,CAAC;YACF,IAAI,QAAQ;gBAAE,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3D,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,GAAqB;gBAC7B,SAAS;gBACT,QAAQ;gBACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;gBACvC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC/C,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC7C,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBACrD,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBACvD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACrC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC7C,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK;gBACzD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACzC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBACnD,QAAQ,EAAE,UAAU,KAAK,SAAS;oBAChC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC;oBAC/C,CAAC,CAAC,SAAS;gBACb,cAAc,EAAE,EAAE;gBAClB,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;gBACpB,4BAA4B,EAAE,EAAE;aACjC,CAAC;YACF,IAAI,QAAQ;gBAAE,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3D,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU;YAAE,SAAS,CAAC,4JAA4J;QACvL,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,sEAAsE;YACtE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5D,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBAC9B,SAAS,CAAC,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,8DAA8D;IAC9D,mEAAmE;IACnE,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,kDAAkD;IAClD,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1E,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;YACjC,qEAAqE;YACrE,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;YAClE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI,GAAG;gBAAE,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEhE,MAAM,eAAe,GAAG,CACtB,SAAiB,EACjB,IAAiC,EACR,EAAE;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,GAAqB;YAC7B,SAAS;YACT,IAAI;YACJ,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI;YACtC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAChD,aAAa,EAAE,EAAE;YACjB,sBAAsB,EAAE,EAAE;SAC3B,CAAC;QACF,IAAI,QAAQ;YAAE,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,2EAA2E;IAC3E,oEAAoE;IACpE,gEAAgE;IAChE,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS,CAAC,uBAAuB;QACpF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YACtE,6DAA6D;YAC7D,sEAAsE;YACtE,+DAA+D;YAC/D,qEAAqE;YACrE,sEAAsE;YACtE,gEAAgE;YAChE,gEAAgE;YAChE,sEAAsE;YACtE,4DAA4D;YAC5D,MAAM,cAAc,GAAG,CAAC,UAAU,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;gBACtC,aAAa,CAAC,kBAAkB,GAAG,UAAU,CAAC,QAAQ,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,8CAA8C;IAC9C,sEAAsE;IACtE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,0EAA0E;IAC1E,+DAA+D;IAC/D,uEAAuE;IACvE,yEAAyE;IACzE,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC;QACzE,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,EAAE,CAAC;gBACT,kEAAkE;gBAClE,oEAAoE;gBACpE,iEAAiE;gBACjE,kEAAkE;gBAClE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpD,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC5D,CAAC;gBACD,SAAS;YACX,CAAC;YACD,2DAA2D;YAC3D,kEAAkE;YAClE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC3C,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YACtE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;gBACtC,aAAa,CAAC,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,SAAS;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,GAC1D,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;YAChD,CAAC,CAAC,EAAE,CAAC;QACT,SAAS,CAAC,IAAI,CAAC;YACb,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;YACvD,oBAAoB,EAAE,QAAQ,CAAC,QAAQ;YACvC,mBAAmB,EAAE,OAAO,CAAC,QAAQ;YACrC,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/E,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;YAC/E,cAAc;YACd,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,aAAa;QACb,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3C,SAAS;QACT,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"schedule-extractor.js","sourceRoot":"","sources":["../src/schedule-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STEP-line builders for the calendar half of `schedule-serializer.ts` —
|
|
3
|
+
* IfcWorkCalendar and the IfcWorkTime / IfcRecurrencePattern / IfcTimePeriod
|
|
4
|
+
* entities its WorkingTimes/ExceptionTimes lists reference. Sibling of
|
|
5
|
+
* `schedule-serializer-builders.ts` (tasks/schedules), split the same way
|
|
6
|
+
* the read side splits `schedule-calendar-types.ts` from
|
|
7
|
+
* `schedule-types.ts`: one concern per file, and both stay under the
|
|
8
|
+
* ~400-line module-size guideline.
|
|
9
|
+
*
|
|
10
|
+
* IfcWorkCalendar does NOT share `buildWorkControl`'s line shape despite
|
|
11
|
+
* both extending IfcControl — IfcWorkSchedule/IfcWorkPlan go through
|
|
12
|
+
* IfcWorkControl (CreationDate..FinishTime), IfcWorkCalendar does not, so
|
|
13
|
+
* everything from attribute index 6 on differs and a shared builder would
|
|
14
|
+
* be a branch on entity type wrapping two disjoint tails.
|
|
15
|
+
*/
|
|
16
|
+
import type { WorkCalendarInfo, WorkTimeInfo } from './schedule-calendar-types.js';
|
|
17
|
+
/** An IfcWorkTime line plus the ids of the nested entities emitted for it. */
|
|
18
|
+
export interface BuiltWorkTime {
|
|
19
|
+
lines: string[];
|
|
20
|
+
/** Express id of the emitted IFCWORKTIME. */
|
|
21
|
+
workTimeId: number;
|
|
22
|
+
/** First free express id after everything this call emitted. */
|
|
23
|
+
nextId: number;
|
|
24
|
+
/** How many IFCRECURRENCEPATTERN entities were emitted (0 or 1). */
|
|
25
|
+
recurrencePatterns: number;
|
|
26
|
+
/** How many IFCTIMEPERIOD entities were emitted. */
|
|
27
|
+
timePeriods: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Emit one IfcWorkTime, preceded by its IfcRecurrencePattern (and that
|
|
31
|
+
* pattern's IfcTimePeriod entities) when the record carries one. A
|
|
32
|
+
* WorkTimeInfo with no `recurrencePattern` emits `$` for that attribute and
|
|
33
|
+
* no extra entities.
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildWorkTime(startId: number, wt: WorkTimeInfo): BuiltWorkTime;
|
|
36
|
+
export interface BuiltWorkCalendar {
|
|
37
|
+
lines: string[];
|
|
38
|
+
calendarId: number;
|
|
39
|
+
nextId: number;
|
|
40
|
+
workTimes: number;
|
|
41
|
+
recurrencePatterns: number;
|
|
42
|
+
timePeriods: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Emit an IfcWorkCalendar and every IfcWorkTime (plus nested
|
|
46
|
+
* IfcRecurrencePattern / IfcTimePeriod) in its WorkingTimes and
|
|
47
|
+
* ExceptionTimes lists.
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildWorkCalendar(startId: number, cal: WorkCalendarInfo, owner: string): BuiltWorkCalendar;
|
|
50
|
+
//# sourceMappingURL=schedule-serializer-calendar-builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-serializer-calendar-builders.d.ts","sourceRoot":"","sources":["../src/schedule-serializer-calendar-builders.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAyB,MAAM,8BAA8B,CAAC;AAG1G,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAoDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,aAAa,CA2B9E;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,MAAM,GACZ,iBAAiB,CA0CnB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { escStr, optStr, optEnum, ensureGlobalId, refList } from './schedule-serializer-builders.js';
|
|
5
|
+
function buildTimePeriod(id, start, end) {
|
|
6
|
+
// IFC4: StartTime, EndTime (both IfcTime).
|
|
7
|
+
return `#${id}=IFCTIMEPERIOD('${escStr(start)}','${escStr(end)}');`;
|
|
8
|
+
}
|
|
9
|
+
/** Integer list attribute (`DayComponent` et al.) — `$` when empty, matching `refList`'s convention for an absent optional aggregate. */
|
|
10
|
+
function intList(values) {
|
|
11
|
+
return values.length === 0 ? '$' : `(${values.map(v => Math.trunc(v)).join(',')})`;
|
|
12
|
+
}
|
|
13
|
+
function optInt(v) {
|
|
14
|
+
return v === undefined || !Number.isFinite(v) ? '$' : String(Math.trunc(v));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Emit an IfcRecurrencePattern and any IfcTimePeriod entities it references.
|
|
18
|
+
* The nested entities are emitted first only for human readability — STEP
|
|
19
|
+
* itself allows forward `#N` references, and the rest of this serializer
|
|
20
|
+
* already relies on that ordering convention (`buildTaskTime` is emitted
|
|
21
|
+
* before its owning task for the same reason).
|
|
22
|
+
*/
|
|
23
|
+
function buildRecurrencePattern(startId, pattern) {
|
|
24
|
+
let nextId = startId;
|
|
25
|
+
const lines = [];
|
|
26
|
+
const timePeriodIds = [];
|
|
27
|
+
for (const tp of pattern.timePeriods) {
|
|
28
|
+
const id = nextId++;
|
|
29
|
+
lines.push(buildTimePeriod(id, tp.start, tp.end));
|
|
30
|
+
timePeriodIds.push(id);
|
|
31
|
+
}
|
|
32
|
+
const patternId = nextId++;
|
|
33
|
+
// IFC4: RecurrenceType, DayComponent, WeekdayComponent, MonthComponent,
|
|
34
|
+
// Position, Interval, Occurrences, TimePeriods
|
|
35
|
+
lines.push([
|
|
36
|
+
`#${patternId}=IFCRECURRENCEPATTERN(`,
|
|
37
|
+
`${optEnum(pattern.recurrenceType)},`,
|
|
38
|
+
`${intList(pattern.dayComponent)},`,
|
|
39
|
+
`${intList(pattern.weekdayComponent)},`,
|
|
40
|
+
`${intList(pattern.monthComponent)},`,
|
|
41
|
+
`${optInt(pattern.position)},`,
|
|
42
|
+
`${optInt(pattern.interval)},`,
|
|
43
|
+
`${optInt(pattern.occurrences)},`,
|
|
44
|
+
`${refList(timePeriodIds)});`,
|
|
45
|
+
].join(''));
|
|
46
|
+
return { lines, patternId, nextId, timePeriods: timePeriodIds.length };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Emit one IfcWorkTime, preceded by its IfcRecurrencePattern (and that
|
|
50
|
+
* pattern's IfcTimePeriod entities) when the record carries one. A
|
|
51
|
+
* WorkTimeInfo with no `recurrencePattern` emits `$` for that attribute and
|
|
52
|
+
* no extra entities.
|
|
53
|
+
*/
|
|
54
|
+
export function buildWorkTime(startId, wt) {
|
|
55
|
+
let nextId = startId;
|
|
56
|
+
const lines = [];
|
|
57
|
+
let recurrenceRef = '$';
|
|
58
|
+
let recurrencePatterns = 0;
|
|
59
|
+
let timePeriods = 0;
|
|
60
|
+
if (wt.recurrencePattern) {
|
|
61
|
+
const built = buildRecurrencePattern(nextId, wt.recurrencePattern);
|
|
62
|
+
lines.push(...built.lines);
|
|
63
|
+
nextId = built.nextId;
|
|
64
|
+
recurrenceRef = `#${built.patternId}`;
|
|
65
|
+
recurrencePatterns = 1;
|
|
66
|
+
timePeriods = built.timePeriods;
|
|
67
|
+
}
|
|
68
|
+
const workTimeId = nextId++;
|
|
69
|
+
// IFC4 IfcWorkTime (IfcSchedulingTime: Name, DataOrigin,
|
|
70
|
+
// UserDefinedDataOrigin) + RecurrencePattern, Start, Finish.
|
|
71
|
+
lines.push([
|
|
72
|
+
`#${workTimeId}=IFCWORKTIME(`,
|
|
73
|
+
`${optStr(wt.name)},`,
|
|
74
|
+
`${optEnum(wt.dataOrigin)},`,
|
|
75
|
+
`${optStr(wt.userDefinedDataOrigin)},`,
|
|
76
|
+
`${recurrenceRef},`,
|
|
77
|
+
`${optStr(wt.start)},`,
|
|
78
|
+
`${optStr(wt.finish)});`,
|
|
79
|
+
].join(''));
|
|
80
|
+
return { lines, workTimeId, nextId, recurrencePatterns, timePeriods };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Emit an IfcWorkCalendar and every IfcWorkTime (plus nested
|
|
84
|
+
* IfcRecurrencePattern / IfcTimePeriod) in its WorkingTimes and
|
|
85
|
+
* ExceptionTimes lists.
|
|
86
|
+
*/
|
|
87
|
+
export function buildWorkCalendar(startId, cal, owner) {
|
|
88
|
+
let nextId = startId;
|
|
89
|
+
const lines = [];
|
|
90
|
+
let workTimes = 0;
|
|
91
|
+
let recurrencePatterns = 0;
|
|
92
|
+
let timePeriods = 0;
|
|
93
|
+
const emitTimes = (times) => {
|
|
94
|
+
const ids = [];
|
|
95
|
+
for (const wt of times) {
|
|
96
|
+
const built = buildWorkTime(nextId, wt);
|
|
97
|
+
lines.push(...built.lines);
|
|
98
|
+
nextId = built.nextId;
|
|
99
|
+
ids.push(built.workTimeId);
|
|
100
|
+
workTimes += 1;
|
|
101
|
+
recurrencePatterns += built.recurrencePatterns;
|
|
102
|
+
timePeriods += built.timePeriods;
|
|
103
|
+
}
|
|
104
|
+
return ids;
|
|
105
|
+
};
|
|
106
|
+
const workingIds = emitTimes(cal.workingTimes);
|
|
107
|
+
const exceptionIds = emitTimes(cal.exceptionTimes);
|
|
108
|
+
const calendarId = nextId++;
|
|
109
|
+
const globalId = ensureGlobalId(cal.globalId, `calendar|${cal.name}`);
|
|
110
|
+
// IFC4: GlobalId, OwnerHistory, Name, Description, ObjectType,
|
|
111
|
+
// Identification, WorkingTimes, ExceptionTimes, PredefinedType
|
|
112
|
+
lines.push([
|
|
113
|
+
`#${calendarId}=IFCWORKCALENDAR(`,
|
|
114
|
+
`'${globalId}',`,
|
|
115
|
+
`${owner},`,
|
|
116
|
+
`${optStr(cal.name)},`,
|
|
117
|
+
`${optStr(cal.description)},`,
|
|
118
|
+
`${optStr(cal.objectType)},`,
|
|
119
|
+
`${optStr(cal.identification)},`,
|
|
120
|
+
`${refList(workingIds)},`,
|
|
121
|
+
`${refList(exceptionIds)},`,
|
|
122
|
+
`${optEnum(cal.predefinedType)});`,
|
|
123
|
+
].join(''));
|
|
124
|
+
return { lines, calendarId, nextId, workTimes, recurrencePatterns, timePeriods };
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=schedule-serializer-calendar-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-serializer-calendar-builders.js","sourceRoot":"","sources":["../src/schedule-serializer-calendar-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
* • a reference to the supplied `ownerHistoryId` for IfcRoot ownership
|
|
13
13
|
* (pass `undefined` to emit `$`),
|
|
14
14
|
* • IFC4-correct attribute counts and ordering — IfcWorkSchedule,
|
|
15
|
-
* IfcTask + IfcTaskTime,
|
|
16
|
-
*
|
|
15
|
+
* IfcTask + IfcTaskTime, IfcWorkCalendar + IfcWorkTime +
|
|
16
|
+
* IfcRecurrencePattern + IfcTimePeriod, IfcRelSequence + IfcLagTime,
|
|
17
|
+
* and the IfcRelAssignsToControl / IfcRelAssignsToProcess /
|
|
18
|
+
* IfcRelNests edges.
|
|
17
19
|
*
|
|
18
20
|
* The function is pure — it doesn't mutate the input and never touches the
|
|
19
21
|
* STEP source buffer. Re-running it with the same inputs produces the same
|
|
@@ -22,7 +24,9 @@
|
|
|
22
24
|
*
|
|
23
25
|
* The low-level STEP string encoding and the per-entity line builders
|
|
24
26
|
* (`buildWorkControl`, `buildTaskTime`, `buildTask`, …) live in
|
|
25
|
-
* `schedule-serializer-builders.ts
|
|
27
|
+
* `schedule-serializer-builders.ts`, with the calendar-side builders
|
|
28
|
+
* (`buildWorkCalendar`, `buildWorkTime`) in
|
|
29
|
+
* `schedule-serializer-calendar-builders.ts` — this file owns only the orchestration:
|
|
26
30
|
* which entities and relationships to emit, in what order, and how their
|
|
27
31
|
* express IDs cross-reference each other.
|
|
28
32
|
*/
|
|
@@ -57,6 +61,20 @@ export interface SerializeScheduleResult {
|
|
|
57
61
|
assignsToControl: number;
|
|
58
62
|
assignsToProcess: number;
|
|
59
63
|
relNests: number;
|
|
64
|
+
/** IfcWorkCalendar entities emitted. */
|
|
65
|
+
workCalendars: number;
|
|
66
|
+
/** IfcWorkTime entities emitted across every calendar's working + exception lists. */
|
|
67
|
+
workTimes: number;
|
|
68
|
+
/** IfcRecurrencePattern entities emitted (one per IfcWorkTime that carried a pattern). */
|
|
69
|
+
recurrencePatterns: number;
|
|
70
|
+
/** IfcTimePeriod entities emitted from those patterns' TimePeriods lists. */
|
|
71
|
+
timePeriods: number;
|
|
72
|
+
/**
|
|
73
|
+
* IfcRelAssignsToControl edges whose RelatingControl is a calendar.
|
|
74
|
+
* Counted separately from `assignsToControl` (schedule -> tasks) so a
|
|
75
|
+
* caller can tell the two relationship kinds apart in a preview.
|
|
76
|
+
*/
|
|
77
|
+
calendarAssignments: number;
|
|
60
78
|
};
|
|
61
79
|
}
|
|
62
80
|
export declare function serializeScheduleToStep(data: ScheduleExtraction, options: SerializeScheduleOptions): SerializeScheduleResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-serializer.d.ts","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"schedule-serializer.d.ts","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,yBAAyB,CAAC;AAkBxF,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC3E;AAED,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,wCAAwC;QACxC,aAAa,EAAE,MAAM,CAAC;QACtB,sFAAsF;QACtF,SAAS,EAAE,MAAM,CAAC;QAClB,0FAA0F;QAC1F,kBAAkB,EAAE,MAAM,CAAC;QAC3B,6EAA6E;QAC7E,WAAW,EAAE,MAAM,CAAC;QACpB;;;;WAIG;QACH,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAMD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CA+MzB"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { secondsToIso8601Duration } from './iso8601-duration.js';
|
|
5
5
|
import { deterministicGlobalId } from './deterministic-global-id.js';
|
|
6
6
|
import { escStr, optStr, optEnum, ownerRef, refList, ensureGlobalId, buildWorkControl, taskHasTimeData, buildTaskTime, buildTask, resolveProductIds, } from './schedule-serializer-builders.js';
|
|
7
|
+
import { buildWorkCalendar } from './schedule-serializer-calendar-builders.js';
|
|
7
8
|
// ─────────────────────────────────────────────────────────────────────────
|
|
8
9
|
// Public — serializeScheduleToStep
|
|
9
10
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -20,11 +21,18 @@ export function serializeScheduleToStep(data, options) {
|
|
|
20
21
|
assignsToControl: 0,
|
|
21
22
|
assignsToProcess: 0,
|
|
22
23
|
relNests: 0,
|
|
24
|
+
workCalendars: 0,
|
|
25
|
+
workTimes: 0,
|
|
26
|
+
recurrencePatterns: 0,
|
|
27
|
+
timePeriods: 0,
|
|
28
|
+
calendarAssignments: 0,
|
|
23
29
|
};
|
|
24
30
|
/** ScheduleTaskInfo.globalId → fresh express ID we just allocated. */
|
|
25
31
|
const taskExpressIdByGlobalId = new Map();
|
|
26
32
|
/** WorkScheduleInfo.globalId → fresh express ID we just allocated. */
|
|
27
33
|
const scheduleExpressIdByGlobalId = new Map();
|
|
34
|
+
/** WorkCalendarInfo.globalId → fresh express ID we just allocated. */
|
|
35
|
+
const calendarExpressIdByGlobalId = new Map();
|
|
28
36
|
// ── 1. Work schedules / work plans ────────────────────────────────
|
|
29
37
|
for (const ws of data.workSchedules) {
|
|
30
38
|
const id = nextId++;
|
|
@@ -32,6 +40,21 @@ export function serializeScheduleToStep(data, options) {
|
|
|
32
40
|
lines.push(buildWorkControl(id, ws, owner));
|
|
33
41
|
stats.workSchedules += 1;
|
|
34
42
|
}
|
|
43
|
+
// ── 1b. Work calendars (+ their IfcWorkTime / IfcRecurrencePattern /
|
|
44
|
+
// IfcTimePeriod entities) ────────────────────────────────────
|
|
45
|
+
// Emitted before the tasks that reference them only for readability; the
|
|
46
|
+
// IfcRelAssignsToControl edges in section 3b below are what actually bind
|
|
47
|
+
// them, and STEP permits forward references either way.
|
|
48
|
+
for (const cal of data.workCalendars ?? []) {
|
|
49
|
+
const built = buildWorkCalendar(nextId, cal, owner);
|
|
50
|
+
lines.push(...built.lines);
|
|
51
|
+
nextId = built.nextId;
|
|
52
|
+
calendarExpressIdByGlobalId.set(cal.globalId, built.calendarId);
|
|
53
|
+
stats.workCalendars += 1;
|
|
54
|
+
stats.workTimes += built.workTimes;
|
|
55
|
+
stats.recurrencePatterns += built.recurrencePatterns;
|
|
56
|
+
stats.timePeriods += built.timePeriods;
|
|
57
|
+
}
|
|
35
58
|
// ── 2. Task times + tasks ─────────────────────────────────────────
|
|
36
59
|
for (const task of data.tasks) {
|
|
37
60
|
let taskTimeId;
|
|
@@ -63,6 +86,39 @@ export function serializeScheduleToStep(data, options) {
|
|
|
63
86
|
lines.push(`#${relId}=IFCRELASSIGNSTOCONTROL('${relGid}',${owner},$,$,${refList(taskIds)},$,#${controlId});`);
|
|
64
87
|
stats.assignsToControl += 1;
|
|
65
88
|
}
|
|
89
|
+
// ── 3b. Calendar → tasks / schedules (IfcRelAssignsToControl) ─────
|
|
90
|
+
// Mirrors section 3 above — same relation, RelatingControl an
|
|
91
|
+
// IfcWorkCalendar instead of an IfcWorkSchedule. One relation per
|
|
92
|
+
// calendar, its RelatedObjects the union of every task and schedule that
|
|
93
|
+
// named this calendar, which is what the extractor reads back: a task
|
|
94
|
+
// assigned to both a schedule and a calendar sees two separate relation
|
|
95
|
+
// instances and populates both fields.
|
|
96
|
+
for (const cal of data.workCalendars ?? []) {
|
|
97
|
+
const controlId = calendarExpressIdByGlobalId.get(cal.globalId);
|
|
98
|
+
if (controlId === undefined)
|
|
99
|
+
continue;
|
|
100
|
+
const relatedIds = [];
|
|
101
|
+
for (const task of data.tasks) {
|
|
102
|
+
if (!task.calendarGlobalIds?.includes(cal.globalId))
|
|
103
|
+
continue;
|
|
104
|
+
const tid = taskExpressIdByGlobalId.get(task.globalId);
|
|
105
|
+
if (tid !== undefined)
|
|
106
|
+
relatedIds.push(tid);
|
|
107
|
+
}
|
|
108
|
+
for (const ws of data.workSchedules) {
|
|
109
|
+
if (!ws.calendarGlobalIds?.includes(cal.globalId))
|
|
110
|
+
continue;
|
|
111
|
+
const sid = scheduleExpressIdByGlobalId.get(ws.globalId);
|
|
112
|
+
if (sid !== undefined)
|
|
113
|
+
relatedIds.push(sid);
|
|
114
|
+
}
|
|
115
|
+
if (relatedIds.length === 0)
|
|
116
|
+
continue;
|
|
117
|
+
const relId = nextId++;
|
|
118
|
+
const relGid = deterministicGlobalId(`rel-calendar|${cal.globalId}`);
|
|
119
|
+
lines.push(`#${relId}=IFCRELASSIGNSTOCONTROL('${relGid}',${owner},$,$,${refList(relatedIds)},$,#${controlId});`);
|
|
120
|
+
stats.calendarAssignments += 1;
|
|
121
|
+
}
|
|
66
122
|
// ── 4. Task hierarchy (IfcRelNests) ──────────────────────────────
|
|
67
123
|
for (const parent of data.tasks) {
|
|
68
124
|
if (parent.childGlobalIds.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-serializer.js","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"schedule-serializer.js","sourceRoot":"","sources":["../src/schedule-serializer.ts"],"names":[],"mappings":"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"}
|