@enervance/insight-cim-model 0.0.140 → 0.0.141

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.
Files changed (60) hide show
  1. package/dist/converter/integral7/converter.integral7.d.ts +2 -2
  2. package/dist/converter/integral7/converter.integral7.js +111 -63
  3. package/dist/converter/integral7/converter.integral7.js.map +1 -1
  4. package/dist/converter/integral7/dl-convert/data-manager.d.ts +33 -0
  5. package/dist/converter/integral7/dl-convert/data-manager.js +97 -0
  6. package/dist/converter/integral7/dl-convert/data-manager.js.map +1 -0
  7. package/dist/converter/integral7/dl-convert/db/{data.types.d.ts → data-types.d.ts} +7 -0
  8. package/dist/converter/integral7/dl-convert/db/{data.types.js → data-types.js} +1 -1
  9. package/dist/converter/integral7/dl-convert/db/{data.types.js.map → data-types.js.map} +1 -1
  10. package/dist/converter/integral7/dl-convert/db/database.interface.types.d.ts +133 -4
  11. package/dist/converter/integral7/dl-convert/dl-converter-i7-2.d.ts +56 -0
  12. package/dist/converter/integral7/dl-convert/dl-converter-i7-2.js +2039 -0
  13. package/dist/converter/integral7/dl-convert/dl-converter-i7-2.js.map +1 -0
  14. package/dist/converter/integral7/dl-convert/dl-converter-i7-function.types.d.ts +1 -1
  15. package/dist/converter/integral7/dl-convert/dl-converter-i7.js +9 -6
  16. package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
  17. package/dist/converter/integral7/dl-convert/dl-converter-i7.types.d.ts +3 -0
  18. package/dist/converter/integral7/dl-convert/dl-converter-i7.types.js +3 -0
  19. package/dist/converter/integral7/dl-convert/dl-converter-i7.types.js.map +1 -0
  20. package/dist/converter/integral7/dl-convert/dl-graphs/cim-model-graph.d.ts +21 -0
  21. package/dist/converter/integral7/dl-convert/dl-graphs/cim-model-graph.js +49 -0
  22. package/dist/converter/integral7/dl-convert/dl-graphs/cim-model-graph.js.map +1 -0
  23. package/dist/converter/integral7/dl-convert/dl-graphs/convert-graph-keys.d.ts +119 -0
  24. package/dist/converter/integral7/dl-convert/dl-graphs/convert-graph-keys.js +84 -0
  25. package/dist/converter/integral7/dl-convert/dl-graphs/convert-graph-keys.js.map +1 -0
  26. package/dist/converter/integral7/dl-convert/dl-graphs/db-object-graph.d.ts +40 -0
  27. package/dist/converter/integral7/dl-convert/dl-graphs/db-object-graph.js +229 -0
  28. package/dist/converter/integral7/dl-convert/dl-graphs/db-object-graph.js.map +1 -0
  29. package/dist/converter/integral7/dl-convert/executor.d.ts +35 -0
  30. package/dist/converter/integral7/dl-convert/executor.js +263 -0
  31. package/dist/converter/integral7/dl-convert/executor.js.map +1 -0
  32. package/dist/converter/integral7/model/dl-utils/constants.js +1 -1
  33. package/dist/converter/integral7/model/dl-utils/util-functions.d.ts +8 -4
  34. package/dist/converter/integral7/model/dl-utils/util-functions.js +134 -6
  35. package/dist/converter/integral7/model/dl-utils/util-functions.js.map +1 -1
  36. package/dist/converter/integral7/model/integral/Point.d.ts +3 -0
  37. package/dist/converter/integral7/model/integral/Point.js +33 -0
  38. package/dist/converter/integral7/model/integral/Point.js.map +1 -1
  39. package/dist/model/core/ConnectivityNode.js +2 -0
  40. package/dist/model/core/ConnectivityNode.js.map +1 -1
  41. package/dist/model/core/Terminal.d.ts +3 -0
  42. package/dist/model/core/Terminal.js +18 -0
  43. package/dist/model/core/Terminal.js.map +1 -1
  44. package/dist/model/dc/DCLine.js +17 -17
  45. package/dist/model/dc/DCLineSegment.js +25 -25
  46. package/dist/model/extensions/enervance/core/EVTerminal.js +20 -15
  47. package/dist/model/extensions/enervance/core/EVTerminal.js.map +1 -1
  48. package/dist/model/loadmodel/ConformLoad.js +33 -33
  49. package/dist/model/loadmodel/ConformLoadGroup.js +22 -22
  50. package/dist/model/loadmodel/LoadArea.js +21 -21
  51. package/dist/model/loadmodel/SubLoadArea.js +22 -22
  52. package/dist/model/wires/BusbarSection.d.ts +4 -1
  53. package/dist/model/wires/BusbarSection.js +21 -1
  54. package/dist/model/wires/BusbarSection.js.map +1 -1
  55. package/dist/model/wires/PowerTransformer.js +124 -33
  56. package/dist/model/wires/PowerTransformer.js.map +1 -1
  57. package/dist/util/database/mysql-controller.d.ts +6 -0
  58. package/dist/util/database/mysql-controller.js +36 -1
  59. package/dist/util/database/mysql-controller.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,2039 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DLConverterI7 = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const constants_1 = require("../model/dl-utils/constants.js");
