@ifc-lite/parser 5.1.0 → 6.1.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/classification-resolver.d.ts.map +1 -1
- package/dist/classification-resolver.js +35 -10
- package/dist/classification-resolver.js.map +1 -1
- package/dist/columnar-entity-preparation.d.ts +25 -0
- package/dist/columnar-entity-preparation.d.ts.map +1 -0
- package/dist/columnar-entity-preparation.js +282 -0
- package/dist/columnar-entity-preparation.js.map +1 -0
- package/dist/columnar-parser-indexes.d.ts +17 -1
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js +31 -21
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser-root-attributes.d.ts +66 -0
- package/dist/columnar-parser-root-attributes.d.ts.map +1 -0
- package/dist/columnar-parser-root-attributes.js +245 -0
- package/dist/columnar-parser-root-attributes.js.map +1 -0
- package/dist/columnar-parser.d.ts +26 -63
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +384 -751
- package/dist/columnar-parser.js.map +1 -1
- package/dist/compact-entity-index-columns.d.ts +17 -0
- package/dist/compact-entity-index-columns.d.ts.map +1 -0
- package/dist/compact-entity-index-columns.js +15 -0
- package/dist/compact-entity-index-columns.js.map +1 -0
- package/dist/compact-entity-index-transport.d.ts +2 -12
- package/dist/compact-entity-index-transport.d.ts.map +1 -1
- package/dist/compact-entity-index-transport.js +1 -11
- package/dist/compact-entity-index-transport.js.map +1 -1
- package/dist/compact-entity-index.d.ts +6 -0
- package/dist/compact-entity-index.d.ts.map +1 -1
- package/dist/compact-entity-index.js +12 -20
- package/dist/compact-entity-index.js.map +1 -1
- package/dist/cost-extractor.d.ts +10 -0
- package/dist/cost-extractor.d.ts.map +1 -0
- package/dist/cost-extractor.js +369 -0
- package/dist/cost-extractor.js.map +1 -0
- package/dist/cost-schedule-2x3.d.ts +31 -0
- package/dist/cost-schedule-2x3.d.ts.map +1 -0
- package/dist/cost-schedule-2x3.js +75 -0
- package/dist/cost-schedule-2x3.js.map +1 -0
- package/dist/cost-types.d.ts +105 -0
- package/dist/cost-types.d.ts.map +1 -0
- package/dist/cost-types.js +5 -0
- package/dist/cost-types.js.map +1 -0
- package/dist/data-store-transport.d.ts +3 -2
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +10 -34
- package/dist/data-store-transport.js.map +1 -1
- package/dist/drop-census.d.ts +136 -0
- package/dist/drop-census.d.ts.map +1 -0
- package/dist/drop-census.js +53 -0
- package/dist/drop-census.js.map +1 -0
- package/dist/entity-refs-from-index.d.ts +10 -0
- package/dist/entity-refs-from-index.d.ts.map +1 -1
- package/dist/entity-refs-from-index.js +52 -36
- package/dist/entity-refs-from-index.js.map +1 -1
- package/dist/entity-scanner.d.ts +5 -0
- package/dist/entity-scanner.d.ts.map +1 -1
- package/dist/entity-scanner.js +30 -12
- package/dist/entity-scanner.js.map +1 -1
- package/dist/entity-type-byte-interner.d.ts +12 -0
- package/dist/entity-type-byte-interner.d.ts.map +1 -0
- package/dist/entity-type-byte-interner.js +66 -0
- package/dist/entity-type-byte-interner.js.map +1 -0
- package/dist/generated/ifc2x3/schema-registry.d.ts +50 -0
- package/dist/generated/ifc2x3/schema-registry.d.ts.map +1 -0
- package/dist/generated/ifc2x3/schema-registry.js +50052 -0
- package/dist/generated/ifc2x3/schema-registry.js.map +1 -0
- package/dist/generated/ifc4x3/schema-registry.d.ts +50 -0
- package/dist/generated/ifc4x3/schema-registry.d.ts.map +1 -0
- package/dist/generated/ifc4x3/schema-registry.js +71299 -0
- package/dist/generated/ifc4x3/schema-registry.js.map +1 -0
- package/dist/generated/schema-registry-by-version.d.ts +61 -0
- package/dist/generated/schema-registry-by-version.d.ts.map +1 -0
- package/dist/generated/schema-registry-by-version.js +86 -0
- package/dist/generated/schema-registry-by-version.js.map +1 -0
- package/dist/group-assignment-factor.d.ts +13 -0
- package/dist/group-assignment-factor.d.ts.map +1 -0
- package/dist/group-assignment-factor.js +30 -0
- package/dist/group-assignment-factor.js.map +1 -0
- package/dist/ifczip.d.ts +6 -0
- package/dist/ifczip.d.ts.map +1 -1
- package/dist/ifczip.js +20 -11
- package/dist/ifczip.js.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +1 -0
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +2 -1
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/parser.worker.d.ts +6 -3
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js +24 -12
- package/dist/parser.worker.js.map +1 -1
- package/dist/prepass-source-fingerprint.d.ts +3 -0
- package/dist/prepass-source-fingerprint.d.ts.map +1 -0
- package/dist/prepass-source-fingerprint.js +13 -0
- package/dist/prepass-source-fingerprint.js.map +1 -0
- package/dist/property-value-parser.d.ts +10 -0
- package/dist/property-value-parser.d.ts.map +1 -1
- package/dist/property-value-parser.js +40 -1
- package/dist/property-value-parser.js.map +1 -1
- package/dist/scan-entities-balanced.d.ts.map +1 -1
- package/dist/scan-entities-balanced.js +8 -6
- package/dist/scan-entities-balanced.js.map +1 -1
- package/dist/scan-worker-lexing.d.ts +14 -0
- package/dist/scan-worker-lexing.d.ts.map +1 -0
- package/dist/scan-worker-lexing.js +101 -0
- package/dist/scan-worker-lexing.js.map +1 -0
- package/dist/scan-worker-source.d.ts +1 -1
- package/dist/scan-worker-source.d.ts.map +1 -1
- package/dist/scan-worker-source.js +61 -59
- package/dist/scan-worker-source.js.map +1 -1
- package/dist/schedule-extractor.d.ts +2 -80
- package/dist/schedule-extractor.d.ts.map +1 -1
- package/dist/schedule-extractor.js +100 -225
- package/dist/schedule-extractor.js.map +1 -1
- package/dist/schedule-serializer-builders.d.ts +28 -0
- package/dist/schedule-serializer-builders.d.ts.map +1 -0
- package/dist/schedule-serializer-builders.js +163 -0
- package/dist/schedule-serializer-builders.js.map +1 -0
- package/dist/schedule-serializer.d.ts +6 -0
- package/dist/schedule-serializer.d.ts.map +1 -1
- package/dist/schedule-serializer.js +26 -165
- package/dist/schedule-serializer.js.map +1 -1
- package/dist/schedule-types.d.ts +211 -0
- package/dist/schedule-types.d.ts.map +1 -0
- package/dist/schedule-types.js +221 -0
- package/dist/schedule-types.js.map +1 -0
- package/dist/select-entity-columns.d.ts +7 -0
- package/dist/select-entity-columns.d.ts.map +1 -0
- package/dist/select-entity-columns.js +43 -0
- package/dist/select-entity-columns.js.map +1 -0
- package/dist/spatial-hierarchy-ambiguity.d.ts +39 -0
- package/dist/spatial-hierarchy-ambiguity.d.ts.map +1 -0
- package/dist/spatial-hierarchy-ambiguity.js +25 -0
- package/dist/spatial-hierarchy-ambiguity.js.map +1 -0
- package/dist/spatial-hierarchy-attributes.d.ts +54 -0
- package/dist/spatial-hierarchy-attributes.d.ts.map +1 -0
- package/dist/spatial-hierarchy-attributes.js +145 -0
- package/dist/spatial-hierarchy-attributes.js.map +1 -0
- package/dist/spatial-hierarchy-builder.d.ts +6 -38
- package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
- package/dist/spatial-hierarchy-builder.js +48 -166
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/dist/spatial-hierarchy-canonical-parent.d.ts +86 -0
- package/dist/spatial-hierarchy-canonical-parent.d.ts.map +1 -0
- package/dist/spatial-hierarchy-canonical-parent.js +212 -0
- package/dist/spatial-hierarchy-canonical-parent.js.map +1 -0
- package/dist/step-lexing.d.ts +1 -1
- package/dist/step-lexing.d.ts.map +1 -1
- package/dist/step-lexing.js +1 -56
- package/dist/step-lexing.js.map +1 -1
- package/dist/step-record-boundary.d.ts +28 -0
- package/dist/step-record-boundary.d.ts.map +1 -0
- package/dist/step-record-boundary.js +108 -0
- package/dist/step-record-boundary.js.map +1 -0
- package/dist/step-record-boundary.vectors.d.ts +58 -0
- package/dist/step-record-boundary.vectors.d.ts.map +1 -0
- package/dist/step-record-boundary.vectors.js +80 -0
- package/dist/step-record-boundary.vectors.js.map +1 -0
- package/dist/structural-extractor.d.ts +9 -0
- package/dist/structural-extractor.d.ts.map +1 -0
- package/dist/structural-extractor.js +310 -0
- package/dist/structural-extractor.js.map +1 -0
- package/dist/structural-load-extractor.d.ts +147 -0
- package/dist/structural-load-extractor.d.ts.map +1 -0
- package/dist/structural-load-extractor.js +178 -0
- package/dist/structural-load-extractor.js.map +1 -0
- package/dist/structural-step-values.d.ts +51 -0
- package/dist/structural-step-values.d.ts.map +1 -0
- package/dist/structural-step-values.js +109 -0
- package/dist/structural-step-values.js.map +1 -0
- package/dist/structural-types.d.ts +145 -0
- package/dist/structural-types.d.ts.map +1 -0
- package/dist/structural-types.js +5 -0
- package/dist/structural-types.js.map +1 -0
- package/dist/tokenizer.d.ts +11 -5
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +75 -21
- package/dist/tokenizer.js.map +1 -1
- package/dist/wasm-init-retry.d.ts +6 -42
- package/dist/wasm-init-retry.d.ts.map +1 -1
- package/dist/wasm-init-retry.js +6 -99
- package/dist/wasm-init-retry.js.map +1 -1
- package/dist/wasm-panic-forward.d.ts +7 -63
- package/dist/wasm-panic-forward.d.ts.map +1 -1
- package/dist/wasm-panic-forward.js +7 -100
- package/dist/wasm-panic-forward.js.map +1 -1
- package/dist/worker-index-publication.d.ts +43 -0
- package/dist/worker-index-publication.d.ts.map +1 -0
- package/dist/worker-index-publication.js +129 -0
- package/dist/worker-index-publication.js.map +1 -0
- package/dist/worker-parser.d.ts +5 -2
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +22 -10
- package/dist/worker-parser.js.map +1 -1
- package/package.json +5 -4
|
@@ -2,17 +2,25 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
/**
|
|
5
|
-
* Schedule (4D) extractor —
|
|
5
|
+
* Schedule (4D) extractor — walks IfcTask, IfcTaskTime, IfcRelSequence,
|
|
6
6
|
* IfcRelAssignsToProcess, IfcRelAssignsToControl, IfcRelNests, IfcWorkSchedule,
|
|
7
|
-
* IfcWorkPlan, IfcLagTime
|
|
8
|
-
* ScheduleExtraction that the viewer can drive a Gantt/4D
|
|
7
|
+
* IfcWorkPlan, IfcLagTime entities in a parsed IfcDataStore and assembles a
|
|
8
|
+
* normalized ScheduleExtraction that the viewer can drive a Gantt/4D
|
|
9
|
+
* animation from.
|
|
9
10
|
*
|
|
10
11
|
* Handles IFC4 / IFC4X3. IFC2X3 has a different IfcTask layout (no TaskTime
|
|
11
12
|
* attribute, ScheduleStart/ScheduleFinish/TaskOwner instead) and is supported
|
|
12
13
|
* with best-effort degradation.
|
|
14
|
+
*
|
|
15
|
+
* STEP attribute-index layouts, the record types themselves, and the small
|
|
16
|
+
* pure/single-entity helpers (`asString` et al., `extractTaskTime`,
|
|
17
|
+
* `extractLagTimeSeconds`) live in `schedule-types.ts` — this file owns only
|
|
18
|
+
* the cross-entity orchestration (the multi-pass walk below that wires those
|
|
19
|
+
* records together via their IFC relationships).
|
|
13
20
|
*/
|
|
14
21
|
import { EntityExtractor } from './entity-extractor.js';
|
|
15
22
|
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, WORK_SCHEDULE_ATTR, WORK_PLAN_ATTR, asString, asNumber, asBoolean, asEnum, asRef, asRefList, sequenceTypeFromString, extractTaskTime, extractLagTimeSeconds, } from './schedule-types.js';
|
|
16
24
|
// Re-exported for backward compatibility — this is where consumers
|
|
17
25
|
// (including this package's own public surface, see index.ts) have always
|
|
18
26
|
// imported it from. The implementation itself now lives in
|
|
@@ -20,222 +28,6 @@ import { parseIso8601Duration } from './iso8601-duration.js';
|
|
|
20
28
|
// `secondsToIso8601Duration`, so the round-trip property between the two is
|
|
21
29
|
// visible in one place.
|
|
22
30
|
export { parseIso8601Duration };
|
|
23
|
-
/** IFC4 STEP attribute indices for IfcTask. */
|
|
24
|
-
const TASK_ATTR = {
|
|
25
|
-
GlobalId: 0,
|
|
26
|
-
Name: 2,
|
|
27
|
-
Description: 3,
|
|
28
|
-
ObjectType: 4,
|
|
29
|
-
Identification: 5,
|
|
30
|
-
LongDescription: 6,
|
|
31
|
-
Status: 7,
|
|
32
|
-
WorkMethod: 8,
|
|
33
|
-
IsMilestone: 9,
|
|
34
|
-
Priority: 10,
|
|
35
|
-
TaskTime: 11,
|
|
36
|
-
PredefinedType: 12,
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* IFC2X3 IfcTask layout — the attributes IfcTask itself adds over IfcObject
|
|
40
|
-
* (TaskId, Status, WorkMethod, IsMilestone, Priority). IFC2X3 schedule times
|
|
41
|
-
* live on `IfcScheduleTimeControl` and link to IfcTask via `IfcRelAssignsTasks`
|
|
42
|
-
* — we don't resolve those here yet; best-effort 2x3 models only surface task
|
|
43
|
-
* metadata without dates.
|
|
44
|
-
*/
|
|
45
|
-
const TASK_ATTR_2X3 = {
|
|
46
|
-
GlobalId: 0,
|
|
47
|
-
Name: 2,
|
|
48
|
-
Description: 3,
|
|
49
|
-
ObjectType: 4,
|
|
50
|
-
TaskId: 5,
|
|
51
|
-
Status: 6,
|
|
52
|
-
WorkMethod: 7,
|
|
53
|
-
IsMilestone: 8,
|
|
54
|
-
Priority: 9,
|
|
55
|
-
};
|
|
56
|
-
const TASK_TIME_ATTR = {
|
|
57
|
-
Name: 0,
|
|
58
|
-
DurationType: 3,
|
|
59
|
-
ScheduleDuration: 4,
|
|
60
|
-
ScheduleStart: 5,
|
|
61
|
-
ScheduleFinish: 6,
|
|
62
|
-
EarlyStart: 7,
|
|
63
|
-
EarlyFinish: 8,
|
|
64
|
-
LateStart: 9,
|
|
65
|
-
LateFinish: 10,
|
|
66
|
-
FreeFloat: 11,
|
|
67
|
-
TotalFloat: 12,
|
|
68
|
-
IsCritical: 13,
|
|
69
|
-
StatusTime: 14,
|
|
70
|
-
ActualDuration: 15,
|
|
71
|
-
ActualStart: 16,
|
|
72
|
-
ActualFinish: 17,
|
|
73
|
-
RemainingTime: 18,
|
|
74
|
-
Completion: 19,
|
|
75
|
-
};
|
|
76
|
-
const REL_SEQUENCE_ATTR = {
|
|
77
|
-
GlobalId: 0,
|
|
78
|
-
RelatingProcess: 4,
|
|
79
|
-
RelatedProcess: 5,
|
|
80
|
-
TimeLag: 6,
|
|
81
|
-
SequenceType: 7,
|
|
82
|
-
UserDefinedSequenceType: 8,
|
|
83
|
-
};
|
|
84
|
-
const REL_ASSIGNS_TO_PROCESS_ATTR = {
|
|
85
|
-
RelatedObjects: 4,
|
|
86
|
-
RelatingProcess: 6,
|
|
87
|
-
};
|
|
88
|
-
const REL_ASSIGNS_TO_CONTROL_ATTR = {
|
|
89
|
-
RelatedObjects: 4,
|
|
90
|
-
RelatingControl: 6,
|
|
91
|
-
};
|
|
92
|
-
const REL_NESTS_ATTR = {
|
|
93
|
-
RelatingObject: 4,
|
|
94
|
-
RelatedObjects: 5,
|
|
95
|
-
};
|
|
96
|
-
const WORK_SCHEDULE_ATTR = {
|
|
97
|
-
GlobalId: 0,
|
|
98
|
-
Name: 2,
|
|
99
|
-
Description: 3,
|
|
100
|
-
ObjectType: 4,
|
|
101
|
-
Identification: 5,
|
|
102
|
-
CreationDate: 6,
|
|
103
|
-
Purpose: 8,
|
|
104
|
-
Duration: 9,
|
|
105
|
-
TotalFloat: 10,
|
|
106
|
-
StartTime: 11,
|
|
107
|
-
FinishTime: 12,
|
|
108
|
-
PredefinedType: 13,
|
|
109
|
-
};
|
|
110
|
-
const WORK_PLAN_ATTR = WORK_SCHEDULE_ATTR;
|
|
111
|
-
const LAG_TIME_ATTR = {
|
|
112
|
-
LagValue: 3,
|
|
113
|
-
DurationType: 4,
|
|
114
|
-
};
|
|
115
|
-
function asString(v) {
|
|
116
|
-
if (typeof v === 'string' && v.length > 0)
|
|
117
|
-
return v;
|
|
118
|
-
return undefined;
|
|
119
|
-
}
|
|
120
|
-
function asNumber(v) {
|
|
121
|
-
if (typeof v === 'number' && Number.isFinite(v))
|
|
122
|
-
return v;
|
|
123
|
-
return undefined;
|
|
124
|
-
}
|
|
125
|
-
function asBoolean(v) {
|
|
126
|
-
if (typeof v === 'boolean')
|
|
127
|
-
return v;
|
|
128
|
-
// STEP booleans are typically stored as '.T.' / '.F.' after parsing
|
|
129
|
-
if (typeof v === 'string') {
|
|
130
|
-
if (v === '.T.' || v === 'T')
|
|
131
|
-
return true;
|
|
132
|
-
if (v === '.F.' || v === 'F')
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
return undefined;
|
|
136
|
-
}
|
|
137
|
-
function asEnum(v) {
|
|
138
|
-
if (typeof v !== 'string' || v.length === 0)
|
|
139
|
-
return undefined;
|
|
140
|
-
// STEP enum looks like .PLANNED.
|
|
141
|
-
const match = v.match(/^\.([A-Z_]+)\.$/);
|
|
142
|
-
return match ? match[1] : undefined;
|
|
143
|
-
}
|
|
144
|
-
function asRef(v) {
|
|
145
|
-
if (typeof v === 'number' && Number.isInteger(v) && v > 0)
|
|
146
|
-
return v;
|
|
147
|
-
return undefined;
|
|
148
|
-
}
|
|
149
|
-
function asRefList(v) {
|
|
150
|
-
if (!Array.isArray(v))
|
|
151
|
-
return [];
|
|
152
|
-
const out = [];
|
|
153
|
-
for (const x of v) {
|
|
154
|
-
const id = asRef(x);
|
|
155
|
-
if (id !== undefined)
|
|
156
|
-
out.push(id);
|
|
157
|
-
}
|
|
158
|
-
return out;
|
|
159
|
-
}
|
|
160
|
-
function sequenceTypeFromString(s) {
|
|
161
|
-
switch (s) {
|
|
162
|
-
case 'START_START':
|
|
163
|
-
case 'START_FINISH':
|
|
164
|
-
case 'FINISH_START':
|
|
165
|
-
case 'FINISH_FINISH':
|
|
166
|
-
case 'USERDEFINED':
|
|
167
|
-
case 'NOTDEFINED':
|
|
168
|
-
return s;
|
|
169
|
-
default:
|
|
170
|
-
return 'FINISH_START';
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
function durationTypeFromString(s) {
|
|
174
|
-
switch (s) {
|
|
175
|
-
case 'WORKTIME':
|
|
176
|
-
case 'ELAPSEDTIME':
|
|
177
|
-
case 'NOTDEFINED':
|
|
178
|
-
return s;
|
|
179
|
-
default:
|
|
180
|
-
return undefined;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
function extractTaskTime(extractor, store, taskTimeId) {
|
|
184
|
-
const ref = store.entityIndex.byId.get(taskTimeId);
|
|
185
|
-
if (!ref)
|
|
186
|
-
return undefined;
|
|
187
|
-
const entity = extractor.extractEntity(ref);
|
|
188
|
-
if (!entity)
|
|
189
|
-
return undefined;
|
|
190
|
-
const t = entity.type.toUpperCase();
|
|
191
|
-
if (t !== 'IFCTASKTIME' && t !== 'IFCTASKTIMERECURRING')
|
|
192
|
-
return undefined;
|
|
193
|
-
const a = entity.attributes || [];
|
|
194
|
-
return {
|
|
195
|
-
durationType: durationTypeFromString(asEnum(a[TASK_TIME_ATTR.DurationType])),
|
|
196
|
-
scheduleDuration: asString(a[TASK_TIME_ATTR.ScheduleDuration]),
|
|
197
|
-
scheduleStart: asString(a[TASK_TIME_ATTR.ScheduleStart]),
|
|
198
|
-
scheduleFinish: asString(a[TASK_TIME_ATTR.ScheduleFinish]),
|
|
199
|
-
earlyStart: asString(a[TASK_TIME_ATTR.EarlyStart]),
|
|
200
|
-
earlyFinish: asString(a[TASK_TIME_ATTR.EarlyFinish]),
|
|
201
|
-
lateStart: asString(a[TASK_TIME_ATTR.LateStart]),
|
|
202
|
-
lateFinish: asString(a[TASK_TIME_ATTR.LateFinish]),
|
|
203
|
-
freeFloat: asString(a[TASK_TIME_ATTR.FreeFloat]),
|
|
204
|
-
totalFloat: asString(a[TASK_TIME_ATTR.TotalFloat]),
|
|
205
|
-
isCritical: asBoolean(a[TASK_TIME_ATTR.IsCritical]),
|
|
206
|
-
statusTime: asString(a[TASK_TIME_ATTR.StatusTime]),
|
|
207
|
-
actualDuration: asString(a[TASK_TIME_ATTR.ActualDuration]),
|
|
208
|
-
actualStart: asString(a[TASK_TIME_ATTR.ActualStart]),
|
|
209
|
-
actualFinish: asString(a[TASK_TIME_ATTR.ActualFinish]),
|
|
210
|
-
remainingTime: asString(a[TASK_TIME_ATTR.RemainingTime]),
|
|
211
|
-
completion: asNumber(a[TASK_TIME_ATTR.Completion]),
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
function extractLagTimeSeconds(extractor, store, lagId) {
|
|
215
|
-
const ref = store.entityIndex.byId.get(lagId);
|
|
216
|
-
if (!ref)
|
|
217
|
-
return {};
|
|
218
|
-
const entity = extractor.extractEntity(ref);
|
|
219
|
-
if (!entity)
|
|
220
|
-
return {};
|
|
221
|
-
if (entity.type.toUpperCase() !== 'IFCLAGTIME')
|
|
222
|
-
return {};
|
|
223
|
-
const a = entity.attributes || [];
|
|
224
|
-
const lagValue = a[LAG_TIME_ATTR.LagValue];
|
|
225
|
-
// lagValue is an IfcTimeOrRatioSelect — either a typed wrapper like
|
|
226
|
-
// ['IFCDURATION', 'P1D'] or a direct ratio number.
|
|
227
|
-
if (Array.isArray(lagValue) && lagValue.length === 2) {
|
|
228
|
-
const typeName = String(lagValue[0]).toUpperCase();
|
|
229
|
-
const inner = lagValue[1];
|
|
230
|
-
if (typeName === 'IFCDURATION' && typeof inner === 'string') {
|
|
231
|
-
return { seconds: parseIso8601Duration(inner), duration: inner };
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
else if (typeof lagValue === 'string') {
|
|
235
|
-
return { seconds: parseIso8601Duration(lagValue), duration: lagValue };
|
|
236
|
-
}
|
|
237
|
-
return {};
|
|
238
|
-
}
|
|
239
31
|
/**
|
|
240
32
|
* Extract all scheduling data from a parsed IFC store.
|
|
241
33
|
*
|
|
@@ -344,18 +136,27 @@ export function extractScheduleOnDemand(store) {
|
|
|
344
136
|
continue;
|
|
345
137
|
const parentTask = taskByExpressId.get(parent);
|
|
346
138
|
if (!parentTask)
|
|
347
|
-
continue; //
|
|
139
|
+
continue; // parent isn't a task — task/subtask nesting only; IfcWorkPlan -> IfcWorkSchedule nesting is handled in a separate pass below, once schedules are extracted
|
|
348
140
|
for (const childId of children) {
|
|
349
141
|
const childTask = taskByExpressId.get(childId);
|
|
350
142
|
if (!childTask)
|
|
351
143
|
continue;
|
|
352
|
-
|
|
144
|
+
// A source file may repeat the relation; guard as Pass 4b/5 do below.
|
|
145
|
+
if (!parentTask.childGlobalIds.includes(childTask.globalId)) {
|
|
146
|
+
parentTask.childGlobalIds.push(childTask.globalId);
|
|
147
|
+
}
|
|
353
148
|
if (!childTask.parentGlobalId) {
|
|
354
149
|
childTask.parentGlobalId = parentTask.globalId;
|
|
355
150
|
}
|
|
356
151
|
}
|
|
357
152
|
}
|
|
358
153
|
// Pass 3: resolve IfcRelAssignsToProcess — products assigned to tasks.
|
|
154
|
+
// NOT deduped, deliberately: IfcRelAssignsToProcess carries a
|
|
155
|
+
// QuantityInProcess attribute (not extracted here, but real in the
|
|
156
|
+
// schema), so the same product can legitimately repeat across relations
|
|
157
|
+
// to the same task as separate quantity assignments. Unlike the identity
|
|
158
|
+
// lists elsewhere in this file, this pair is a multiset — dedup would
|
|
159
|
+
// silently drop a legitimate repeated assignment.
|
|
359
160
|
for (const relId of relAssignsProcessIds) {
|
|
360
161
|
const ref = store.entityIndex.byId.get(relId);
|
|
361
162
|
if (!ref)
|
|
@@ -407,6 +208,7 @@ export function extractScheduleOnDemand(store) {
|
|
|
407
208
|
finishTime: asString(a[layout.FinishTime]),
|
|
408
209
|
predefinedType: asEnum(a[layout.PredefinedType]),
|
|
409
210
|
taskGlobalIds: [],
|
|
211
|
+
childScheduleGlobalIds: [],
|
|
410
212
|
};
|
|
411
213
|
if (globalId)
|
|
412
214
|
globalIdByExpressId.set(expressId, globalId);
|
|
@@ -426,7 +228,59 @@ export function extractScheduleOnDemand(store) {
|
|
|
426
228
|
scheduleByExpressId.set(id, info);
|
|
427
229
|
}
|
|
428
230
|
}
|
|
429
|
-
// Pass
|
|
231
|
+
// Pass 4b: walk IfcRelNests again — IfcWorkPlan nesting IfcWorkSchedule.
|
|
232
|
+
// Real-world files use IfcRelNests for this grouping (confirmed against the
|
|
233
|
+
// buildingSMART IFC4 spec's own reference example), distinct from Pass 2's
|
|
234
|
+
// task/subtask hierarchy above, which only resolves parents through
|
|
235
|
+
// taskByExpressId and silently skips a WorkPlan RelatingObject.
|
|
236
|
+
for (const relId of relNestsIds) {
|
|
237
|
+
const ref = store.entityIndex.byId.get(relId);
|
|
238
|
+
if (!ref)
|
|
239
|
+
continue;
|
|
240
|
+
const entity = extractor.extractEntity(ref);
|
|
241
|
+
if (!entity)
|
|
242
|
+
continue;
|
|
243
|
+
const a = entity.attributes || [];
|
|
244
|
+
const parent = asRef(a[REL_NESTS_ATTR.RelatingObject]);
|
|
245
|
+
const children = asRefList(a[REL_NESTS_ATTR.RelatedObjects]);
|
|
246
|
+
if (parent === undefined)
|
|
247
|
+
continue;
|
|
248
|
+
const parentPlan = scheduleByExpressId.get(parent);
|
|
249
|
+
if (!parentPlan || parentPlan.kind !== 'WorkPlan')
|
|
250
|
+
continue; // not a work-plan nest
|
|
251
|
+
for (const childId of children) {
|
|
252
|
+
const childSchedule = scheduleByExpressId.get(childId);
|
|
253
|
+
if (!childSchedule || childSchedule.kind !== 'WorkSchedule')
|
|
254
|
+
continue;
|
|
255
|
+
// This extractor is the sole producer of `parentPlan`: every
|
|
256
|
+
// WorkScheduleInfo it builds above sets `childScheduleGlobalIds: []`,
|
|
257
|
+
// so the field is never actually absent here. `??=` makes that
|
|
258
|
+
// invariant visible to the checker without a non-null assertion, and
|
|
259
|
+
// without treating "absent" any differently from "empty" — both still
|
|
260
|
+
// mean "no nested schedules yet" everywhere else that reads it.
|
|
261
|
+
// Two distinct IfcRelNests entities can nest the same WorkPlan/
|
|
262
|
+
// WorkSchedule pair (a source file may repeat the relation), so guard
|
|
263
|
+
// the push the same way Pass 5 below guards its own append.
|
|
264
|
+
const childGlobalIds = (parentPlan.childScheduleGlobalIds ??= []);
|
|
265
|
+
if (!childGlobalIds.includes(childSchedule.globalId)) {
|
|
266
|
+
childGlobalIds.push(childSchedule.globalId);
|
|
267
|
+
}
|
|
268
|
+
if (!childSchedule.parentPlanGlobalId) {
|
|
269
|
+
childSchedule.parentPlanGlobalId = parentPlan.globalId;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Pass 5: IfcRelAssignsToControl — map schedules to tasks, and (a second,
|
|
274
|
+
// distinct grouping path from Pass 4b's IfcRelNests) IfcWorkPlan grouping
|
|
275
|
+
// IfcWorkSchedule. The SDK's scripting bridge
|
|
276
|
+
// (`assignSchedulesToWorkPlan` in packages/create/src/ifc-creator.ts)
|
|
277
|
+
// emits exactly this relation — RelatingControl the plan, RelatedObjects
|
|
278
|
+
// the schedules — not IfcRelNests, so a plan grouped through that bridge
|
|
279
|
+
// must resolve here too or the SDK-authored grouping never reads back.
|
|
280
|
+
// If a source file expresses the same WorkPlan->WorkSchedule pair through
|
|
281
|
+
// *both* relations, Pass 4b (IfcRelNests) runs first and wins:
|
|
282
|
+
// `parentPlanGlobalId` is set-once (guarded below and in Pass 4b), and
|
|
283
|
+
// `childScheduleGlobalIds` is deduped so the pair is not double-counted.
|
|
430
284
|
for (const relId of relAssignsControlIds) {
|
|
431
285
|
const ref = store.entityIndex.byId.get(relId);
|
|
432
286
|
if (!ref)
|
|
@@ -444,10 +298,31 @@ export function extractScheduleOnDemand(store) {
|
|
|
444
298
|
continue;
|
|
445
299
|
for (const objId of objects) {
|
|
446
300
|
const task = taskByExpressId.get(objId);
|
|
447
|
-
if (
|
|
301
|
+
if (task) {
|
|
302
|
+
// A source file may repeat the relation; guard both paired arrays
|
|
303
|
+
// on one predicate to keep them in lockstep. IfcRelAssignsToControl
|
|
304
|
+
// carries no quantity attribute, so this pair is a pure identity
|
|
305
|
+
// edge, unlike Pass 3's productExpressIds/productGlobalIds above.
|
|
306
|
+
if (!schedule.taskGlobalIds.includes(task.globalId)) {
|
|
307
|
+
schedule.taskGlobalIds.push(task.globalId);
|
|
308
|
+
task.controllingScheduleGlobalIds.push(schedule.globalId);
|
|
309
|
+
}
|
|
448
310
|
continue;
|
|
449
|
-
|
|
450
|
-
task
|
|
311
|
+
}
|
|
312
|
+
// Not a task — check whether this is a WorkPlan grouping a
|
|
313
|
+
// WorkSchedule via IfcRelAssignsToControl instead of IfcRelNests.
|
|
314
|
+
if (schedule.kind !== 'WorkPlan')
|
|
315
|
+
continue;
|
|
316
|
+
const childSchedule = scheduleByExpressId.get(objId);
|
|
317
|
+
if (!childSchedule || childSchedule.kind !== 'WorkSchedule')
|
|
318
|
+
continue;
|
|
319
|
+
const siblings = (schedule.childScheduleGlobalIds ??= []);
|
|
320
|
+
if (!siblings.includes(childSchedule.globalId)) {
|
|
321
|
+
siblings.push(childSchedule.globalId);
|
|
322
|
+
}
|
|
323
|
+
if (!childSchedule.parentPlanGlobalId) {
|
|
324
|
+
childSchedule.parentPlanGlobalId = schedule.globalId;
|
|
325
|
+
}
|
|
451
326
|
}
|
|
452
327
|
}
|
|
453
328
|
// Pass 6: IfcRelSequence — dependency edges between tasks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-extractor.js","sourceRoot":"","sources":["../src/schedule-extractor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schedule-extractor.js","sourceRoot":"","sources":["../src/schedule-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STEP-line builders for `schedule-serializer.ts` — the low-level string
|
|
3
|
+
* encoding helpers (`escStr`, `optStr`, `optEnum`, `optBool`, `optReal`,
|
|
4
|
+
* `ownerRef`, `refList`, `ensureGlobalId`) and the per-entity builders that
|
|
5
|
+
* turn one `WorkScheduleInfo` / `ScheduleTaskInfo` record into its
|
|
6
|
+
* `#N=IFC...(...);` line (`buildWorkControl`, `buildTaskTime`, `buildTask`,
|
|
7
|
+
* plus the small predicates/resolvers those two lean on).
|
|
8
|
+
*
|
|
9
|
+
* `schedule-serializer.ts` owns the orchestration — which entities to emit,
|
|
10
|
+
* in what order, and how their cross-references (`IFCRELNESTS`,
|
|
11
|
+
* `IFCRELASSIGNSTOCONTROL`, `IFCRELASSIGNSTOPROCESS`, `IFCRELSEQUENCE`) wire
|
|
12
|
+
* together — and calls into this module for "how does one entity's own
|
|
13
|
+
* attribute line get written". Same split as `schedule-types.ts` on the
|
|
14
|
+
* read side: single-entity encoding kept apart from cross-entity wiring.
|
|
15
|
+
*/
|
|
16
|
+
import type { ScheduleTaskInfo, WorkScheduleInfo } from './schedule-extractor.js';
|
|
17
|
+
export declare function escStr(s: string): string;
|
|
18
|
+
export declare function optStr(v: string | undefined | null): string;
|
|
19
|
+
export declare function optEnum(v: string | undefined | null): string;
|
|
20
|
+
export declare function ownerRef(ownerHistoryId: number | undefined): string;
|
|
21
|
+
export declare function refList(ids: number[]): string;
|
|
22
|
+
export declare function ensureGlobalId(existing: string | undefined, seed: string): string;
|
|
23
|
+
export declare function buildWorkControl(id: number, ws: WorkScheduleInfo, owner: string): string;
|
|
24
|
+
export declare function taskHasTimeData(task: ScheduleTaskInfo): boolean;
|
|
25
|
+
export declare function buildTaskTime(id: number, task: ScheduleTaskInfo): string;
|
|
26
|
+
export declare function buildTask(id: number, task: ScheduleTaskInfo, owner: string, taskTimeId: number | undefined): string;
|
|
27
|
+
export declare function resolveProductIds(task: ScheduleTaskInfo, resolver?: (gid: string) => number | undefined): number[];
|
|
28
|
+
//# sourceMappingURL=schedule-serializer-builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-serializer-builders.d.ts","sourceRoot":"","sources":["../src/schedule-serializer-builders.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE3D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAE5D;AAYD,wBAAgB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEnE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoCxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAU/D;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA4BxE;AAED,wBAAgB,SAAS,CACvB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAsBR;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC7C,MAAM,EAAE,CAyBV"}
|
|
@@ -0,0 +1,163 @@
|
|
|
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 { deterministicGlobalId } from './deterministic-global-id.js';
|
|
5
|
+
export function escStr(s) {
|
|
6
|
+
return s.replace(/\\/g, '\\\\').replace(/'/g, "''");
|
|
7
|
+
}
|
|
8
|
+
export function optStr(v) {
|
|
9
|
+
return v === undefined || v === null || v === '' ? '$' : `'${escStr(v)}'`;
|
|
10
|
+
}
|
|
11
|
+
export function optEnum(v) {
|
|
12
|
+
return v === undefined || v === null || v === '' ? '$' : `.${v}.`;
|
|
13
|
+
}
|
|
14
|
+
function optBool(v) {
|
|
15
|
+
return v === undefined || v === null ? '$' : v ? '.T.' : '.F.';
|
|
16
|
+
}
|
|
17
|
+
function optReal(v) {
|
|
18
|
+
if (v === undefined || v === null || !Number.isFinite(v))
|
|
19
|
+
return '$';
|
|
20
|
+
// Integer-format avoids "1.0" → "1." re-import differences across viewers.
|
|
21
|
+
return Number.isInteger(v) ? `${v}.` : String(v);
|
|
22
|
+
}
|
|
23
|
+
export function ownerRef(ownerHistoryId) {
|
|
24
|
+
return ownerHistoryId !== undefined ? `#${ownerHistoryId}` : '$';
|
|
25
|
+
}
|
|
26
|
+
export function refList(ids) {
|
|
27
|
+
return ids.length === 0 ? '$' : `(${ids.map(id => `#${id}`).join(',')})`;
|
|
28
|
+
}
|
|
29
|
+
export function ensureGlobalId(existing, seed) {
|
|
30
|
+
// Round-tripping should preserve whatever GlobalId the upstream extraction
|
|
31
|
+
// saw, even when it isn't exactly 22 chars (some authoring tools emit
|
|
32
|
+
// shorter ids). Only invent a deterministic value when the input is empty.
|
|
33
|
+
if (existing && existing.length > 0)
|
|
34
|
+
return existing;
|
|
35
|
+
return deterministicGlobalId(seed);
|
|
36
|
+
}
|
|
37
|
+
export function buildWorkControl(id, ws, owner) {
|
|
38
|
+
const entity = ws.kind === 'WorkPlan' ? 'IFCWORKPLAN' : 'IFCWORKSCHEDULE';
|
|
39
|
+
const globalId = ensureGlobalId(ws.globalId, `ws|${ws.kind}|${ws.name}`);
|
|
40
|
+
// Deterministic fallback ordering — don't touch `Date.now()` here, it would
|
|
41
|
+
// give identical inputs different STEP output and break diff-based export
|
|
42
|
+
// round-trips. Anchor on whatever the upstream extractor already picked,
|
|
43
|
+
// then on the schedule's own start/finish time.
|
|
44
|
+
const creationDate = ws.creationDate ?? ws.startTime ?? ws.finishTime ?? '1970-01-01T00:00:00';
|
|
45
|
+
// `StartTime` is REQUIRED on IfcWorkControl in IFC4 (ENTITY IfcWorkControl
|
|
46
|
+
// ... StartTime : IfcDateTime) — emitting `$` would fail schema
|
|
47
|
+
// validation on strict viewers. Fall back through the same deterministic
|
|
48
|
+
// chain as `creationDate`. `FinishTime` IS optional, but writing a real
|
|
49
|
+
// value is still friendlier than `$` when the schedule's own `startTime`
|
|
50
|
+
// is the only datum we have.
|
|
51
|
+
const startTime = ws.startTime ?? ws.finishTime ?? creationDate;
|
|
52
|
+
const finishTime = ws.finishTime ?? startTime;
|
|
53
|
+
// IFC4: GlobalId, OwnerHistory, Name, Description, ObjectType,
|
|
54
|
+
// Identification, CreationDate, Creators, Purpose,
|
|
55
|
+
// Duration, TotalFloat, StartTime, FinishTime, PredefinedType
|
|
56
|
+
return [
|
|
57
|
+
`#${id}=${entity}(`,
|
|
58
|
+
`'${globalId}',`,
|
|
59
|
+
`${owner},`,
|
|
60
|
+
`'${escStr(ws.name)}',`,
|
|
61
|
+
`${optStr(ws.description)},`,
|
|
62
|
+
`$,`,
|
|
63
|
+
`${optStr(ws.identification)},`,
|
|
64
|
+
`'${escStr(creationDate)}',`,
|
|
65
|
+
`$,`,
|
|
66
|
+
`${optStr(ws.purpose)},`,
|
|
67
|
+
`${optStr(ws.duration)},`,
|
|
68
|
+
`$,`,
|
|
69
|
+
`'${escStr(startTime)}',`,
|
|
70
|
+
`'${escStr(finishTime)}',`,
|
|
71
|
+
`${optEnum(ws.predefinedType)});`,
|
|
72
|
+
].join('');
|
|
73
|
+
}
|
|
74
|
+
export function taskHasTimeData(task) {
|
|
75
|
+
const t = task.taskTime;
|
|
76
|
+
if (!t)
|
|
77
|
+
return false;
|
|
78
|
+
return Boolean(t.scheduleStart || t.scheduleFinish || t.scheduleDuration
|
|
79
|
+
|| t.actualStart || t.actualFinish || t.actualDuration
|
|
80
|
+
|| t.earlyStart || t.earlyFinish || t.lateStart || t.lateFinish
|
|
81
|
+
|| t.freeFloat || t.totalFloat || t.remainingTime || t.statusTime
|
|
82
|
+
|| t.durationType || t.isCritical !== undefined || t.completion !== undefined);
|
|
83
|
+
}
|
|
84
|
+
export function buildTaskTime(id, task) {
|
|
85
|
+
const t = task.taskTime;
|
|
86
|
+
// IFC4: Name, DataOrigin, UDDataOrigin, DurationType,
|
|
87
|
+
// ScheduleDuration, ScheduleStart, ScheduleFinish,
|
|
88
|
+
// Early/Late Start/Finish, FreeFloat, TotalFloat, IsCritical,
|
|
89
|
+
// StatusTime, ActualDuration, ActualStart, ActualFinish,
|
|
90
|
+
// RemainingTime, Completion
|
|
91
|
+
return [
|
|
92
|
+
`#${id}=IFCTASKTIME(`,
|
|
93
|
+
`$,$,$,`,
|
|
94
|
+
`${optEnum(t.durationType)},`,
|
|
95
|
+
`${optStr(t.scheduleDuration)},`,
|
|
96
|
+
`${optStr(t.scheduleStart)},`,
|
|
97
|
+
`${optStr(t.scheduleFinish)},`,
|
|
98
|
+
`${optStr(t.earlyStart)},`,
|
|
99
|
+
`${optStr(t.earlyFinish)},`,
|
|
100
|
+
`${optStr(t.lateStart)},`,
|
|
101
|
+
`${optStr(t.lateFinish)},`,
|
|
102
|
+
`${optStr(t.freeFloat)},`,
|
|
103
|
+
`${optStr(t.totalFloat)},`,
|
|
104
|
+
`${optBool(t.isCritical)},`,
|
|
105
|
+
`${optStr(t.statusTime)},`,
|
|
106
|
+
`${optStr(t.actualDuration)},`,
|
|
107
|
+
`${optStr(t.actualStart)},`,
|
|
108
|
+
`${optStr(t.actualFinish)},`,
|
|
109
|
+
`${optStr(t.remainingTime)},`,
|
|
110
|
+
`${optReal(t.completion)});`,
|
|
111
|
+
].join('');
|
|
112
|
+
}
|
|
113
|
+
export function buildTask(id, task, owner, taskTimeId) {
|
|
114
|
+
const globalId = ensureGlobalId(task.globalId, `task|${task.name}`);
|
|
115
|
+
const taskTimeRef = taskTimeId !== undefined ? `#${taskTimeId}` : '$';
|
|
116
|
+
// IFC4: GlobalId, OwnerHistory, Name, Description, ObjectType,
|
|
117
|
+
// Identification, LongDescription, Status, WorkMethod, IsMilestone,
|
|
118
|
+
// Priority, TaskTime, PredefinedType
|
|
119
|
+
return [
|
|
120
|
+
`#${id}=IFCTASK(`,
|
|
121
|
+
`'${globalId}',`,
|
|
122
|
+
`${owner},`,
|
|
123
|
+
`'${escStr(task.name)}',`,
|
|
124
|
+
`${optStr(task.description)},`,
|
|
125
|
+
`${optStr(task.objectType)},`,
|
|
126
|
+
`${optStr(task.identification)},`,
|
|
127
|
+
`${optStr(task.longDescription)},`,
|
|
128
|
+
`${optStr(task.status)},`,
|
|
129
|
+
`${optStr(task.workMethod)},`,
|
|
130
|
+
`${task.isMilestone ? '.T.' : '.F.'},`,
|
|
131
|
+
`${task.priority !== undefined ? Math.trunc(task.priority) : '$'},`,
|
|
132
|
+
`${taskTimeRef},`,
|
|
133
|
+
`${optEnum(task.predefinedType)});`,
|
|
134
|
+
].join('');
|
|
135
|
+
}
|
|
136
|
+
export function resolveProductIds(task, resolver) {
|
|
137
|
+
// Prefer expressIds when they're present and non-zero (the in-memory schedule
|
|
138
|
+
// path). When only globalIds are known (e.g. round-tripping through the SDK
|
|
139
|
+
// boundary), use the caller-supplied resolver to look them up against the
|
|
140
|
+
// current model — falls back to expressIds whenever the resolver returns
|
|
141
|
+
// undefined.
|
|
142
|
+
//
|
|
143
|
+
// Walk the union of both arrays so global-id-only entries (common for
|
|
144
|
+
// generated schedules where expressId was never filled in) still hit the
|
|
145
|
+
// resolver instead of being silently dropped.
|
|
146
|
+
const out = [];
|
|
147
|
+
const count = Math.max(task.productExpressIds.length, task.productGlobalIds.length);
|
|
148
|
+
for (let i = 0; i < count; i++) {
|
|
149
|
+
const expressId = task.productExpressIds[i];
|
|
150
|
+
const globalId = task.productGlobalIds[i];
|
|
151
|
+
if (resolver && globalId) {
|
|
152
|
+
const resolved = resolver(globalId);
|
|
153
|
+
if (resolved !== undefined && resolved > 0) {
|
|
154
|
+
out.push(resolved);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (expressId !== undefined && expressId > 0)
|
|
159
|
+
out.push(expressId);
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=schedule-serializer-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-serializer-builders.js","sourceRoot":"","sources":["../src/schedule-serializer-builders.ts"],"names":[],"mappings":"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"}
|