6
+ const util_functions_1 = require("../model/dl-utils/util-functions.js");
7
+ const DiagramObject_1 = require("../../../model/diagram/DiagramObject.js");
8
+ const convert_graph_keys_1 = require("./dl-graphs/convert-graph-keys.js");
9
+ const Diagram_1 = require("../../../model/diagram/Diagram.js");
10
+ const parser_utils_1 = require("../../../utils2/parser.utils.js");
11
+ const OrientationKind_1 = require("../../../model/diagram/OrientationKind.js");
12
+ const DiagramStyle_1 = require("../../../model/diagram/DiagramStyle.js");
13
+ const common_utils_1 = require("../../../utils2/common.utils.js");
14
+ const cim_constants_1 = require("../../../constants/cim-constants.js");
15
+ const cim_model_graph_1 = require("./dl-graphs/cim-model-graph.js");
16
+ const db_object_graph_1 = require("./dl-graphs/db-object-graph.js");
17
+ const DiagramObjectPoint_1 = require("../../../model/diagram/DiagramObjectPoint.js");
18
+ const utils_schema_1 = require("../utils-schema.js");
19
+ const BusbarSection_1 = require("../../../model/wires/BusbarSection.js");
20
+ class DLConverterI7 {
21
+ constructor(logger) {
22
+ this.exportedDiagramObjectsGraph = {};
23
+ this.logger = logger;
24
+ this.dbObjectGraph = new db_object_graph_1.DbObjectGraph(convert_graph_keys_1.i7SchemaKeyDefinitions);
25
+ this.dbObjectKeyCimModelUuidGraph = new cim_model_graph_1.DbObjectKey2CimModelUUIDGraph(convert_graph_keys_1.i7SchemaKeyDefinitions);
26
+ this.cimModelGraph = new cim_model_graph_1.CimModelGraph();
27
+ this.exportedTerminalUUIDs = new Set();
28
+ this.exportedBusbarSectionConnectivityNodeUuidToDiagramObject = new Map();
29
+ }
30
+ addExportedDiagramObjectToGraph(variantennr, netzId, diagramObject) {
31
+ var _a;
32
+ this.exportedDiagramObjectsGraph[variantennr] = (_a = this.exportedDiagramObjectsGraph[variantennr]) !== null && _a !== void 0 ? _a : {};
33
+ this.exportedDiagramObjectsGraph[variantennr][netzId] = diagramObject;
34
+ }
35
+ setDbObjectGraph(graph) {
36
+ this.dbObjectGraph = graph;
37
+ }
38
+ setCimModelGraph(graph) {
39
+ this.cimModelGraph = graph;
40
+ }
41
+ setDbObjectKeyCimModelUuidGraph(graph) {
42
+ this.dbObjectKeyCimModelUuidGraph = graph;
43
+ }
44
+ addCimObject(uuid, object, typeOfKey, dbKey) {
45
+ if (typeOfKey !== undefined && dbKey !== undefined)
46
+ this.dbObjectKeyCimModelUuidGraph.addRelation(typeOfKey, dbKey, uuid);
47
+ this.cimModelGraph.addUnspecifiedObject(uuid, object);
48
+ }
49
+ convertNsgVariante(arg) {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
51
+ const diagram = new Diagram_1.Diagram((0, parser_utils_1.getUUID)(arg.guid), arg.name, String(arg.id));
52
+ diagram.orientation = OrientationKind_1.OrientationKind.negative;
53
+ diagram.diagramStyle = new DiagramStyle_1.DiagramStyle(common_utils_1.CommonUtils.generateUUID(), cim_constants_1.DiagramLayoutTypes.NODE_BREAKER);
54
+ return diagram;
55
+ });
56
+ }
57
+ convertSchemaStandort(arg) {
58
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
59
+ });
60
+ }
61
+ convertSchemaKnotenStandort(nsgKnotenSo) {
62
+ var _a, _b;
63
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgKnotenSo.variantennr, id: nsgKnotenSo.nsgso });
65
+ if (nsgStandort === undefined)
66
+ return null;
67
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgKnotenSo.knotenso })) !== null && _b !== void 0 ? _b : undefined;
68
+ const diagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
69
+ xPosition: nsgStandort.xrel + nsgKnotenSo.xrel + 16,
70
+ yPosition: nsgStandort.yrel + nsgKnotenSo.yrel + 16,
71
+ diagramObjectName: 'Abzweig',
72
+ identifiedObjectUUID: cimObjectUUID
73
+ });
74
+ // knotenso must be accesible via knotenzw-id
75
+ const netzSchlaufen = yield this.dbObjectGraph.findByAttributes(convert_graph_keys_1.i7TableNames.netz_schlaufe, {
76
+ eknoten: { in: [nsgKnotenSo.knotenso] }
77
+ });
78
+ if (netzSchlaufen && netzSchlaufen.length > 0) {
79
+ for (const netzSchlaufe of netzSchlaufen) {
80
+ this.addExportedDiagramObjectToGraph(nsgKnotenSo.variantennr, netzSchlaufe.knotenzw, diagramObject);
81
+ }
82
+ }
83
+ this.addExportedDiagramObjectToGraph(nsgKnotenSo.variantennr, nsgKnotenSo.knotenso, diagramObject);
84
+ return diagramObject;
85
+ });
86
+ }
87
+ convertSchemaSchaltanlage(arg) {
88
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
89
+ });
90
+ }
91
+ convertSchemaSchaltanlagenAbschnitte(arg) {
92
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
93
+ // const nsgSchaltanlage: NsgSchaltanlage = await this.dbObjectGraph.findObjectByKey(
94
+ // i7TableNames.nsg_nsgschaltanlage,
95
+ // i7SchemaKeyNames.VariantenNrIdKey, { variantennr: arg.variantennr, id: arg.nsgsa }
96
+ // );
97
+ //
98
+ // nsgSchaltanlage.nsgSaabschnitt = nsgSchaltanlage.nsgSaabschnitt ?? [];
99
+ // nsgSchaltanlage.nsgSaabschnitt.push(arg);
100
+ });
101
+ }
102
+ // async convertSchemaSammelschienenAbschnitte(arg: NsgSchaltanlagenabschnitt) {
103
+ convertSchemaSammelschienenAbschnitte(arg) {
104
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
105
+ const netzSsabs = yield this.dbObjectGraph.findAllByAttributes(convert_graph_keys_1.i7TableNames.netz_ssab, {
106
+ saabschnitt: arg.saabschnitt
107
+ });
108
+ const resultingDiagramObjects = [];
109
+ for (const netzSsab of netzSsabs) {
110
+ const diagramObjects = yield this.convertSchemaSammelschienenAbschnitt(arg, netzSsab);
111
+ if (diagramObjects) {
112
+ resultingDiagramObjects.push(...diagramObjects);
113
+ }
114
+ }
115
+ return resultingDiagramObjects;
116
+ });
117
+ }
118
+ convertSchemaSammelschienenAbschnitt(nsgSaabschnitt, netzSsab) {
119
+ var _a, _b;
120
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
121
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
122
+ if (!nsgSchaltanlage)
123
+ return;
124
+ const leftUpperPointOfSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsab, nsgSaabschnitt.variantennr);
125
+ const length = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnitt);
126
+ const points = [];
127
+ let topLeft = new DiagramObjectPoint_1.DiagramObjectPoint();
128
+ let bottomRight = new DiagramObjectPoint_1.DiagramObjectPoint();
129
+ topLeft.xPosition = leftUpperPointOfSsab[0];
130
+ topLeft.yPosition = leftUpperPointOfSsab[1];
131
+ if (nsgSchaltanlage.ausrichtung % 2 === 0) {
132
+ bottomRight.xPosition = leftUpperPointOfSsab[0] + length * constants_1.NsgConstants.HORIZONTAL_OFFSET;
133
+ bottomRight.yPosition = leftUpperPointOfSsab[1];
134
+ }
135
+ else {
136
+ bottomRight.xPosition = leftUpperPointOfSsab[0];
137
+ bottomRight.yPosition = leftUpperPointOfSsab[1] + length * constants_1.NsgConstants.HORIZONTAL_OFFSET;
138
+ }
139
+ topLeft.sequenceNumber = 1;
140
+ bottomRight.sequenceNumber = 2;
141
+ points.push(topLeft, bottomRight);
142
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: netzSsab.id })) !== null && _b !== void 0 ? _b : undefined;
143
+ const connectivityNode = this.cimModelGraph.findObjectByUUID(cimObjectUUID);
144
+ let busbarSection = null;
145
+ let busbarSectionTerminal = null;
146
+ for (const terminal of connectivityNode.terminals.values()) {
147
+ if (terminal.conductingEquipment instanceof BusbarSection_1.BusbarSection) {
148
+ busbarSection = terminal.conductingEquipment;
149
+ busbarSectionTerminal = terminal;
150
+ break;
151
+ }
152
+ }
153
+ // compute the position for the ConnectivityNode (the center of the BusbarSection)
154
+ const centerPosition = [
155
+ (topLeft.xPosition + bottomRight.xPosition) / 2,
156
+ (topLeft.yPosition + bottomRight.yPosition) / 2
157
+ ];
158
+ const doConnectivityNode = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(centerPosition[0], centerPosition[1], null);
159
+ doConnectivityNode.name = `NetzSsab CN ${netzSsab.id}`;
160
+ doConnectivityNode.identifiedObjectUUID = cimObjectUUID;
161
+ this.addExportedDiagramObjectToGraph(nsgSaabschnitt.variantennr, netzSsab.id, doConnectivityNode);
162
+ if (busbarSection && busbarSectionTerminal) {
163
+ const doBusbarSection = new DiagramObject_1.DiagramObject(common_utils_1.CommonUtils.generateUUID(), `NetzSsab ${netzSsab.id}`);
164
+ doBusbarSection.identifiedObjectUUID = busbarSection.getUUID();
165
+ doBusbarSection.rotation = util_functions_1.DLUtilFunctions.getRotationBasedOnNsgSa(nsgSchaltanlage.ausrichtung);
166
+ (0, utils_schema_1.copyDiagramObjectPoints)(doBusbarSection, points);
167
+ this.exportedTerminalUUIDs.add(busbarSectionTerminal.getUUID());
168
+ const doBusbarSectionTerminal = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[topLeft.xPosition, topLeft.yPosition], [...centerPosition]], null);
169
+ doBusbarSectionTerminal.identifiedObjectUUID = busbarSectionTerminal.getUUID();
170
+ return [doBusbarSection, doBusbarSectionTerminal, doConnectivityNode];
171
+ }
172
+ else {
173
+ return [doConnectivityNode];
174
+ }
175
+ });
176
+ }
177
+ convertSchemaSchaltfeldElemente(nsgSchaltfeld) {
178
+ var _a, _b;
179
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
180
+ const resultingDiagramObjects = [];
181
+ // Es kann vorkommen, dass der Standort einer Sammelschiene bzw. einer Schaltanlage nicht eingeblendet ist.
182
+ // Dadurch wird die Sammelschiene bzw. die Schaltanlage nicht exportiert und deshalb existiert das Referenz-Objekt nsgSSAB nicht
183
+ // Das Schaltfeld kann somit ebenfalls nicht exportiert werden und wird übersprungen
184
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltfeld.variantennr, id: nsgSchaltfeld.nsgsaa });
185
+ if (!nsgSaabschnitt)
186
+ return;
187
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltfeld.variantennr, id: nsgSaabschnitt.nsgsa });
188
+ if (!nsgSchaltanlage)
189
+ return;
190
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltfeld.variantennr, id: nsgSchaltanlage.nsgso });
191
+ if (!nsgStandort)
192
+ return;
193
+ const netzSsabs = yield this.dbObjectGraph.findAllByAttributes(convert_graph_keys_1.i7TableNames.netz_ssab, {
194
+ saabschnitt: nsgSaabschnitt.saabschnitt
195
+ });
196
+ let bayOrientation = nsgSchaltanlage.ausrichtung;
197
+ if (nsgSchaltfeld.deltaausrichtung === 1) {
198
+ bayOrientation = (bayOrientation + 2) % 4;
199
+ }
200
+ const netzSsabsIds = new Set(netzSsabs.map(arg => arg.id));
201
+ let schaltfeldOffset;
202
+ switch (nsgSchaltanlage.ausrichtung) {
203
+ case 0:
204
+ case 1:
205
+ schaltfeldOffset = nsgSchaltfeld.slotnummer * 16 + 8;
206
+ break;
207
+ case 2:
208
+ case 3:
209
+ schaltfeldOffset = (nsgSaabschnitt.laenge - nsgSchaltfeld.slotnummer - 1) * 16 + 8;
210
+ break;
211
+ }
212
+ const schaltfeldNodes = yield this.getNodesOfSchaltfeld(nsgSchaltfeld);
213
+ const onSsabNodes = schaltfeldNodes.filter(elem => netzSsabsIds.has(elem.aknoten) || netzSsabsIds.has(elem.eknoten));
214
+ const onlySingleBusbarWithDisconnector = netzSsabs.length === 1 && schaltfeldNodes.length === 1;
215
+ const nodePointMap = new Map();
216
+ let lastSsabBeforeStackLeaving;
217
+ for (const onSsabNode of onSsabNodes) {
218
+ let position;
219
+ let netzSsab;
220
+ if (netzSsabsIds.has(onSsabNode.aknoten)) {
221
+ netzSsab = netzSsabs.find(netzSsab => netzSsab.id === onSsabNode.aknoten);
222
+ position = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsab, nsgSchaltfeld.variantennr);
223
+ }
224
+ else if (netzSsabsIds.has(onSsabNode.eknoten)) {
225
+ netzSsab = netzSsabs.find(netzSsab => netzSsab.id === onSsabNode.eknoten);
226
+ position = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsab, nsgSchaltfeld.variantennr);
227
+ }
228
+ if (lastSsabBeforeStackLeaving === undefined)
229
+ lastSsabBeforeStackLeaving = netzSsab;
230
+ let rotationValue = null;
231
+ switch (bayOrientation) {
232
+ case 0: // TOP
233
+ rotationValue = 0;
234
+ position[0] += schaltfeldOffset;
235
+ if (onlySingleBusbarWithDisconnector)
236
+ position[1] -= 8;
237
+ break;
238
+ case 1: // RIGHT
239
+ rotationValue = 90;
240
+ position[1] += schaltfeldOffset;
241
+ if (onlySingleBusbarWithDisconnector)
242
+ position[0] += 8;
243
+ break;
244
+ case 2: // BOTTOM
245
+ rotationValue = 180;
246
+ position[0] += schaltfeldOffset;
247
+ if (onlySingleBusbarWithDisconnector)
248
+ position[1] += 8;
249
+ break;
250
+ case 3: // LEFT
251
+ rotationValue = 270;
252
+ position[1] += schaltfeldOffset;
253
+ if (onlySingleBusbarWithDisconnector)
254
+ position[0] -= 8;
255
+ break;
256
+ }
257
+ // ConductingEquipment
258
+ nodePointMap.set(onSsabNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
259
+ // nodePointMap.set(
260
+ // onSsabNode.aknoten,
261
+ // DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], null)
262
+ // );
263
+ }
264
+ const leftUpperCornerOfBay = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld, nsgSchaltfeld);
265
+ const maxSsabPos = yield this.getMaxPosOfSaabschnitt(nsgSaabschnitt);
266
+ const startPositionOfStack = [0, 0];
267
+ switch (bayOrientation) {
268
+ case 0: // TOP
269
+ startPositionOfStack[0] = leftUpperCornerOfBay[0] + 16;
270
+ startPositionOfStack[1] = leftUpperCornerOfBay[1] + (nsgSchaltfeld.hoehe - (maxSsabPos + 1) * 8) + 4;
271
+ break;
272
+ case 1: // RIGHT
273
+ startPositionOfStack[0] = leftUpperCornerOfBay[0] + ((maxSsabPos + 1) * 8) - 4;
274
+ startPositionOfStack[1] = leftUpperCornerOfBay[1] + 16;
275
+ break;
276
+ case 2: // BOTTOM
277
+ startPositionOfStack[0] = leftUpperCornerOfBay[0] + 16;
278
+ startPositionOfStack[1] = leftUpperCornerOfBay[1] + ((maxSsabPos + 1) * 8) - 4;
279
+ break;
280
+ case 3: // LEFT
281
+ startPositionOfStack[0] = leftUpperCornerOfBay[0] + (nsgSchaltfeld.hoehe - (maxSsabPos + 1) * 8) + 4;
282
+ startPositionOfStack[1] = leftUpperCornerOfBay[1] + 16;
283
+ break;
284
+ }
285
+ let prevNode = onSsabNodes[0];
286
+ let crtNode = schaltfeldNodes.find(arg => arg.aknoten === onSsabNodes[0].eknoten);
287
+ let position = [...startPositionOfStack];
288
+ let connectivityNodePosition = [...startPositionOfStack];
289
+ let rotationValue = null;
290
+ while (crtNode !== undefined) {
291
+ switch (bayOrientation) {
292
+ case 0: // TOP
293
+ rotationValue = 0;
294
+ position[1] -= 8;
295
+ connectivityNodePosition[1] = position[1] + 4;
296
+ break;
297
+ case 1: // RIGHT
298
+ rotationValue = 90;
299
+ position[0] += 8;
300
+ connectivityNodePosition[0] = position[0] - 4;
301
+ break;
302
+ case 2: // BOTTOM
303
+ rotationValue = 180;
304
+ position[1] += 8;
305
+ connectivityNodePosition[1] = position[1] - 4;
306
+ break;
307
+ case 3: // LEFT
308
+ rotationValue = 270;
309
+ position[0] -= 8;
310
+ connectivityNodePosition[0] = position[0] + 4;
311
+ break;
312
+ }
313
+ nodePointMap.set(crtNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
314
+ nodePointMap.set(crtNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(connectivityNodePosition[0], connectivityNodePosition[1], null));
315
+ prevNode = crtNode;
316
+ crtNode = schaltfeldNodes.find(arg => arg.aknoten === crtNode.eknoten);
317
+ }
318
+ // BEGIN: Last ConnectivityNode
319
+ // Exportiere das ConnectivityNode/den Endpunkt des Schaltfeldes
320
+ if (prevNode !== undefined) {
321
+ switch (bayOrientation) {
322
+ case 0: // TOP
323
+ position[1] = leftUpperCornerOfBay[1];
324
+ break;
325
+ case 1: // RIGHT
326
+ position[0] = leftUpperCornerOfBay[0] + nsgSchaltfeld.hoehe;
327
+ break;
328
+ case 2: // BOTTOM
329
+ position[1] = leftUpperCornerOfBay[1] + nsgSchaltfeld.hoehe;
330
+ break;
331
+ case 3: // LEFT
332
+ position[0] = leftUpperCornerOfBay[0];
333
+ break;
334
+ }
335
+ nodePointMap.set(prevNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], null));
336
+ // END: Last ConnectivityNode
337
+ }
338
+ for (const nodePointEntry of nodePointMap.entries()) {
339
+ const key = nodePointEntry[0];
340
+ const value = nodePointEntry[1];
341
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: key })) !== null && _b !== void 0 ? _b : undefined;
342
+ value.identifiedObjectUUID = cimObjectUUID;
343
+ resultingDiagramObjects.push(value);
344
+ this.addExportedDiagramObjectToGraph(nsgSchaltfeld.variantennr, key, value);
345
+ }
346
+ /* ---------- ---------- ---------- */
347
+ // BEGIN: Terminal-Export
348
+ for (const schaltfeldNode of schaltfeldNodes) {
349
+ let doBackwardConnectivityNode = nodePointMap.get(schaltfeldNode.aknoten);
350
+ if (netzSsabsIds.has(schaltfeldNode.aknoten)) {
351
+ doBackwardConnectivityNode = this.exportedDiagramObjectsGraph[nsgSchaltfeld.variantennr][schaltfeldNode.aknoten];
352
+ }
353
+ const doConductingEquipment = nodePointMap.get(schaltfeldNode.id);
354
+ const doForwardConnectivityNode = nodePointMap.get(schaltfeldNode.eknoten);
355
+ const dopBackwardConnectivityNode = doBackwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
356
+ const dopConductingEquipment = doConductingEquipment.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
357
+ const dopForwardConnectivityNode = doForwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
358
+ if (netzSsabsIds.has(schaltfeldNode.aknoten)) {
359
+ switch (bayOrientation) {
360
+ case 0: // TOP
361
+ case 2: // BOTTOM
362
+ dopBackwardConnectivityNode[0] = dopConductingEquipment[0];
363
+ break;
364
+ case 1: // RIGHT
365
+ case 3: // LEFT
366
+ dopBackwardConnectivityNode[1] = dopConductingEquipment[1];
367
+ break;
368
+ }
369
+ const backwardTerminalUUID = this.lookupTerminalUUID(schaltfeldNode.aknoten, schaltfeldNode.id);
370
+ if (!this.exportedTerminalUUIDs.has(backwardTerminalUUID)) {
371
+ this.exportedTerminalUUIDs.add(backwardTerminalUUID);
372
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopBackwardConnectivityNode], [...dopConductingEquipment]], null);
373
+ terminalDiagramObject.identifiedObjectUUID = backwardTerminalUUID;
374
+ resultingDiagramObjects.push(terminalDiagramObject);
375
+ }
376
+ }
377
+ else {
378
+ const backwardTerminalUUID = this.lookupTerminalUUID(schaltfeldNode.aknoten, schaltfeldNode.id);
379
+ if (!this.exportedTerminalUUIDs.has(backwardTerminalUUID)) {
380
+ this.exportedTerminalUUIDs.add(backwardTerminalUUID);
381
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopBackwardConnectivityNode], [...dopConductingEquipment]], null);
382
+ terminalDiagramObject.identifiedObjectUUID = backwardTerminalUUID;
383
+ resultingDiagramObjects.push(terminalDiagramObject);
384
+ }
385
+ }
386
+ const forwardTerminalUUID = this.lookupTerminalUUID(schaltfeldNode.eknoten, schaltfeldNode.id);
387
+ if (!this.exportedTerminalUUIDs.has(forwardTerminalUUID)) {
388
+ this.exportedTerminalUUIDs.add(forwardTerminalUUID);
389
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopForwardConnectivityNode], [...dopConductingEquipment]], null);
390
+ terminalDiagramObject.identifiedObjectUUID = forwardTerminalUUID;
391
+ resultingDiagramObjects.push(terminalDiagramObject);
392
+ }
393
+ }
394
+ // END: Terminal-Export
395
+ /* ---------- ---------- ---------- */
396
+ return resultingDiagramObjects;
397
+ });
398
+ }
399
+ convertSchemaTransformer2W(nsgTrafo2w) {
400
+ var _a, _b;
401
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
402
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgTrafo2w.variantennr, id: nsgTrafo2w.nsgso }, false);
403
+ if (!nsgStandort)
404
+ return null;
405
+ const netzTrafo2W = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_trafo2w, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgTrafo2w.trafo2w });
406
+ if (!netzTrafo2W)
407
+ return;
408
+ const powerTransformerUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgTrafo2w.trafo2w })) !== null && _b !== void 0 ? _b : undefined;
409
+ let centerTransformer = [null, null];
410
+ let positionAnschlussanf = [null, null];
411
+ let positionAnschlussend = [null, null];
412
+ switch (nsgTrafo2w.ausrichtung) {
413
+ case 0: // (left) anschlussend <-00-> anschlussanf (right)
414
+ centerTransformer[0] = 24;
415
+ centerTransformer[1] = 16;
416
+ positionAnschlussanf[0] = 48;
417
+ positionAnschlussanf[1] = 16;
418
+ positionAnschlussend[0] = 0;
419
+ positionAnschlussend[1] = 16;
420
+ break;
421
+ case 1: // (top) anschlussend <-00-> anschlussanf (bottom)
422
+ centerTransformer[0] = 16;
423
+ centerTransformer[1] = 24;
424
+ positionAnschlussanf[0] = 16;
425
+ positionAnschlussanf[1] = 48;
426
+ positionAnschlussend[0] = 16;
427
+ positionAnschlussend[1] = 0;
428
+ break;
429
+ case 2: // (left) anschlussanf <-00-> anschlussend (right)
430
+ centerTransformer[0] = 24;
431
+ centerTransformer[1] = 16;
432
+ positionAnschlussanf[0] = 0;
433
+ positionAnschlussanf[1] = 16;
434
+ positionAnschlussend[0] = 48;
435
+ positionAnschlussend[1] = 16;
436
+ break;
437
+ case 3: // (top) anschlussanf <-00-> anschlussend (bottom)
438
+ centerTransformer[0] = 16;
439
+ centerTransformer[1] = 24;
440
+ positionAnschlussanf[0] = 16;
441
+ positionAnschlussanf[1] = 0;
442
+ positionAnschlussend[0] = 16;
443
+ positionAnschlussend[1] = 48;
444
+ break;
445
+ }
446
+ // rotation 0 means: <-00->
447
+ const powerTransformerDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
448
+ xPosition: centerTransformer[0],
449
+ yPosition: centerTransformer[1],
450
+ rotation: util_functions_1.DLUtilFunctions.getRotationBasedOnTrafo2W(nsgTrafo2w.ausrichtung),
451
+ diagramObjectName: `NetzTrafo ${netzTrafo2W.id}`,
452
+ identifiedObjectUUID: powerTransformerUUID
453
+ });
454
+ const createdDiagramObjects = [];
455
+ createdDiagramObjects.push(powerTransformerDiagramObject);
456
+ const terminal1DiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
457
+ xPosition: positionAnschlussanf[0],
458
+ yPosition: positionAnschlussanf[1],
459
+ rotation: null,
460
+ diagramObjectName: 'Terminal 1',
461
+ identifiedObjectUUID: netzTrafo2W.guid_w1
462
+ });
463
+ createdDiagramObjects.push(terminal1DiagramObject);
464
+ const terminal2DiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
465
+ xPosition: positionAnschlussend[0],
466
+ yPosition: positionAnschlussend[1],
467
+ rotation: null,
468
+ diagramObjectName: 'Terminal 2',
469
+ identifiedObjectUUID: netzTrafo2W.guid_w2
470
+ });
471
+ createdDiagramObjects.push(terminal2DiagramObject);
472
+ for (const diagramObject of createdDiagramObjects) {
473
+ for (const diagramObjectPoint of diagramObject.diagramObjectPoints) {
474
+ diagramObjectPoint.xPosition += nsgTrafo2w.xrel;
475
+ diagramObjectPoint.yPosition += nsgTrafo2w.yrel;
476
+ diagramObjectPoint.xPosition += nsgStandort.xrel;
477
+ diagramObjectPoint.yPosition += nsgStandort.yrel;
478
+ }
479
+ }
480
+ const doAKnotenConnectivityNode = this.exportedDiagramObjectsGraph[nsgTrafo2w.variantennr][netzTrafo2W.aknoten];
481
+ if (doAKnotenConnectivityNode) {
482
+ const dopAKnotenConnectivityNode = doAKnotenConnectivityNode.diagramObjectPoints[0];
483
+ util_functions_1.DLUtilFunctions.copyAndPushDiagramObjectPoint(terminal1DiagramObject, dopAKnotenConnectivityNode, true);
484
+ }
485
+ const doEKnotenConnectivityNode = this.exportedDiagramObjectsGraph[nsgTrafo2w.variantennr][netzTrafo2W.eknoten];
486
+ if (doEKnotenConnectivityNode) {
487
+ const dopEKnotenConnectivityNode = doEKnotenConnectivityNode.diagramObjectPoints[0];
488
+ util_functions_1.DLUtilFunctions.copyAndPushDiagramObjectPoint(terminal2DiagramObject, dopEKnotenConnectivityNode, true);
489
+ }
490
+ return createdDiagramObjects;
491
+ });
492
+ }
493
+ convertSchemaTransformer3W(nsgTrafo3w) {
494
+ var _a, _b;
495
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
496
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgTrafo3w.variantennr, id: nsgTrafo3w.nsgso }, false);
497
+ if (!nsgStandort)
498
+ return null;
499
+ const netzTrafo3w = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_trafo3w, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgTrafo3w.trafo3w });
500
+ if (!netzTrafo3w)
501
+ return null;
502
+ const powerTransformerUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgTrafo3w.trafo3w })) !== null && _b !== void 0 ? _b : undefined;
503
+ // Der relative Punkt des Transformators ist die linke obere Ecke bezogen auf die Bounding-Box
504
+ const trafoDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(constants_1.NsgConstants.TRAFO3W_WIDTH / 2, constants_1.NsgConstants.TRAFO3W_HEIGHT / 2);
505
+ const powerTransformerDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
506
+ xPosition: trafoDiagramObject.diagramObjectPoints[0].xPosition,
507
+ yPosition: trafoDiagramObject.diagramObjectPoints[0].yPosition,
508
+ rotation: (360 - (constants_1.NsgConstants.TAFO3W_RotationOrder.indexOf(nsgTrafo3w.ausrichtung) * 30 + 180) % 360) % 360,
509
+ diagramObjectName: 'PowerTransformer',
510
+ identifiedObjectUUID: powerTransformerUUID
511
+ });
512
+ // Ermittle die Auswechslung der Enden
513
+ const exchangeGroups = constants_1.NsgConstants.TRAFO3W_ExchangeGroups;
514
+ let exchangeGroup = undefined;
515
+ for (const key of Object.keys(exchangeGroups)) {
516
+ if (exchangeGroups[key].indexOf(nsgTrafo3w.ausrichtung) !== -1) {
517
+ exchangeGroup = constants_1.NsgConstants.TRAFO3W_ExchangeMap[key];
518
+ break;
519
+ }
520
+ }
521
+ // Ermittle die 'default'-Positionen der Enden ohne Berücksichtigung der Auswechslungen
522
+ const rotationenGroups = constants_1.NsgConstants.TRAFO3W_RotationGroups;
523
+ let rotationenGroup = undefined;
524
+ for (const key of Object.keys(rotationenGroups)) {
525
+ if (rotationenGroups[key].indexOf(nsgTrafo3w.ausrichtung) !== -1) {
526
+ rotationenGroup = constants_1.NsgConstants.TRAFO3W_RotationGroup2Positions[key];
527
+ break;
528
+ }
529
+ }
530
+ // Falls eine x-Spiegelung vorliegt, tausche die Werte der Enden 2 und 3 miteinander
531
+ const xMirroring = nsgTrafo3w.orientierung_cw === 1;
532
+ const createdDiagramObjects = [];
533
+ createdDiagramObjects.push(powerTransformerDiagramObject);
534
+ const terminal1DiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
535
+ xPosition: rotationenGroup[exchangeGroup[1]][0],
536
+ yPosition: rotationenGroup[exchangeGroup[1]][1],
537
+ diagramObjectName: 'Terminal 1',
538
+ identifiedObjectUUID: netzTrafo3w.guid_w1
539
+ });
540
+ createdDiagramObjects.push(terminal1DiagramObject);
541
+ const terminal2DiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
542
+ xPosition: rotationenGroup[exchangeGroup[xMirroring ? 3 : 2]][0],
543
+ yPosition: rotationenGroup[exchangeGroup[xMirroring ? 3 : 2]][1],
544
+ diagramObjectName: 'Terminal 2',
545
+ identifiedObjectUUID: netzTrafo3w.guid_w2
546
+ });
547
+ createdDiagramObjects.push(terminal2DiagramObject);
548
+ const terminal3DiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
549
+ xPosition: rotationenGroup[exchangeGroup[xMirroring ? 2 : 3]][0],
550
+ yPosition: rotationenGroup[exchangeGroup[xMirroring ? 2 : 3]][1],
551
+ diagramObjectName: 'Terminal 3',
552
+ identifiedObjectUUID: netzTrafo3w.guid_w3
553
+ });
554
+ createdDiagramObjects.push(terminal3DiagramObject);
555
+ for (const diagramObject of createdDiagramObjects) {
556
+ for (const diagramObjectPoint of diagramObject.diagramObjectPoints) {
557
+ diagramObjectPoint.xPosition += nsgTrafo3w.xrel;
558
+ diagramObjectPoint.yPosition += nsgTrafo3w.yrel;
559
+ diagramObjectPoint.xPosition += nsgStandort.xrel;
560
+ diagramObjectPoint.yPosition += nsgStandort.yrel;
561
+ }
562
+ }
563
+ // if (nsgTrafo3w.orientierung_cw === 0) {
564
+ // // w1
565
+ // // 0
566
+ // // w2 <-0 0-> w3
567
+ const w1TypedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
568
+ variantennr: nsgTrafo3w.variantennr, id: nsgTrafo3w.anschluss_w1
569
+ });
570
+ if (w1TypedResult) {
571
+ const w1ConnectivityNodePosition = yield this.getConnectivityNodePositionFor(w1TypedResult.type, w1TypedResult.object);
572
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(terminal1DiagramObject, w1ConnectivityNodePosition, true);
573
+ }
574
+ const w2TypedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
575
+ variantennr: nsgTrafo3w.variantennr, id: nsgTrafo3w.anschluss_w2
576
+ });
577
+ if (w2TypedResult) {
578
+ const w2ConnectivityNodePosition = yield this.getConnectivityNodePositionFor(w2TypedResult.type, w2TypedResult.object);
579
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(terminal2DiagramObject, w2ConnectivityNodePosition, true);
580
+ }
581
+ const w3TypedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
582
+ variantennr: nsgTrafo3w.variantennr, id: nsgTrafo3w.anschluss_w3
583
+ });
584
+ if (w3TypedResult) {
585
+ const w3ConnectivityNodePosition = yield this.getConnectivityNodePositionFor(w3TypedResult.type, w3TypedResult.object);
586
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(terminal3DiagramObject, w3ConnectivityNodePosition, true);
587
+ }
588
+ return createdDiagramObjects;
589
+ });
590
+ }
591
+ getConnectivityNodePositionFor(i7ObjectType, object) {
592
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
593
+ const leftUpperCorner = yield this.getLeftUpperCornerOf(i7ObjectType, object);
594
+ if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgknotenso) {
595
+ return [leftUpperCorner[0] + 16, leftUpperCorner[1] + 16];
596
+ }
597
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld) {
598
+ const nsgSchaltfeld = object;
599
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltfeld.variantennr, id: nsgSchaltfeld.nsgsaa });
600
+ if (!nsgSaabschnitt)
601
+ return;
602
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
603
+ if (nsgSchaltanlage === undefined)
604
+ return;
605
+ let orientation = nsgSchaltanlage.ausrichtung;
606
+ if (nsgSchaltfeld.deltaausrichtung === 1) {
607
+ orientation = (orientation + 2) % 4;
608
+ }
609
+ switch (orientation) {
610
+ case 0: // TOP
611
+ return [leftUpperCorner[0] + 16, leftUpperCorner[1]];
612
+ case 1: // RIGHT
613
+ return [leftUpperCorner[0] + nsgSchaltfeld.hoehe, leftUpperCorner[1] + 16];
614
+ case 2: // BOTTOM
615
+ return [leftUpperCorner[0] + 16, leftUpperCorner[1] + nsgSchaltfeld.hoehe];
616
+ case 3: // LEFT
617
+ return [leftUpperCorner[0], leftUpperCorner[1] + 16];
618
+ }
619
+ }
620
+ return [null, null];
621
+ });
622
+ }
623
+ convertSchemaLeitung(nsgLeitung, splitLine = true) {
624
+ var _a, _b, _c, _d;
625
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
626
+ const netzLeitung = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_leitung, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgLeitung.leitung });
627
+ if (!netzLeitung)
628
+ return;
629
+ const nsgLtgpunkte = yield this.dbObjectGraph.findAllByAttributes(convert_graph_keys_1.i7TableNames.nsg_nsgltgpunkt, { nsgleitung: nsgLeitung.id });
630
+ // Manche Leitung beinhalten keine Zwischenpunkte, sondern verlaufen lediglich zwischen dem Start- und Endpunkt
631
+ // if (nsgLtgpunkte.length === 0) return;
632
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgLeitung.leitung })) !== null && _b !== void 0 ? _b : undefined;
633
+ nsgLtgpunkte.sort((a, b) => a.pos - b.pos);
634
+ const diagramObject = new DiagramObject_1.DiagramObject();
635
+ diagramObject.name = `Leitung ${netzLeitung.id}`;
636
+ diagramObject.identifiedObjectUUID = cimObjectUUID;
637
+ diagramObject.mrid = common_utils_1.CommonUtils.generateUUID();
638
+ diagramObject.rotation = null;
639
+ const relStartPos = yield this.getRelPos(nsgLeitung, true);
640
+ if (relStartPos === null)
641
+ return null;
642
+ const relEndPos = yield this.getRelPos(nsgLeitung, false);
643
+ if (relEndPos === null)
644
+ return null;
645
+ const leftUpperCornerStartPos = yield this.getLeftUpperCornerOfUnspecified(nsgLeitung.variantennr, nsgLeitung.anschlussanf);
646
+ const leftUpperCornerEndPos = yield this.getLeftUpperCornerOfUnspecified(nsgLeitung.variantennr, nsgLeitung.anschlussend);
647
+ for (let a = 0; a < nsgLtgpunkte.length; ++a) {
648
+ const nsgLtgpunkt = nsgLtgpunkte[a];
649
+ const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint();
650
+ diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
651
+ diagramObject.diagramObjectPoints.push(diagramObjectPoint);
652
+ diagramObjectPoint.diagramObject = diagramObject;
653
+ if (nsgLtgpunkt.userelpos === 1) {
654
+ if (nsgLtgpunkt.reltoanf === 1) {
655
+ diagramObjectPoint.xPosition = leftUpperCornerStartPos[0] + nsgLtgpunkt.xrel;
656
+ diagramObjectPoint.yPosition = leftUpperCornerStartPos[1] + nsgLtgpunkt.yrel;
657
+ }
658
+ else if (nsgLtgpunkt.reltoanf === 0) {
659
+ diagramObjectPoint.xPosition = leftUpperCornerEndPos[0] + nsgLtgpunkt.xrel;
660
+ diagramObjectPoint.yPosition = leftUpperCornerEndPos[1] + nsgLtgpunkt.yrel;
661
+ }
662
+ }
663
+ else {
664
+ diagramObjectPoint.xPosition = nsgLtgpunkt.xrel;
665
+ diagramObjectPoint.yPosition = nsgLtgpunkt.yrel;
666
+ }
667
+ }
668
+ /*
669
+ left:
670
+ m: => x
671
+ c: => y
672
+ right:
673
+ m: => x * (-1)
674
+ c: => y * (-1)
675
+ top:
676
+ m: => y
677
+ c: => x * (-1)
678
+ bottom:
679
+ m: => y * (-1)
680
+ c: => x
681
+ */
682
+ const firstDiagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint();
683
+ firstDiagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
684
+ firstDiagramObjectPoint.xPosition = relStartPos[0]; // + xyOffsetFirstPoint[0];
685
+ firstDiagramObjectPoint.yPosition = relStartPos[1]; // + xyOffsetFirstPoint[1];
686
+ firstDiagramObjectPoint.diagramObject = diagramObject;
687
+ diagramObject.diagramObjectPoints.unshift(firstDiagramObjectPoint);
688
+ const lastDiagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint();
689
+ lastDiagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
690
+ lastDiagramObjectPoint.xPosition = relEndPos[0]; // + xyOffsetLastPoint[0];
691
+ lastDiagramObjectPoint.yPosition = relEndPos[1]; // + xyOffsetLastPoint[1];
692
+ lastDiagramObjectPoint.diagramObject = diagramObject;
693
+ diagramObject.diagramObjectPoints.push(lastDiagramObjectPoint);
694
+ for (let a = 0; a < diagramObject.diagramObjectPoints.length; ++a) {
695
+ diagramObject.diagramObjectPoints[a].xPosition += 2;
696
+ diagramObject.diagramObjectPoints[a].yPosition += 2;
697
+ diagramObject.diagramObjectPoints[a].sequenceNumber = a + 1;
698
+ }
699
+ const resultingDiagramObjects = [];
700
+ const uuidsOfPlacedCimObject = new Set();
701
+ if (splitLine) {
702
+ /* ---------- ---------- ---------- */
703
+ // BEGIN: split the line into line segments
704
+ const netzLeitungsabschnitte = yield this.dbObjectGraph.findAllByAttributes([convert_graph_keys_1.i7TableNames.netz_freileitungabschnitt, convert_graph_keys_1.i7TableNames.netz_kabelabschnitt], { leitung: nsgLeitung.leitung });
705
+ netzLeitungsabschnitte.sort((a, b) => a.pos - b.pos);
706
+ const segmentPercentages = [];
707
+ let completeLength = 0;
708
+ for (let a = 0; a < netzLeitungsabschnitte.length; ++a) {
709
+ completeLength += netzLeitungsabschnitte[a].laenge;
710
+ }
711
+ // Berechne die Prozent-Anteile eines Leitungsabschnittes bezogen auf die Gesamtlänge
712
+ let crtLength = 0;
713
+ for (let a = 0; a < netzLeitungsabschnitte.length; ++a) {
714
+ // todo fix if 'laenge' is null (equals to a not-set length)
715
+ crtLength += netzLeitungsabschnitte[a].laenge;
716
+ segmentPercentages.push(crtLength / completeLength);
717
+ }
718
+ const segments = util_functions_1.DLUtilFunctions.splitLineIntoLineSegments(segmentPercentages, diagramObject.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition]));
719
+ for (let a = 0; a < segments.length; ++a) {
720
+ const thisSegmentUUID = (_d = (_c = this.dbObjectKeyCimModelUuidGraph) === null || _c === void 0 ? void 0 : _c.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: netzLeitungsabschnitte[a].id })) !== null && _d !== void 0 ? _d : undefined;
721
+ const thisSegmentCimObject = this.cimModelGraph.findObjectByUUID(thisSegmentUUID);
722
+ const diagramObject = new DiagramObject_1.DiagramObject();
723
+ diagramObject.name = `Leitung ${netzLeitung.id}`;
724
+ diagramObject.identifiedObjectUUID = thisSegmentUUID;
725
+ diagramObject.mrid = common_utils_1.CommonUtils.generateUUID();
726
+ diagramObject.rotation = null;
727
+ // for (const segment of segments[a]) {
728
+ for (const segmentPoint of segments[a]) {
729
+ const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint();
730
+ diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
731
+ diagramObjectPoint.xPosition = segmentPoint[0];
732
+ diagramObjectPoint.yPosition = segmentPoint[1];
733
+ diagramObjectPoint.sequenceNumber = diagramObject.diagramObjectPoints.length + 1;
734
+ diagramObjectPoint.diagramObject = diagramObject;
735
+ diagramObject.diagramObjectPoints.push(diagramObjectPoint);
736
+ }
737
+ // }
738
+ resultingDiagramObjects.push(diagramObject);
739
+ if (a === 0) {
740
+ // continue (will be added at the end)
741
+ }
742
+ else {
743
+ if (thisSegmentCimObject) {
744
+ // need to get the ConnectivityNode and the Terminal, which connects the current (this) with the prev segment
745
+ const prevSegment = netzLeitungsabschnitte[a - 1];
746
+ const prevSegmentUUID = this.dbObjectKeyCimModelUuidGraph.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: prevSegment.id });
747
+ const prevSegmentCimObject = this.cimModelGraph.findObjectByUUID(prevSegmentUUID);
748
+ let connectivityNodeUUIDThisToPrev;
749
+ let terminalUUIDThisToPrevConnectivityNode;
750
+ for (const thisTerminal of thisSegmentCimObject.terminals.values()) {
751
+ for (const prevTerminal of prevSegmentCimObject.terminals.values()) {
752
+ if (prevTerminal.getConnectivityNodeUUID() === thisTerminal.getConnectivityNodeUUID()) {
753
+ connectivityNodeUUIDThisToPrev = prevTerminal.getConnectivityNodeUUID();
754
+ terminalUUIDThisToPrevConnectivityNode = thisTerminal.getUUID();
755
+ break;
756
+ }
757
+ }
758
+ if (terminalUUIDThisToPrevConnectivityNode) {
759
+ break;
760
+ }
761
+ }
762
+ // place the ConnectivityNode (if not being placed cause => maybe a previous iteration has placed it)
763
+ if (!uuidsOfPlacedCimObject.has(connectivityNodeUUIDThisToPrev)) {
764
+ const doConnectivityNode = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
765
+ xPosition: segments[a][0][0],
766
+ yPosition: segments[a][0][1],
767
+ diagramObjectName: `CN ${a} - Netz-Leitung ${netzLeitung.id}`,
768
+ identifiedObjectUUID: connectivityNodeUUIDThisToPrev
769
+ });
770
+ resultingDiagramObjects.push(doConnectivityNode);
771
+ }
772
+ // place the terminal
773
+ const doTerminal = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
774
+ xPosition: segments[a][0][0],
775
+ yPosition: segments[a][0][1],
776
+ diagramObjectName: `T (Anf) ${a} - Netz-Leitung ${netzLeitung.id}`,
777
+ identifiedObjectUUID: terminalUUIDThisToPrevConnectivityNode
778
+ });
779
+ resultingDiagramObjects.push(doTerminal);
780
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(doTerminal, segments[a][0], true);
781
+ }
782
+ }
783
+ if (a === segments.length - 1) {
784
+ // continue (will be added at the end)
785
+ }
786
+ else {
787
+ if (thisSegmentCimObject) {
788
+ // need to get the ConnectivityNode and the Terminal, which connects the current (this) with the next segment
789
+ const nextSegment = netzLeitungsabschnitte[a + 1];
790
+ const nextSegmentUUID = this.dbObjectKeyCimModelUuidGraph.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nextSegment.id });
791
+ const nextSegmentCimObject = this.cimModelGraph.findObjectByUUID(nextSegmentUUID);
792
+ let connectivityNodeUUIDThisToNext;
793
+ let terminalUUIDThisToNextConnectivityNode;
794
+ for (const thisTerminal of thisSegmentCimObject.terminals.values()) {
795
+ for (const nextTerminal of nextSegmentCimObject.terminals.values()) {
796
+ if (nextTerminal.getConnectivityNodeUUID() === thisTerminal.getConnectivityNodeUUID()) {
797
+ connectivityNodeUUIDThisToNext = nextTerminal.getConnectivityNodeUUID();
798
+ terminalUUIDThisToNextConnectivityNode = thisTerminal.getUUID();
799
+ break;
800
+ }
801
+ }
802
+ if (terminalUUIDThisToNextConnectivityNode) {
803
+ break;
804
+ }
805
+ }
806
+ // place the ConnectivityNode (if not being placed cause => maybe a previous iteration has placed it)
807
+ if (!uuidsOfPlacedCimObject.has(connectivityNodeUUIDThisToNext)) {
808
+ const doConnectivityNode = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
809
+ xPosition: segments[a][segments[a].length - 1][0],
810
+ yPosition: segments[a][segments[a].length - 1][1],
811
+ diagramObjectName: `CN ${a} - Netz-Leitung ${netzLeitung.id}`,
812
+ identifiedObjectUUID: connectivityNodeUUIDThisToNext
813
+ });
814
+ resultingDiagramObjects.push(doConnectivityNode);
815
+ }
816
+ // place the terminal
817
+ const doTerminal = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
818
+ xPosition: segments[a][segments[a].length - 1][0],
819
+ yPosition: segments[a][segments[a].length - 1][1],
820
+ diagramObjectName: `T (End) ${a} - Netz-Leitung ${netzLeitung.id}`,
821
+ identifiedObjectUUID: terminalUUIDThisToNextConnectivityNode
822
+ });
823
+ resultingDiagramObjects.push(doTerminal);
824
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(doTerminal, segments[a][segments[a].length - 1], true);
825
+ }
826
+ }
827
+ }
828
+ // END: split the line into line segments
829
+ /* ---------- ---------- ---------- */
830
+ }
831
+ else {
832
+ resultingDiagramObjects.push(diagramObject);
833
+ }
834
+ /* ---------- ---------- ---------- */
835
+ // BEGIN: export the first terminal
836
+ try {
837
+ const anschlussanfTypedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
838
+ variantennr: nsgLeitung.variantennr, id: nsgLeitung.anschlussanf
839
+ });
840
+ const aknotenTerminalUUID = this.lookupTerminalUUID(netzLeitung.aknoten, netzLeitung.id);
841
+ if (anschlussanfTypedResult && aknotenTerminalUUID) {
842
+ const connectivityNodePosition = yield this.getConnectivityNodePositionFor(anschlussanfTypedResult.type, anschlussanfTypedResult.object);
843
+ const anfTerminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
844
+ xPosition: connectivityNodePosition[0],
845
+ yPosition: connectivityNodePosition[1],
846
+ diagramObjectName: 'Terminal Leitung-Anf',
847
+ identifiedObjectUUID: aknotenTerminalUUID
848
+ });
849
+ resultingDiagramObjects.push(anfTerminalDiagramObject);
850
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(anfTerminalDiagramObject, connectivityNodePosition, true);
851
+ }
852
+ const anschlussendTypedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
853
+ variantennr: nsgLeitung.variantennr, id: nsgLeitung.anschlussend
854
+ });
855
+ const eknotenTerminalUUID = this.lookupTerminalUUID(netzLeitung.eknoten, netzLeitung.id);
856
+ if (anschlussendTypedResult && eknotenTerminalUUID) {
857
+ const connectivityNodePosition = yield this.getConnectivityNodePositionFor(anschlussendTypedResult.type, anschlussendTypedResult.object);
858
+ const endTerminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
859
+ xPosition: connectivityNodePosition[0],
860
+ yPosition: connectivityNodePosition[1],
861
+ diagramObjectName: 'Terminal Leitung-End',
862
+ identifiedObjectUUID: eknotenTerminalUUID
863
+ });
864
+ resultingDiagramObjects.push(endTerminalDiagramObject);
865
+ util_functions_1.DLUtilFunctions.copyAndPushXYCoordinates(endTerminalDiagramObject, connectivityNodePosition, true);
866
+ }
867
+ }
868
+ catch (e) {
869
+ console.log(e);
870
+ }
871
+ // END: export the last terminal
872
+ /* ---------- ---------- ---------- */
873
+ return resultingDiagramObjects;
874
+ });
875
+ }
876
+ convertSchemaQuerzweig(nsgQuerzweig) {
877
+ var _a, _b;
878
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
879
+ const resultingDiagramObjects = [];
880
+ const typedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
881
+ variantennr: nsgQuerzweig.variantennr, id: nsgQuerzweig.bezugsobjekt
882
+ });
883
+ if (!typedResult)
884
+ return null;
885
+ const { type, object } = typedResult;
886
+ let xPosition = nsgQuerzweig.xrel + 8;
887
+ let yPosition = nsgQuerzweig.yrel + 8;
888
+ const querzweigWrapperObject = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, {
889
+ id: nsgQuerzweig.querzweig
890
+ });
891
+ if (!querzweigWrapperObject)
892
+ return null;
893
+ const netzQuerzweig = querzweigWrapperObject.object;
894
+ if (type === convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld) {
895
+ const nsgSchaltfeld = object;
896
+ const leftUpperCornerOfSchaltfeld = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld, nsgSchaltfeld);
897
+ xPosition += leftUpperCornerOfSchaltfeld[0];
898
+ yPosition += leftUpperCornerOfSchaltfeld[1];
899
+ }
900
+ else {
901
+ return null;
902
+ }
903
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgQuerzweig.querzweig })) !== null && _b !== void 0 ? _b : undefined;
904
+ const querzweigDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint2({
905
+ xPosition: xPosition,
906
+ yPosition: yPosition,
907
+ rotation: util_functions_1.DLUtilFunctions.getRotationBasedOnQuerzweig(nsgQuerzweig.ausrichtung),
908
+ diagramObjectName: `DiagramObject ${nsgQuerzweig.querzweig}`,
909
+ identifiedObjectUUID: cimObjectUUID
910
+ });
911
+ this.addExportedDiagramObjectToGraph(nsgQuerzweig.variantennr, nsgQuerzweig.querzweig, querzweigDiagramObject);
912
+ resultingDiagramObjects.push(querzweigDiagramObject);
913
+ /* ---------- ---------- ---------- */
914
+ // BEGIN: Terminal-Export
915
+ const doBackwardConnectivityNode = this.exportedDiagramObjectsGraph[nsgQuerzweig.variantennr][netzQuerzweig.anschluss];
916
+ const dopBackwardConnectivityNode = doBackwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
917
+ const dopConductingEquipment = querzweigDiagramObject.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
918
+ const backwardTerminalUUID = this.lookupTerminalUUID(netzQuerzweig.anschluss, nsgQuerzweig.querzweig);
919
+ if (!this.exportedTerminalUUIDs.has(backwardTerminalUUID)) {
920
+ this.exportedTerminalUUIDs.add(backwardTerminalUUID);
921
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopBackwardConnectivityNode], [...dopConductingEquipment]], null);
922
+ terminalDiagramObject.identifiedObjectUUID = backwardTerminalUUID;
923
+ resultingDiagramObjects.push(terminalDiagramObject);
924
+ }
925
+ // END: Terminal-Export
926
+ /* ---------- ---------- ---------- */
927
+ return resultingDiagramObjects;
928
+ });
929
+ }
930
+ getRelPos(nsgLeitung, aknoten) {
931
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
932
+ const netzLeitung = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_leitung, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nsgLeitung.leitung });
933
+ if (!netzLeitung)
934
+ return;
935
+ const idOfNsgKnoten = aknoten ? nsgLeitung.anschlussanf : nsgLeitung.anschlussend;
936
+ const typedResult = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
937
+ variantennr: nsgLeitung.variantennr, id: idOfNsgKnoten
938
+ });
939
+ if (!typedResult)
940
+ return null;
941
+ const { type, object } = typedResult;
942
+ if (type === convert_graph_keys_1.i7TableNames.nsg_nsgknotenso) {
943
+ const relPos = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgknotenso, object);
944
+ return [relPos[0] + 32 / 2 - 2, relPos[1] + 32 / 2 - 2];
945
+ }
946
+ else if (type === convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld) {
947
+ const nsgSchaltfeld = object;
948
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltfeld.variantennr, id: nsgSchaltfeld.nsgsaa });
949
+ if (!nsgSaabschnitt)
950
+ return;
951
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
952
+ if (nsgSchaltanlage === undefined)
953
+ return;
954
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltanlage.variantennr, id: nsgSchaltanlage.nsgso });
955
+ if (!nsgStandort)
956
+ return;
957
+ let orientation = nsgSchaltanlage.ausrichtung;
958
+ if (nsgSchaltfeld.deltaausrichtung === 1) {
959
+ orientation = (orientation + 2) % 4;
960
+ }
961
+ const relPos = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld, nsgSchaltfeld);
962
+ switch (orientation) {
963
+ case 0: // TOP
964
+ relPos[0] += 16;
965
+ break;
966
+ case 1: // RIGHT
967
+ relPos[0] += nsgSchaltfeld.hoehe;
968
+ relPos[1] += 16;
969
+ break;
970
+ case 2: // BOTTOM
971
+ relPos[0] += 16;
972
+ relPos[1] += nsgSchaltfeld.hoehe;
973
+ break;
974
+ case 3: // LEFT
975
+ relPos[1] += 16;
976
+ break;
977
+ }
978
+ relPos[0] -= 2;
979
+ relPos[1] -= 2;
980
+ return relPos;
981
+ }
982
+ return [];
983
+ });
984
+ }
985
+ convertSchemaKpfeld(nsgKpfeld) {
986
+ var _a, _b;
987
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
988
+ const resultingDiagramObjects = [];
989
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgKpfeld.variantennr, id: nsgKpfeld.nsgsaa }, false);
990
+ if (!nsgSaabschnitt)
991
+ return;
992
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgKpfeld.variantennr, id: nsgSaabschnitt.nsgsa }, false);
993
+ if (!nsgSchaltanlage)
994
+ return;
995
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgKpfeld.variantennr, id: nsgSchaltanlage.nsgso }, false);
996
+ if (!nsgStandort)
997
+ return;
998
+ const netzSsabs = yield this.dbObjectGraph.findAllByAttributes(convert_graph_keys_1.i7TableNames.netz_ssab, {
999
+ saabschnitt: nsgSaabschnitt.saabschnitt
1000
+ });
1001
+ let couplerOrientation = nsgSchaltanlage.ausrichtung;
1002
+ if (nsgKpfeld.deltaausrichtung === 1) {
1003
+ couplerOrientation = (couplerOrientation + 2) % 4;
1004
+ }
1005
+ const leftUpperCornerOfCoupler = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld, nsgKpfeld);
1006
+ const kpfeldNodes = yield this.getNodesOfKpfeld(nsgKpfeld);
1007
+ let containsLeistungsschalter = false;
1008
+ let leistungsschalterNode = null;
1009
+ for (const kpfeldNode of kpfeldNodes) {
1010
+ if (!containsLeistungsschalter) {
1011
+ leistungsschalterNode = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_leistungsschalter, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: kpfeldNode.id }, false);
1012
+ if (leistungsschalterNode) {
1013
+ containsLeistungsschalter = true;
1014
+ }
1015
+ }
1016
+ }
1017
+ const netzSsabsIds = new Set(netzSsabs.map(arg => arg.id));
1018
+ const maxSsabPos = yield this.getMaxPosOfSaabschnitt(nsgSaabschnitt);
1019
+ const nodePointMap = new Map();
1020
+ if (containsLeistungsschalter) {
1021
+ const onSsabNodes = kpfeldNodes.filter(elem => netzSsabsIds.has(elem.aknoten) || netzSsabsIds.has(elem.eknoten));
1022
+ // first: place the disconnectors (and the connectivity nodes) on the busbar sections
1023
+ for (const onSsabNode of onSsabNodes) {
1024
+ const idOfSsab = netzSsabsIds.has(onSsabNode.aknoten) ? onSsabNode.aknoten : onSsabNode.eknoten;
1025
+ const leftUpperCornerOfSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === idOfSsab), nsgKpfeld.variantennr);
1026
+ const nextNode = kpfeldNodes.find(arg => arg.aknoten === onSsabNode.eknoten);
1027
+ let rotationValue;
1028
+ let shiftOffset = 4;
1029
+ // um universalkupplungen korrekt zu platzieren, müssen die Disconnectoren untereinander platziert werden,
1030
+ // die auf den Leistungsschalter zeigen (bezogen auf aknoten)
1031
+ if (nextNode && (yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_leistungsschalter, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: nextNode.id }, false))) {
1032
+ // on 'left' side
1033
+ shiftOffset = 4;
1034
+ }
1035
+ else {
1036
+ // on 'right' side
1037
+ shiftOffset = 28;
1038
+ }
1039
+ const position = [null, null];
1040
+ switch (couplerOrientation) {
1041
+ case 0: // TOP
1042
+ position[0] = leftUpperCornerOfCoupler[0] + shiftOffset;
1043
+ position[1] = leftUpperCornerOfSsab[1];
1044
+ rotationValue = 0;
1045
+ break;
1046
+ case 1: // RIGHT
1047
+ position[0] = leftUpperCornerOfSsab[0];
1048
+ position[1] = leftUpperCornerOfCoupler[1] + shiftOffset;
1049
+ rotationValue = 90;
1050
+ break;
1051
+ case 2: // BOTTOM
1052
+ position[0] = leftUpperCornerOfCoupler[0] + shiftOffset;
1053
+ position[1] = leftUpperCornerOfSsab[1];
1054
+ rotationValue = 180;
1055
+ break;
1056
+ case 3: // LEFT
1057
+ position[0] = leftUpperCornerOfSsab[0];
1058
+ position[1] = leftUpperCornerOfCoupler[1] + shiftOffset;
1059
+ rotationValue = 270;
1060
+ break;
1061
+ }
1062
+ nodePointMap.set(onSsabNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1063
+ nodePointMap.set(idOfSsab, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], null));
1064
+ }
1065
+ // Leistungsschalter noch platzieren
1066
+ // const crtNode = leistungsschalterNode; //kpfeldNodes.find(arg => arg.aknoten === onSsabNodes[0].eknoten);
1067
+ let rotationValue = null;
1068
+ const position = [...leftUpperCornerOfCoupler];
1069
+ const cn1Position = [...leftUpperCornerOfCoupler];
1070
+ const cn2Position = [...leftUpperCornerOfCoupler];
1071
+ switch (couplerOrientation) {
1072
+ case 0: // TOP
1073
+ position[0] += 16;
1074
+ position[1] = leftUpperCornerOfCoupler[1] + 4;
1075
+ rotationValue = 90;
1076
+ cn1Position[0] = leftUpperCornerOfCoupler[0] + 4;
1077
+ cn1Position[1] = position[1];
1078
+ cn2Position[0] = leftUpperCornerOfCoupler[0] + 28;
1079
+ cn2Position[1] = position[1];
1080
+ break;
1081
+ case 1: // RIGHT
1082
+ position[0] = ((maxSsabPos + 1) * 8) + leftUpperCornerOfCoupler[0] + 4;
1083
+ position[1] += 16;
1084
+ rotationValue = 180;
1085
+ cn1Position[0] = position[0];
1086
+ cn1Position[1] = leftUpperCornerOfCoupler[1] + 4;
1087
+ cn2Position[0] = position[0];
1088
+ cn2Position[1] = leftUpperCornerOfCoupler[1] + 28;
1089
+ break;
1090
+ case 2: // BOTTOM
1091
+ position[0] += 16;
1092
+ position[1] = ((maxSsabPos + 1) * 8) + leftUpperCornerOfCoupler[1] + 4;
1093
+ rotationValue = 90;
1094
+ cn1Position[0] = leftUpperCornerOfCoupler[0] + 4;
1095
+ cn1Position[1] = position[1];
1096
+ cn2Position[0] = leftUpperCornerOfCoupler[0] + 28;
1097
+ cn2Position[1] = position[1];
1098
+ break;
1099
+ case 3: // LEFT
1100
+ position[0] = leftUpperCornerOfCoupler[0] + 4;
1101
+ position[1] += 16;
1102
+ rotationValue = 180;
1103
+ cn1Position[0] = position[0];
1104
+ cn1Position[1] = leftUpperCornerOfCoupler[1] + 4;
1105
+ cn2Position[0] = position[0];
1106
+ cn2Position[1] = leftUpperCornerOfCoupler[1] + 28;
1107
+ break;
1108
+ }
1109
+ nodePointMap.set(leistungsschalterNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1110
+ nodePointMap.set(leistungsschalterNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cn1Position[0], cn1Position[1], null));
1111
+ nodePointMap.set(leistungsschalterNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cn2Position[0], cn2Position[1], null));
1112
+ /* ---------- ---------- ---------- */
1113
+ // BEGIN: Terminal-Export
1114
+ for (const kpfeldNode of kpfeldNodes) {
1115
+ const doBackwardConnectivityNode = nodePointMap.get(kpfeldNode.aknoten);
1116
+ const doConductingEquipment = nodePointMap.get(kpfeldNode.id);
1117
+ const doForwardConnectivityNode = nodePointMap.get(kpfeldNode.eknoten);
1118
+ const dopBackwardConnectivityNode = doBackwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1119
+ const dopConductingEquipment = doConductingEquipment.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1120
+ const dopForwardConnectivityNode = doForwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1121
+ const backwardTerminalUUID = this.lookupTerminalUUID(kpfeldNode.aknoten, kpfeldNode.id);
1122
+ if (!this.exportedTerminalUUIDs.has(backwardTerminalUUID)) {
1123
+ this.exportedTerminalUUIDs.add(backwardTerminalUUID);
1124
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopBackwardConnectivityNode], [...dopConductingEquipment]], null);
1125
+ terminalDiagramObject.identifiedObjectUUID = backwardTerminalUUID;
1126
+ resultingDiagramObjects.push(terminalDiagramObject);
1127
+ }
1128
+ const forwardTerminalUUID = this.lookupTerminalUUID(kpfeldNode.eknoten, kpfeldNode.id);
1129
+ if (!this.exportedTerminalUUIDs.has(forwardTerminalUUID)) {
1130
+ this.exportedTerminalUUIDs.add(forwardTerminalUUID);
1131
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopForwardConnectivityNode], [...dopConductingEquipment]], null);
1132
+ terminalDiagramObject.identifiedObjectUUID = forwardTerminalUUID;
1133
+ resultingDiagramObjects.push(terminalDiagramObject);
1134
+ }
1135
+ }
1136
+ // END: Terminal-Export
1137
+ /* ---------- ---------- ---------- */
1138
+ }
1139
+ else {
1140
+ // case: cross-coupling without breaker
1141
+ let prevNode;
1142
+ let crtNode = kpfeldNodes.filter(elem => netzSsabsIds.has(elem.aknoten))[0];
1143
+ const offsetValue = 32 / (kpfeldNodes.length + 1);
1144
+ let rotationValue = null;
1145
+ const positionFirstSsabNode = [0, 0];
1146
+ const leftUpperPosOfAKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === crtNode.aknoten), nsgKpfeld.variantennr);
1147
+ switch (couplerOrientation) {
1148
+ case 0: // TOP
1149
+ positionFirstSsabNode[0] = leftUpperCornerOfCoupler[0] + 4;
1150
+ positionFirstSsabNode[1] = leftUpperPosOfAKnotenSsab[1];
1151
+ break;
1152
+ case 1: // RIGHT
1153
+ positionFirstSsabNode[0] = leftUpperPosOfAKnotenSsab[0];
1154
+ positionFirstSsabNode[1] = leftUpperCornerOfCoupler[1] + 4;
1155
+ break;
1156
+ case 2: // BOTTOM
1157
+ positionFirstSsabNode[0] = leftUpperCornerOfCoupler[0] + 4;
1158
+ positionFirstSsabNode[1] = leftUpperPosOfAKnotenSsab[1];
1159
+ break;
1160
+ case 3: // LEFT
1161
+ positionFirstSsabNode[0] = leftUpperPosOfAKnotenSsab[0];
1162
+ positionFirstSsabNode[1] = leftUpperCornerOfCoupler[1] + 4;
1163
+ break;
1164
+ }
1165
+ nodePointMap.set(crtNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(positionFirstSsabNode[0], positionFirstSsabNode[1], null));
1166
+ const position = [...leftUpperCornerOfCoupler];
1167
+ while (crtNode !== undefined) {
1168
+ switch (couplerOrientation) {
1169
+ case 0: // TOP
1170
+ position[0] += offsetValue;
1171
+ position[1] = leftUpperCornerOfCoupler[1] + 4;
1172
+ rotationValue = 90;
1173
+ break;
1174
+ case 1: // RIGHT
1175
+ position[0] = ((maxSsabPos + 1) * 8) + leftUpperCornerOfCoupler[0] + 4;
1176
+ position[1] += offsetValue;
1177
+ rotationValue = 0;
1178
+ break;
1179
+ case 2: // BOTTOM
1180
+ position[0] += offsetValue;
1181
+ position[1] = ((maxSsabPos + 1) * 8) + leftUpperCornerOfCoupler[1] + 4;
1182
+ rotationValue = 90;
1183
+ break;
1184
+ case 3: // LEFT
1185
+ position[0] = leftUpperCornerOfCoupler[0] + 4;
1186
+ position[1] += offsetValue;
1187
+ rotationValue = 0;
1188
+ break;
1189
+ }
1190
+ nodePointMap.set(crtNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1191
+ const positionConnectivityNode = [...position];
1192
+ switch (couplerOrientation) {
1193
+ case 0: // TOP
1194
+ positionConnectivityNode[0] += (offsetValue / 2);
1195
+ break;
1196
+ case 1: // RIGHT
1197
+ positionConnectivityNode[1] += (offsetValue / 2);
1198
+ break;
1199
+ case 2: // BOTTOM
1200
+ positionConnectivityNode[0] += (offsetValue / 2);
1201
+ break;
1202
+ case 3: // LEFT
1203
+ positionConnectivityNode[1] += (offsetValue / 2);
1204
+ break;
1205
+ }
1206
+ nodePointMap.set(crtNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(positionConnectivityNode[0], positionConnectivityNode[1], null));
1207
+ prevNode = crtNode;
1208
+ crtNode = kpfeldNodes.find(arg => arg.aknoten === crtNode.eknoten);
1209
+ }
1210
+ // replace the last "ConnectivityNode"
1211
+ const positionLastSsabNode = [0, 0];
1212
+ const leftUpperPosOfEKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === prevNode.eknoten), nsgKpfeld.variantennr);
1213
+ switch (couplerOrientation) {
1214
+ case 0: // TOP
1215
+ positionLastSsabNode[0] = leftUpperCornerOfCoupler[0] + 28;
1216
+ positionLastSsabNode[1] = leftUpperPosOfEKnotenSsab[1];
1217
+ break;
1218
+ case 1: // RIGHT
1219
+ positionLastSsabNode[0] = leftUpperPosOfEKnotenSsab[0];
1220
+ positionLastSsabNode[1] = leftUpperCornerOfCoupler[1] + 28;
1221
+ break;
1222
+ case 2: // BOTTOM
1223
+ positionLastSsabNode[0] = leftUpperCornerOfCoupler[0] + 28;
1224
+ positionLastSsabNode[1] = leftUpperPosOfEKnotenSsab[1];
1225
+ break;
1226
+ case 3: // LEFT
1227
+ positionLastSsabNode[0] = leftUpperPosOfEKnotenSsab[0];
1228
+ positionLastSsabNode[1] = leftUpperCornerOfCoupler[1] + 28;
1229
+ break;
1230
+ }
1231
+ nodePointMap.set(prevNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(positionLastSsabNode[0], positionLastSsabNode[1], null));
1232
+ /* ---------- ---------- ---------- */
1233
+ // BEGIN: Terminal-Export
1234
+ for (const kpfeldNode of kpfeldNodes) {
1235
+ const doBackwardConnectivityNode = nodePointMap.get(kpfeldNode.aknoten);
1236
+ const doConductingEquipment = nodePointMap.get(kpfeldNode.id);
1237
+ const doForwardConnectivityNode = nodePointMap.get(kpfeldNode.eknoten);
1238
+ const dopBackwardConnectivityNode = doBackwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1239
+ const dopConductingEquipment = doConductingEquipment.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1240
+ const dopForwardConnectivityNode = doForwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1241
+ let backwardTerminalPoints;
1242
+ if (netzSsabsIds.has(kpfeldNode.aknoten)) {
1243
+ // insert a bend node
1244
+ const bendNode = [null, null];
1245
+ switch (couplerOrientation) {
1246
+ case 0: // TOP
1247
+ case 2: // BOTTOM
1248
+ bendNode[0] = dopBackwardConnectivityNode[0];
1249
+ bendNode[1] = dopConductingEquipment[1];
1250
+ break;
1251
+ case 1: // RIGHT
1252
+ case 3: // LEFT
1253
+ bendNode[0] = dopConductingEquipment[0];
1254
+ bendNode[1] = dopBackwardConnectivityNode[1];
1255
+ break;
1256
+ }
1257
+ backwardTerminalPoints = [[...dopBackwardConnectivityNode], bendNode, [...dopConductingEquipment]];
1258
+ }
1259
+ else {
1260
+ backwardTerminalPoints = [[...dopBackwardConnectivityNode], [...dopConductingEquipment]];
1261
+ }
1262
+ const backwardTerminalUUID = this.lookupTerminalUUID(kpfeldNode.aknoten, kpfeldNode.id);
1263
+ if (!this.exportedTerminalUUIDs.has(backwardTerminalUUID)) {
1264
+ this.exportedTerminalUUIDs.add(backwardTerminalUUID);
1265
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints(backwardTerminalPoints, null);
1266
+ terminalDiagramObject.identifiedObjectUUID = backwardTerminalUUID;
1267
+ resultingDiagramObjects.push(terminalDiagramObject);
1268
+ }
1269
+ let forwardTerminalPoints;
1270
+ if (netzSsabsIds.has(kpfeldNode.eknoten)) {
1271
+ // insert a bend node
1272
+ const bendNode = [null, null];
1273
+ switch (couplerOrientation) {
1274
+ case 0: // TOP
1275
+ case 2: // BOTTOM
1276
+ bendNode[0] = dopForwardConnectivityNode[0];
1277
+ bendNode[1] = dopConductingEquipment[1];
1278
+ break;
1279
+ case 1: // RIGHT
1280
+ case 3: // LEFT
1281
+ bendNode[0] = dopConductingEquipment[0];
1282
+ bendNode[1] = dopForwardConnectivityNode[1];
1283
+ break;
1284
+ }
1285
+ forwardTerminalPoints = [[...dopForwardConnectivityNode], bendNode, [...dopConductingEquipment]];
1286
+ }
1287
+ else {
1288
+ forwardTerminalPoints = [[...dopForwardConnectivityNode], [...dopConductingEquipment]];
1289
+ }
1290
+ const forwardTerminalUUID = this.lookupTerminalUUID(kpfeldNode.eknoten, kpfeldNode.id);
1291
+ if (!this.exportedTerminalUUIDs.has(forwardTerminalUUID)) {
1292
+ this.exportedTerminalUUIDs.add(forwardTerminalUUID);
1293
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints(forwardTerminalPoints, null);
1294
+ terminalDiagramObject.identifiedObjectUUID = forwardTerminalUUID;
1295
+ resultingDiagramObjects.push(terminalDiagramObject);
1296
+ }
1297
+ }
1298
+ // END: Terminal-Export
1299
+ /* ---------- ---------- ---------- */
1300
+ }
1301
+ for (const nodePointEntry of nodePointMap.entries()) {
1302
+ const key = nodePointEntry[0];
1303
+ const value = nodePointEntry[1];
1304
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: key })) !== null && _b !== void 0 ? _b : undefined;
1305
+ value.identifiedObjectUUID = cimObjectUUID;
1306
+ resultingDiagramObjects.push(value);
1307
+ }
1308
+ return resultingDiagramObjects;
1309
+ });
1310
+ }
1311
+ convertSchemaLKupplung(nsgLKupplung, netzLKupplung) {
1312
+ var _a, _b;
1313
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1314
+ const resultingDiagramObjects = [];
1315
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgLKupplung.variantennr, id: nsgLKupplung.nsgsaa }, false);
1316
+ if (!nsgSaabschnitt)
1317
+ return;
1318
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgLKupplung.variantennr, id: nsgSaabschnitt.nsgsa }, false);
1319
+ if (!nsgSchaltanlage)
1320
+ return;
1321
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgLKupplung.variantennr, id: nsgSchaltanlage.nsgso }, false);
1322
+ if (!nsgStandort)
1323
+ return;
1324
+ const nsgSaabschnittAnf = yield this.dbObjectGraph.findFirstByAttributes(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, { variantennr: nsgLKupplung.variantennr, saabschnitt: netzLKupplung.saa_anf });
1325
+ if (!nsgSaabschnittAnf)
1326
+ return;
1327
+ const nsgSaabschnittEnd = yield this.dbObjectGraph.findFirstByAttributes(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, { variantennr: nsgLKupplung.variantennr, saabschnitt: netzLKupplung.saa_end });
1328
+ if (!nsgSaabschnittEnd)
1329
+ return;
1330
+ const netzSsabs = yield this.dbObjectGraph.findByAttributes(convert_graph_keys_1.i7TableNames.netz_ssab, {
1331
+ saabschnitt: {
1332
+ in: [nsgSaabschnittAnf.saabschnitt, nsgSaabschnittEnd.saabschnitt]
1333
+ }
1334
+ });
1335
+ const lkupplungNodes = yield this.getNodesOfLKupplung(netzLKupplung);
1336
+ const netzSsabsIds = new Set(netzSsabs.map(arg => arg.id));
1337
+ const ssabConnectedNodes = lkupplungNodes.filter(elem => netzSsabsIds.has(elem.aknoten) || netzSsabsIds.has(elem.eknoten));
1338
+ const nodePointMap = new Map();
1339
+ if (lkupplungNodes.length === 1 && netzSsabsIds.has(lkupplungNodes[0].aknoten) && netzSsabsIds.has(lkupplungNodes[0].eknoten)) {
1340
+ const ssabConnectedNode = ssabConnectedNodes[0];
1341
+ if (yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.netz_sestarr3p, convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: ssabConnectedNode.id })) {
1342
+ const leftUpperCornerOfAKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === ssabConnectedNode.aknoten), nsgLKupplung.variantennr);
1343
+ const sizeOfAKnotenSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittAnf);
1344
+ const leftUpperCornerOfEKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === ssabConnectedNode.eknoten), nsgLKupplung.variantennr);
1345
+ const sizeOfEKnotenSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittEnd);
1346
+ // cause 'starre Verbindungen' are modelled as junctions, there must be two points extracted
1347
+ // those two points are equals to the connectivity node positions and the rotation value is unnecessary
1348
+ const aKnotenPosition = [null, null];
1349
+ const eKnotenPosition = [null, null];
1350
+ switch (nsgSchaltanlage.ausrichtung) {
1351
+ case 0: // left to right
1352
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0] + (sizeOfAKnotenSsab) * 16;
1353
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1354
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1355
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1356
+ break;
1357
+ case 1: // top to bottom
1358
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1359
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1] + (sizeOfAKnotenSsab) * 16;
1360
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1361
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1362
+ break;
1363
+ case 2: // right to left
1364
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1365
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1366
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0] + (sizeOfEKnotenSsab) * 16;
1367
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1368
+ break;
1369
+ case 3: // bottom to top
1370
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1371
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1372
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1373
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1] + (sizeOfEKnotenSsab) * 16;
1374
+ break;
1375
+ }
1376
+ const junctionCoordinates = [[...aKnotenPosition], [...eKnotenPosition]];
1377
+ nodePointMap.set(ssabConnectedNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints(junctionCoordinates, null));
1378
+ nodePointMap.set(ssabConnectedNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(aKnotenPosition[0], aKnotenPosition[1], null));
1379
+ nodePointMap.set(ssabConnectedNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(eKnotenPosition[0], eKnotenPosition[1], null));
1380
+ }
1381
+ else {
1382
+ const leftUpperCornerOfAKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === ssabConnectedNode.aknoten), nsgLKupplung.variantennr);
1383
+ const sizeOfAKnotenSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittAnf);
1384
+ const leftUpperCornerOfEKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === ssabConnectedNode.eknoten), nsgLKupplung.variantennr);
1385
+ const sizeOfEKnotenSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittEnd);
1386
+ const aKnotenPosition = [null, null];
1387
+ const eKnotenPosition = [null, null];
1388
+ switch (nsgSchaltanlage.ausrichtung) {
1389
+ case 0: // left to right
1390
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0] + (sizeOfAKnotenSsab) * 16;
1391
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1392
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1393
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1394
+ break;
1395
+ case 1: // top to bottom
1396
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1397
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1] + (sizeOfAKnotenSsab) * 16;
1398
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1399
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1400
+ break;
1401
+ case 2: // right to left
1402
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1403
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1404
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0] + (sizeOfEKnotenSsab) * 16;
1405
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1406
+ break;
1407
+ case 3: // bottom to top
1408
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1409
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1410
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1411
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1] + (sizeOfEKnotenSsab) * 16;
1412
+ break;
1413
+ }
1414
+ const position = [
1415
+ (aKnotenPosition[0] + eKnotenPosition[0]) / 2,
1416
+ (aKnotenPosition[1] + eKnotenPosition[1]) / 2
1417
+ ];
1418
+ let rotationValue = Math.atan2(eKnotenPosition[1] - aKnotenPosition[1], eKnotenPosition[0] - aKnotenPosition[0]);
1419
+ rotationValue = ((rotationValue * 180) / Math.PI) + 90;
1420
+ nodePointMap.set(ssabConnectedNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1421
+ nodePointMap.set(ssabConnectedNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(aKnotenPosition[0], aKnotenPosition[1], null));
1422
+ nodePointMap.set(ssabConnectedNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(eKnotenPosition[0], eKnotenPosition[1], null));
1423
+ }
1424
+ }
1425
+ else if (lkupplungNodes.length === 2 &&
1426
+ (netzSsabsIds.has(lkupplungNodes[0].aknoten) || netzSsabsIds.has(lkupplungNodes[0].eknoten)) &&
1427
+ (netzSsabsIds.has(lkupplungNodes[1].aknoten) || netzSsabsIds.has(lkupplungNodes[1].eknoten))) {
1428
+ let aKnotenSsabNode;
1429
+ let aKnotenSsabId;
1430
+ let eKnotenSsabNode;
1431
+ let eKnotenSsabId;
1432
+ let inbetweenNodeId;
1433
+ if (netzSsabsIds.has(lkupplungNodes[0].aknoten)) {
1434
+ aKnotenSsabId = lkupplungNodes[0].aknoten;
1435
+ aKnotenSsabNode = lkupplungNodes[0];
1436
+ eKnotenSsabId = lkupplungNodes[1].eknoten;
1437
+ eKnotenSsabNode = lkupplungNodes[1];
1438
+ inbetweenNodeId = lkupplungNodes[1].aknoten;
1439
+ }
1440
+ else {
1441
+ aKnotenSsabId = lkupplungNodes[1].aknoten;
1442
+ aKnotenSsabNode = lkupplungNodes[1];
1443
+ eKnotenSsabId = lkupplungNodes[0].eknoten;
1444
+ eKnotenSsabNode = lkupplungNodes[0];
1445
+ inbetweenNodeId = lkupplungNodes[0].aknoten;
1446
+ }
1447
+ const leftUpperCornerOfAKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === aKnotenSsabId), nsgLKupplung.variantennr);
1448
+ const sizeOfAKnotenSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittAnf);
1449
+ const leftUpperCornerOfEKnotenSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === eKnotenSsabId), nsgLKupplung.variantennr);
1450
+ const sizeOfEKnotenSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittEnd);
1451
+ const aKnotenPosition = [null, null];
1452
+ const eKnotenPosition = [null, null];
1453
+ switch (nsgSchaltanlage.ausrichtung) {
1454
+ case 0: // left to right
1455
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0] + (sizeOfAKnotenSsab) * 16;
1456
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1457
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1458
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1459
+ break;
1460
+ case 1: // top to bottom
1461
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1462
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1] + (sizeOfAKnotenSsab) * 16;
1463
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1464
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1465
+ break;
1466
+ case 2: // right to left
1467
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1468
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1469
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0] + (sizeOfEKnotenSsab) * 16;
1470
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1];
1471
+ break;
1472
+ case 3: // bottom to top
1473
+ aKnotenPosition[0] = leftUpperCornerOfAKnotenSsab[0];
1474
+ aKnotenPosition[1] = leftUpperCornerOfAKnotenSsab[1];
1475
+ eKnotenPosition[0] = leftUpperCornerOfEKnotenSsab[0];
1476
+ eKnotenPosition[1] = leftUpperCornerOfEKnotenSsab[1] + (sizeOfEKnotenSsab) * 16;
1477
+ break;
1478
+ }
1479
+ const connectionVector2 = [
1480
+ eKnotenPosition[0] - aKnotenPosition[0],
1481
+ eKnotenPosition[1] - aKnotenPosition[1]
1482
+ ];
1483
+ const offsetVector = [
1484
+ connectionVector2[0] / 4,
1485
+ connectionVector2[1] / 4
1486
+ ];
1487
+ const ce1Position = [
1488
+ aKnotenPosition[0] + offsetVector[0],
1489
+ aKnotenPosition[1] + offsetVector[1]
1490
+ ];
1491
+ const cnCe1Ce2Position = [
1492
+ aKnotenPosition[0] + offsetVector[0] * 2,
1493
+ aKnotenPosition[1] + offsetVector[1] * 2
1494
+ ];
1495
+ const ce2Position = [
1496
+ aKnotenPosition[0] + offsetVector[0] * 3,
1497
+ aKnotenPosition[1] + offsetVector[1] * 3
1498
+ ];
1499
+ let rotationValue = Math.atan2(connectionVector2[1], connectionVector2[0]);
1500
+ rotationValue = ((rotationValue * 180) / Math.PI) + 90;
1501
+ nodePointMap.set(aKnotenSsabNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(aKnotenPosition[0], aKnotenPosition[1], null));
1502
+ nodePointMap.set(aKnotenSsabNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(ce1Position[0], ce1Position[1], rotationValue));
1503
+ nodePointMap.set(inbetweenNodeId, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cnCe1Ce2Position[0], cnCe1Ce2Position[1], null));
1504
+ nodePointMap.set(eKnotenSsabNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(ce2Position[0], ce2Position[1], rotationValue));
1505
+ nodePointMap.set(eKnotenSsabNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(eKnotenPosition[0], eKnotenPosition[1], null));
1506
+ }
1507
+ else {
1508
+ for (const ssabConnectedNode of ssabConnectedNodes) {
1509
+ const idOfSsab = netzSsabsIds.has(ssabConnectedNode.aknoten) ? ssabConnectedNode.aknoten : ssabConnectedNode.eknoten;
1510
+ const leftUpperCornerOfSsab = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.netz_ssab, netzSsabs.find(arg => arg.id === idOfSsab), nsgLKupplung.variantennr);
1511
+ // needed to get the correct behaviour for universal couplings
1512
+ const breakerNode = lkupplungNodes.find(arg => arg.aknoten === ssabConnectedNode.eknoten);
1513
+ if (netzSsabsIds.has(ssabConnectedNode.aknoten) && breakerNode) {
1514
+ // place on 'left' side of the coupling-field (but at the end of the busbar)
1515
+ const sizeOfSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittAnf);
1516
+ let rotationValue;
1517
+ const position = [null, null];
1518
+ const aKnotenPosition = [null, null]; // connectivity node to busbar
1519
+ switch (nsgSchaltanlage.ausrichtung) {
1520
+ case 0: // left to right
1521
+ position[0] = leftUpperCornerOfSsab[0] + (sizeOfSsab) * 16 + 4;
1522
+ position[1] = leftUpperCornerOfSsab[1];
1523
+ rotationValue = 90;
1524
+ aKnotenPosition[0] = leftUpperCornerOfSsab[0] + (sizeOfSsab) * 16;
1525
+ aKnotenPosition[1] = leftUpperCornerOfSsab[1];
1526
+ break;
1527
+ case 1: // top to bottom
1528
+ position[0] = leftUpperCornerOfSsab[0];
1529
+ position[1] = leftUpperCornerOfSsab[1] + (sizeOfSsab) * 16 + 4;
1530
+ rotationValue = 180;
1531
+ aKnotenPosition[0] = leftUpperCornerOfSsab[0];
1532
+ aKnotenPosition[1] = leftUpperCornerOfSsab[1] + (sizeOfSsab) * 16;
1533
+ break;
1534
+ case 2: // right to left
1535
+ position[0] = leftUpperCornerOfSsab[0] - 4;
1536
+ position[1] = leftUpperCornerOfSsab[1];
1537
+ rotationValue = 270;
1538
+ aKnotenPosition[0] = leftUpperCornerOfSsab[0];
1539
+ aKnotenPosition[1] = leftUpperCornerOfSsab[1];
1540
+ break;
1541
+ case 3: // bottom to top
1542
+ position[0] = leftUpperCornerOfSsab[0];
1543
+ position[1] = leftUpperCornerOfSsab[1] - 4;
1544
+ rotationValue = 0;
1545
+ aKnotenPosition[0] = leftUpperCornerOfSsab[0];
1546
+ aKnotenPosition[1] = leftUpperCornerOfSsab[1];
1547
+ break;
1548
+ }
1549
+ nodePointMap.set(ssabConnectedNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1550
+ nodePointMap.set(ssabConnectedNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(aKnotenPosition[0], aKnotenPosition[1], null));
1551
+ }
1552
+ else {
1553
+ // place on 'right' side of the coupling-field (but at the start of the busbar)
1554
+ const sizeOfSsab = yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnittEnd);
1555
+ let rotationValue;
1556
+ const position = [null, null];
1557
+ const eKnotenPosition = [null, null]; // connectivity node to busbar
1558
+ switch (nsgSchaltanlage.ausrichtung) {
1559
+ case 0: // left to right
1560
+ position[0] = leftUpperCornerOfSsab[0] - 4;
1561
+ position[1] = leftUpperCornerOfSsab[1];
1562
+ rotationValue = 90;
1563
+ eKnotenPosition[0] = leftUpperCornerOfSsab[0];
1564
+ eKnotenPosition[1] = leftUpperCornerOfSsab[1];
1565
+ break;
1566
+ case 1: // top to bottom
1567
+ position[0] = leftUpperCornerOfSsab[0];
1568
+ position[1] = leftUpperCornerOfSsab[1] - 4;
1569
+ rotationValue = 180;
1570
+ eKnotenPosition[0] = leftUpperCornerOfSsab[0];
1571
+ eKnotenPosition[1] = leftUpperCornerOfSsab[1];
1572
+ break;
1573
+ case 2: // right to left
1574
+ position[0] = leftUpperCornerOfSsab[0] + (sizeOfSsab) * 16 + 4;
1575
+ position[1] = leftUpperCornerOfSsab[1];
1576
+ rotationValue = 270;
1577
+ eKnotenPosition[0] = leftUpperCornerOfSsab[0] + (sizeOfSsab) * 16;
1578
+ eKnotenPosition[1] = leftUpperCornerOfSsab[1];
1579
+ break;
1580
+ case 3: // bottom to top
1581
+ position[0] = leftUpperCornerOfSsab[0];
1582
+ position[1] = leftUpperCornerOfSsab[1] + (sizeOfSsab) * 16 + 4;
1583
+ rotationValue = 0;
1584
+ eKnotenPosition[0] = leftUpperCornerOfSsab[0];
1585
+ eKnotenPosition[1] = leftUpperCornerOfSsab[1] + (sizeOfSsab) * 16;
1586
+ break;
1587
+ }
1588
+ nodePointMap.set(ssabConnectedNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1589
+ nodePointMap.set(
1590
+ // needed to get the correct behaviour for universal couplings
1591
+ netzSsabsIds.has(ssabConnectedNode.aknoten) ? ssabConnectedNode.aknoten : ssabConnectedNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(eKnotenPosition[0], eKnotenPosition[1], null));
1592
+ }
1593
+ }
1594
+ if (ssabConnectedNodes.length > 2) {
1595
+ // universal-coupling ==> breaker must be placed 'on top' of the coupling
1596
+ const leftUpperCornerOfLKupplung = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsglkupplung, nsgLKupplung);
1597
+ const startSsabConnectedNode = lkupplungNodes.filter(elem => netzSsabsIds.has(elem.aknoten));
1598
+ // if (startSsabConnectedNode.length === 1 && !nodePointMap.has(startSsabConnectedNode[0].eknoten)) {
1599
+ const breakerNode = lkupplungNodes.find(arg => arg.aknoten === startSsabConnectedNode[0].eknoten || arg.eknoten === startSsabConnectedNode[0].eknoten);
1600
+ let rotationValue = null;
1601
+ const breakerPosition = [...leftUpperCornerOfLKupplung];
1602
+ let cn1Position;
1603
+ let cn2Position;
1604
+ switch (nsgSchaltanlage.ausrichtung) {
1605
+ case 0: // left to right
1606
+ rotationValue = 90;
1607
+ breakerPosition[0] += (nsgLKupplung.laenge / 2) * 16;
1608
+ breakerPosition[1] -= 4;
1609
+ cn1Position = [leftUpperCornerOfLKupplung[0] + 4, breakerPosition[1]];
1610
+ cn2Position = [leftUpperCornerOfLKupplung[0] + nsgLKupplung.laenge * 16 - 4, breakerPosition[1]];
1611
+ break;
1612
+ case 1: // top to bottom
1613
+ rotationValue = 180;
1614
+ breakerPosition[0] -= 4;
1615
+ breakerPosition[1] += (nsgLKupplung.laenge / 2) * 16;
1616
+ cn1Position = [breakerPosition[0], leftUpperCornerOfLKupplung[1] + 4];
1617
+ cn2Position = [breakerPosition[0], leftUpperCornerOfLKupplung[1] + nsgLKupplung.laenge * 16 - 4];
1618
+ break;
1619
+ case 2: // right to left
1620
+ rotationValue = 270;
1621
+ breakerPosition[0] += (nsgLKupplung.laenge / 2) * 16;
1622
+ breakerPosition[1] -= 4;
1623
+ cn1Position = [leftUpperCornerOfLKupplung[0] + nsgLKupplung.laenge * 16 - 4, breakerPosition[1]];
1624
+ cn2Position = [leftUpperCornerOfLKupplung[0] + 4, breakerPosition[1]];
1625
+ break;
1626
+ case 3: // bottom to top
1627
+ rotationValue = 0;
1628
+ breakerPosition[0] -= 4;
1629
+ breakerPosition[1] += (nsgLKupplung.laenge / 2) * 16;
1630
+ cn1Position = [breakerPosition[0], leftUpperCornerOfLKupplung[1] + nsgLKupplung.laenge * 16 - 4];
1631
+ cn2Position = [breakerPosition[0], leftUpperCornerOfLKupplung[1] + 4];
1632
+ break;
1633
+ }
1634
+ nodePointMap.set(breakerNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(breakerPosition[0], breakerPosition[1], rotationValue));
1635
+ nodePointMap.set(breakerNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cn1Position[0], cn1Position[1], null));
1636
+ nodePointMap.set(breakerNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cn2Position[0], cn2Position[1], null));
1637
+ }
1638
+ else {
1639
+ const startSsabConnectedNode = lkupplungNodes.filter(elem => netzSsabsIds.has(elem.aknoten));
1640
+ if (startSsabConnectedNode.length === 1 && !nodePointMap.has(startSsabConnectedNode[0].eknoten)) {
1641
+ const centeredNode = lkupplungNodes.find(arg => arg.aknoten === startSsabConnectedNode[0].eknoten);
1642
+ const leftNode = startSsabConnectedNode[0];
1643
+ const rightNode = lkupplungNodes.find(arg => arg.aknoten === centeredNode.eknoten);
1644
+ const position = [null, null];
1645
+ let cn1Position;
1646
+ let cn2Position;
1647
+ switch (nsgSchaltanlage.ausrichtung) {
1648
+ case 0: // left to right
1649
+ cn1Position = nodePointMap.get(leftNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1650
+ cn2Position = nodePointMap.get(rightNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1651
+ cn1Position[0] += 4;
1652
+ cn2Position[0] -= 4;
1653
+ break;
1654
+ case 1: // top to bottom
1655
+ cn1Position = nodePointMap.get(leftNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1656
+ cn2Position = nodePointMap.get(rightNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1657
+ cn1Position[1] += 4;
1658
+ cn2Position[1] -= 4;
1659
+ break;
1660
+ case 2: // right to left
1661
+ cn1Position = nodePointMap.get(leftNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1662
+ cn2Position = nodePointMap.get(rightNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1663
+ cn1Position[0] -= 4;
1664
+ cn2Position[0] += 4;
1665
+ break;
1666
+ case 3: // bottom to top
1667
+ cn1Position = nodePointMap.get(leftNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1668
+ cn2Position = nodePointMap.get(rightNode.id).diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1669
+ cn1Position[1] -= 4;
1670
+ cn2Position[1] += 4;
1671
+ break;
1672
+ }
1673
+ position[0] = (cn1Position[0] + cn2Position[0]) / 2;
1674
+ position[1] = (cn1Position[1] + cn2Position[1]) / 2;
1675
+ let rotationValue = Math.atan2(cn2Position[1] - cn1Position[1], cn2Position[0] - cn1Position[0]);
1676
+ rotationValue = ((rotationValue * 180) / Math.PI) + 90;
1677
+ nodePointMap.set(centeredNode.id, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(position[0], position[1], rotationValue));
1678
+ nodePointMap.set(centeredNode.aknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cn1Position[0], cn1Position[1], null));
1679
+ nodePointMap.set(centeredNode.eknoten, util_functions_1.DLUtilFunctions.createDiagramObjectWithPoint(cn2Position[0], cn2Position[1], null));
1680
+ }
1681
+ }
1682
+ }
1683
+ /* ---------- ---------- ---------- */
1684
+ // BEGIN: Terminal-Export
1685
+ for (const lkupplungNode of lkupplungNodes) {
1686
+ const doBackwardConnectivityNode = nodePointMap.get(lkupplungNode.aknoten);
1687
+ const doConductingEquipment = nodePointMap.get(lkupplungNode.id);
1688
+ const doForwardConnectivityNode = nodePointMap.get(lkupplungNode.eknoten);
1689
+ const dopBackwardConnectivityNode = doBackwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1690
+ const dopsConductingEquipment = doConductingEquipment.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition]);
1691
+ const dopForwardConnectivityNode = doForwardConnectivityNode.diagramObjectPoints.map(arg => [arg.xPosition, arg.yPosition])[0];
1692
+ const backwardTerminalUUID = this.lookupTerminalUUID(lkupplungNode.aknoten, lkupplungNode.id);
1693
+ if (!this.exportedTerminalUUIDs.has(backwardTerminalUUID)) {
1694
+ this.exportedTerminalUUIDs.add(backwardTerminalUUID);
1695
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopBackwardConnectivityNode], [...dopsConductingEquipment[0]]], null);
1696
+ terminalDiagramObject.identifiedObjectUUID = backwardTerminalUUID;
1697
+ resultingDiagramObjects.push(terminalDiagramObject);
1698
+ }
1699
+ const forwardTerminalUUID = this.lookupTerminalUUID(lkupplungNode.eknoten, lkupplungNode.id);
1700
+ if (!this.exportedTerminalUUIDs.has(forwardTerminalUUID)) {
1701
+ this.exportedTerminalUUIDs.add(forwardTerminalUUID);
1702
+ const terminalDiagramObject = util_functions_1.DLUtilFunctions.createDiagramObjectWithPoints([[...dopForwardConnectivityNode], [...dopsConductingEquipment[dopsConductingEquipment.length - 1]]], null);
1703
+ terminalDiagramObject.identifiedObjectUUID = forwardTerminalUUID;
1704
+ resultingDiagramObjects.push(terminalDiagramObject);
1705
+ }
1706
+ }
1707
+ // END: Terminal-Export
1708
+ /* ---------- ---------- ---------- */
1709
+ for (const nodePointEntry of nodePointMap.entries()) {
1710
+ const key = nodePointEntry[0];
1711
+ const value = nodePointEntry[1];
1712
+ const cimObjectUUID = (_b = (_a = this.dbObjectKeyCimModelUuidGraph) === null || _a === void 0 ? void 0 : _a.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: key })) !== null && _b !== void 0 ? _b : undefined;
1713
+ value.identifiedObjectUUID = cimObjectUUID;
1714
+ resultingDiagramObjects.push(value);
1715
+ }
1716
+ return resultingDiagramObjects;
1717
+ });
1718
+ }
1719
+ /* ---------- ---------- ---------- ---------- ---------- */
1720
+ //
1721
+ // utility functions
1722
+ //
1723
+ /* ---------- ---------- ---------- ---------- ---------- */
1724
+ getLeftUpperCornerOfUnspecified(variantennr, id) {
1725
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1726
+ const { type, object } = this.dbObjectGraph.findTypedFirstByKey(convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, {
1727
+ variantennr, id
1728
+ });
1729
+ if (type === convert_graph_keys_1.i7TableNames.nsg_nsgknotenso) {
1730
+ return yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgknotenso, object);
1731
+ }
1732
+ else if (type === convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld) {
1733
+ return yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld, object);
1734
+ }
1735
+ });
1736
+ }
1737
+ getLeftUpperCornerOf(i7ObjectType, object, variantennr) {
1738
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1739
+ if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgknotenso) {
1740
+ const nsgKnotenSo = object;
1741
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgKnotenSo.variantennr, id: nsgKnotenSo.nsgso });
1742
+ if (!nsgStandort)
1743
+ return;
1744
+ return [nsgStandort.xrel + nsgKnotenSo.xrel, nsgStandort.yrel + nsgKnotenSo.yrel];
1745
+ }
1746
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgstandort) {
1747
+ /* ---------- ---------- ---------- */
1748
+ /* NsgStandort */
1749
+ /* ---------- ---------- ---------- */
1750
+ const nsgStandort = object;
1751
+ return [nsgStandort.xrel, nsgStandort.yrel];
1752
+ }
1753
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage) {
1754
+ /* ---------- ---------- ---------- */
1755
+ /* NsgSchaltanlage */
1756
+ /* ---------- ---------- ---------- */
1757
+ const nsgSchaltanlage = object;
1758
+ const nsgStandort = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltanlage.variantennr, id: nsgSchaltanlage.nsgso });
1759
+ if (!nsgStandort)
1760
+ return;
1761
+ const coords = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgstandort, nsgStandort);
1762
+ coords[0] += nsgSchaltanlage.xrel;
1763
+ coords[1] += nsgSchaltanlage.yrel;
1764
+ return coords;
1765
+ }
1766
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt) {
1767
+ /* ---------- ---------- ---------- */
1768
+ /* NsgSaabschnitt */
1769
+ /* ---------- ---------- ---------- */
1770
+ const nsgSaabschnitt = object;
1771
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
1772
+ if (!nsgSchaltanlage)
1773
+ return;
1774
+ // add the i7-offset for a NsgSaabschnitt in x-direction
1775
+ const nsgSaabschnittCoords = [0, 0];
1776
+ nsgSaabschnittCoords[0] += nsgSaabschnitt.nslots * 16;
1777
+ const sizeOfSchaltanlage = yield this.getSizeOfSchaltanlage(nsgSchaltanlage);
1778
+ util_functions_1.DLUtilFunctions.rotatePoint(nsgSaabschnittCoords, -90 * nsgSchaltanlage.ausrichtung);
1779
+ if (nsgSchaltanlage.ausrichtung === 2) {
1780
+ nsgSaabschnittCoords[0] += (sizeOfSchaltanlage - nsgSaabschnitt.laenge) * constants_1.NsgConstants.HORIZONTAL_OFFSET;
1781
+ }
1782
+ else if (nsgSchaltanlage.ausrichtung === 3) {
1783
+ nsgSaabschnittCoords[1] += (sizeOfSchaltanlage - nsgSaabschnitt.laenge) * constants_1.NsgConstants.HORIZONTAL_OFFSET;
1784
+ }
1785
+ const nsgSchaltanlageCoords = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, nsgSchaltanlage);
1786
+ return util_functions_1.DLUtilFunctions.add(nsgSaabschnittCoords, nsgSchaltanlageCoords, nsgSchaltanlage.ausrichtung % 2 === 0 ? [8, 0] : [0, 8]);
1787
+ }
1788
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld || i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld) {
1789
+ /* ---------- ---------- ---------- */
1790
+ /* NsgSchaltfeld or NsgKpfeld */
1791
+ /* ---------- ---------- ---------- */
1792
+ // Important! The difference between a bay and a coupler is the slot-number related offset
1793
+ // the slot-number related offset of the bay must be adjusted by an offset of -8 related to the orientation
1794
+ // the slot-number related offset of the coupler matches exactly
1795
+ const nsgSchaltfeld = object;
1796
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltfeld.variantennr, id: nsgSchaltfeld.nsgsaa });
1797
+ if (!nsgSaabschnitt)
1798
+ return;
1799
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
1800
+ if (nsgSchaltanlage === undefined)
1801
+ return;
1802
+ //
1803
+ // const nsgStandort = await this.dbObjectGraph.findObjectByKey(i7TableNames.nsg_nsgstandort,
1804
+ // i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSchaltanlage.variantennr, id: nsgSchaltanlage.nsgso }
1805
+ // );
1806
+ // if (!nsgStandort) return;
1807
+ const leftUpperCornerOfNsgSaabschnitt = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, nsgSaabschnitt);
1808
+ let orientation = nsgSchaltanlage.ausrichtung;
1809
+ if (nsgSchaltfeld.deltaausrichtung === 1) {
1810
+ orientation = (orientation + 2) % 4;
1811
+ }
1812
+ let position = [...leftUpperCornerOfNsgSaabschnitt];
1813
+ let schaltfeldOffset;
1814
+ switch (nsgSchaltanlage.ausrichtung) {
1815
+ case 0:
1816
+ case 1:
1817
+ schaltfeldOffset = nsgSchaltfeld.slotnummer * 16;
1818
+ break;
1819
+ case 2:
1820
+ case 3:
1821
+ schaltfeldOffset = (nsgSaabschnitt.laenge - nsgSchaltfeld.slotnummer - 1) * 16;
1822
+ if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld)
1823
+ schaltfeldOffset -= 16;
1824
+ break;
1825
+ }
1826
+ const maxSsabPos = yield this.getMaxPosOfSaabschnitt(nsgSaabschnitt);
1827
+ switch (orientation) {
1828
+ case 0: // TOP
1829
+ position[0] += (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld) ? schaltfeldOffset : schaltfeldOffset - 8;
1830
+ position[1] -= nsgSchaltfeld.hoehe - ((maxSsabPos + 1) * 8);
1831
+ break;
1832
+ case 1: // RIGHT
1833
+ position[1] += (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld) ? schaltfeldOffset : schaltfeldOffset - 8;
1834
+ break;
1835
+ case 2: // BOTTOM
1836
+ position[0] += (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld) ? schaltfeldOffset : schaltfeldOffset - 8;
1837
+ break;
1838
+ case 3: // LEFT
1839
+ position[0] -= nsgSchaltfeld.hoehe - ((maxSsabPos + 1) * 8);
1840
+ position[1] += (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld) ? schaltfeldOffset : schaltfeldOffset - 8;
1841
+ break;
1842
+ }
1843
+ return position;
1844
+ }
1845
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.nsg_nsglkupplung) {
1846
+ /* ---------- ---------- ---------- */
1847
+ /* NsgLKupplung */
1848
+ /* ---------- ---------- ---------- */
1849
+ const nsgLKupplung = object;
1850
+ const nsgSaabschnitt = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgLKupplung.variantennr, id: nsgLKupplung.nsgsaa });
1851
+ if (!nsgSaabschnitt)
1852
+ return;
1853
+ const leftUpperCornerOfNsgSaabschnitt = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, nsgSaabschnitt);
1854
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
1855
+ if (nsgSchaltanlage === undefined)
1856
+ return;
1857
+ let position = [...leftUpperCornerOfNsgSaabschnitt];
1858
+ switch (nsgSchaltanlage.ausrichtung) {
1859
+ case 0: // left-to-right
1860
+ position[0] -= nsgLKupplung.laenge * 16;
1861
+ break;
1862
+ case 1: // top-to-bottom
1863
+ position[1] -= nsgLKupplung.laenge * 16;
1864
+ break;
1865
+ case 2: // right-to-left
1866
+ position[0] += (yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnitt)) * 16;
1867
+ break;
1868
+ case 3: // bottom-to-top
1869
+ position[1] += (yield this.getLengthOfSammelschienenAbschnitt(nsgSaabschnitt)) * 16;
1870
+ break;
1871
+ }
1872
+ return position;
1873
+ }
1874
+ else if (i7ObjectType === convert_graph_keys_1.i7TableNames.netz_ssab) {
1875
+ /* ---------- ---------- ---------- */
1876
+ /* NetzSsab */
1877
+ /* ---------- ---------- ---------- */
1878
+ const netzSsab = object;
1879
+ const nsgSaabschnitt = yield this.dbObjectGraph.findFirstByAttributes(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, { variantennr, saabschnitt: netzSsab.saabschnitt });
1880
+ if (nsgSaabschnitt === undefined)
1881
+ return;
1882
+ const nsgSchaltanlage = yield this.dbObjectGraph.findObjectByKey(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, convert_graph_keys_1.i7SchemaKeyNames.VariantenNrIdKey, { variantennr: nsgSaabschnitt.variantennr, id: nsgSaabschnitt.nsgsa });
1883
+ if (!nsgSchaltanlage)
1884
+ return;
1885
+ // add the i7-offset for a NsgSaabschnitt in x-direction
1886
+ const nsgSaabschnittCoords = [0, 0];
1887
+ nsgSaabschnittCoords[0] += nsgSaabschnitt.nslots * 16;
1888
+ const sizeOfSchaltanlage = yield this.getSizeOfSchaltanlage(nsgSchaltanlage);
1889
+ util_functions_1.DLUtilFunctions.rotatePoint(nsgSaabschnittCoords, -90 * nsgSchaltanlage.ausrichtung);
1890
+ if (nsgSchaltanlage.ausrichtung === 0) {
1891
+ nsgSaabschnittCoords[1] += 4 + netzSsab.pos * 8;
1892
+ // const maxSsabPos = await this.getMaxPosOfSaabschnitt(nsgSaabschnitt);
1893
+ // nsgSaabschnittCoords[0] += 4 + ((maxSsabPos - netzSsab.pos) * 8);
1894
+ }
1895
+ else if (nsgSchaltanlage.ausrichtung === 1) {
1896
+ const maxSsabPos = yield this.getMaxPosOfSaabschnitt(nsgSaabschnitt);
1897
+ nsgSaabschnittCoords[0] += 4 + ((maxSsabPos - netzSsab.pos) * 8);
1898
+ }
1899
+ else if (nsgSchaltanlage.ausrichtung === 2) {
1900
+ const maxSsabPos = yield this.getMaxPosOfSaabschnitt(nsgSaabschnitt);
1901
+ nsgSaabschnittCoords[1] += 4 + ((maxSsabPos - netzSsab.pos) * 8);
1902
+ nsgSaabschnittCoords[0] += (sizeOfSchaltanlage - nsgSaabschnitt.laenge) * constants_1.NsgConstants.HORIZONTAL_OFFSET;
1903
+ }
1904
+ else if (nsgSchaltanlage.ausrichtung === 3) {
1905
+ nsgSaabschnittCoords[0] += 4 + netzSsab.pos * 8;
1906
+ nsgSaabschnittCoords[1] += (sizeOfSchaltanlage - nsgSaabschnitt.laenge) * constants_1.NsgConstants.HORIZONTAL_OFFSET;
1907
+ }
1908
+ const nsgSchaltanlageCoords = yield this.getLeftUpperCornerOf(convert_graph_keys_1.i7TableNames.nsg_nsgschaltanlage, nsgSchaltanlage);
1909
+ return util_functions_1.DLUtilFunctions.add(nsgSaabschnittCoords, nsgSchaltanlageCoords, nsgSchaltanlage.ausrichtung % 2 === 0 ? [8, 0] : [0, 8]);
1910
+ }
1911
+ return [undefined, undefined];
1912
+ });
1913
+ }
1914
+ getNodesOfSchaltfeld(arg) {
1915
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1916
+ return yield this.dbObjectGraph.findAllByAttributes([
1917
+ convert_graph_keys_1.i7TableNames.netz_leistungsschalter,
1918
+ convert_graph_keys_1.i7TableNames.netz_trenner3p,
1919
+ convert_graph_keys_1.i7TableNames.netz_trennerfi3p,
1920
+ convert_graph_keys_1.i7TableNames.netz_sestarr3p
1921
+ ], { seliste: arg.schaltfeld });
1922
+ });
1923
+ }
1924
+ getNodesOfKpfeld(arg) {
1925
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1926
+ return yield this.dbObjectGraph.findAllByAttributes([
1927
+ convert_graph_keys_1.i7TableNames.netz_leistungsschalter,
1928
+ convert_graph_keys_1.i7TableNames.netz_trenner3p,
1929
+ convert_graph_keys_1.i7TableNames.netz_trennerfi3p,
1930
+ convert_graph_keys_1.i7TableNames.netz_sestarr3p
1931
+ ], { seliste: arg.kpfeld });
1932
+ });
1933
+ }
1934
+ getNodesOfLKupplung(arg) {
1935
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1936
+ return yield this.dbObjectGraph.findAllByAttributes([
1937
+ convert_graph_keys_1.i7TableNames.netz_leistungsschalter,
1938
+ convert_graph_keys_1.i7TableNames.netz_trenner3p,
1939
+ convert_graph_keys_1.i7TableNames.netz_trennerfi3p,
1940
+ convert_graph_keys_1.i7TableNames.netz_sestarr3p
1941
+ ], { seliste: arg.id });
1942
+ });
1943
+ }
1944
+ /** */
1945
+ getSizeOfSchaltanlage(arg) {
1946
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1947
+ let sizeOfSchaltanlage = 0;
1948
+ const nsgSaabschnitte = yield this.dbObjectGraph.findAllByAttributes(convert_graph_keys_1.i7TableNames.nsg_nsgsaabschnitt, {
1949
+ variantennr: arg.variantennr, nsgsa: arg.id
1950
+ });
1951
+ for (const tempNsgSaab of nsgSaabschnitte) {
1952
+ sizeOfSchaltanlage = sizeOfSchaltanlage < (tempNsgSaab.nslots + tempNsgSaab.laenge) ? (tempNsgSaab.nslots + tempNsgSaab.laenge) : sizeOfSchaltanlage;
1953
+ }
1954
+ return sizeOfSchaltanlage;
1955
+ });
1956
+ }
1957
+ getMaxPosOfSaabschnitt(nsgSaabschnitt) {
1958
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1959
+ const netzSsabs = yield this.dbObjectGraph.findAllByAttributes(convert_graph_keys_1.i7TableNames.netz_ssab, {
1960
+ saabschnitt: nsgSaabschnitt.saabschnitt
1961
+ });
1962
+ let maxSsabPos = netzSsabs[0].pos;
1963
+ for (let a = 1; a < netzSsabs.length; ++a) {
1964
+ if (netzSsabs[a].pos > maxSsabPos)
1965
+ maxSsabPos = netzSsabs[a].pos;
1966
+ }
1967
+ return maxSsabPos;
1968
+ });
1969
+ }
1970
+ getLengthOfSammelschienenAbschnitt(nsgSaab) {
1971
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1972
+ const maxLengthOfKuppelfeld = yield this.getMaxLengthOfKuppelfeld({
1973
+ id: nsgSaab.id,
1974
+ variantennr: nsgSaab.variantennr
1975
+ });
1976
+ const maxLengthOfSchaltfeld = yield this.getMaxLengthOfSchaltfeld({
1977
+ id: nsgSaab.id,
1978
+ variantennr: nsgSaab.variantennr
1979
+ });
1980
+ return Math.max(maxLengthOfKuppelfeld, maxLengthOfSchaltfeld, nsgSaab.laenge);
1981
+ });
1982
+ }
1983
+ getMaxLengthOfKuppelfeld(schaltanlagenabschnittKey) {
1984
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1985
+ const nsgKpFelder = (yield this.dbObjectGraph.getAllObjectsOfTable(convert_graph_keys_1.i7TableNames.nsg_nsgkpfeld)).filter(nsgKpFeld => nsgKpFeld.nsgsaa === schaltanlagenabschnittKey.id
1986
+ && nsgKpFeld.variantennr === schaltanlagenabschnittKey.variantennr
1987
+ && (nsgKpFeld.eingeblendet === 1 || (nsgKpFeld.eingeblendet === null && nsgKpFeld.angezeigt === 1)));
1988
+ let nsgKpFeldMaxSlotnummer = nsgKpFelder.length > 0 ? nsgKpFelder[0].slotnummer : undefined;
1989
+ for (let a = 1; a < nsgKpFelder.length; ++a) {
1990
+ const nsgKpFeld = nsgKpFelder[a];
1991
+ if (nsgKpFeldMaxSlotnummer < nsgKpFeld.slotnummer) {
1992
+ nsgKpFeldMaxSlotnummer = nsgKpFeld.slotnummer;
1993
+ }
1994
+ }
1995
+ return nsgKpFeldMaxSlotnummer ? nsgKpFeldMaxSlotnummer + 1 : 0;
1996
+ });
1997
+ }
1998
+ getMaxLengthOfSchaltfeld(schaltanlagenabschnittKey) {
1999
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
2000
+ const nsgSchaltfelder = (yield this.dbObjectGraph.getAllObjectsOfTable(convert_graph_keys_1.i7TableNames.nsg_nsgschaltfeld)).filter(nsgSchaltfeld => nsgSchaltfeld.nsgsaa === schaltanlagenabschnittKey.id
2001
+ && nsgSchaltfeld.variantennr === schaltanlagenabschnittKey.variantennr
2002
+ && (nsgSchaltfeld.eingeblendet === 1 || (nsgSchaltfeld.eingeblendet === null && nsgSchaltfeld.angezeigt === 1)));
2003
+ let nsgSchaltfeldMaxSlotnummer = nsgSchaltfelder.length > 0 ? nsgSchaltfelder[0].slotnummer : undefined;
2004
+ for (let a = 1; a < nsgSchaltfelder.length; ++a) {
2005
+ const nsgSchaltfeld = nsgSchaltfelder[a];
2006
+ if (nsgSchaltfeldMaxSlotnummer < nsgSchaltfeld.slotnummer) {
2007
+ nsgSchaltfeldMaxSlotnummer = nsgSchaltfeld.slotnummer;
2008
+ }
2009
+ }
2010
+ return nsgSchaltfeldMaxSlotnummer ? nsgSchaltfeldMaxSlotnummer + 1 : 0;
2011
+ });
2012
+ }
2013
+ lookupTerminalUUID(connectivityNodeI7ID, conductingEquipmentI7ID) {
2014
+ if (DLConverterI7.testmode) {
2015
+ return common_utils_1.CommonUtils.generateUUID();
2016
+ }
2017
+ const connectivityNodeUUID = this.dbObjectKeyCimModelUuidGraph.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: connectivityNodeI7ID });
2018
+ const conductingEquipmentUUID = this.dbObjectKeyCimModelUuidGraph.getCimObjectIdFromDbKey(convert_graph_keys_1.i7SchemaKeyNames.IdOnlyKey, { id: conductingEquipmentI7ID });
2019
+ if (!connectivityNodeUUID || !conductingEquipmentUUID) {
2020
+ return null;
2021
+ }
2022
+ const connectivityNode = this.cimModelGraph.findObjectByUUID(connectivityNodeUUID);
2023
+ // const conductingEquipment = this.cimModelGraph.findObjectByUUID(conductingEquipmentUUID) as ConductingEquipment;
2024
+ // if (!connectivityNode || !conductingEquipment) return null;
2025
+ if (!connectivityNode)
2026
+ return null;
2027
+ const cnTerminals = [...connectivityNode.terminals.values()];
2028
+ for (const cnTerminal of cnTerminals) {
2029
+ if (cnTerminal.getConductingEquipmentUUID() === conductingEquipmentUUID) {
2030
+ const terminalUUID = cnTerminal.getUUID();
2031
+ return terminalUUID !== undefined ? terminalUUID : null;
2032
+ }
2033
+ }
2034
+ return null;
2035
+ }
2036
+ }
2037
+ exports.DLConverterI7 = DLConverterI7;
2038
+ DLConverterI7.testmode = false;
2039
+ //# sourceMappingURL=dl-converter-i7-2.js.map