architwin 1.14.16 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/architwin.d.ts +13 -2
- package/lib/architwin.js +1 -1
- package/lib/atwinui/components/toolbar/i18n.js +71 -3
- package/lib/atwinui/components/toolbar/index.js +5 -1
- package/lib/atwinui/components/toolbar/menuBar.d.ts +1 -0
- package/lib/atwinui/components/toolbar/menuBar.js +12 -0
- package/lib/atwinui/components/toolbar/spacePartition/roomFormPane.d.ts +2 -0
- package/lib/atwinui/components/toolbar/spacePartition/roomFormPane.js +41 -12
- package/lib/atwinui/components/toolbar/spacePartition/roomTreePane.d.ts +21 -2
- package/lib/atwinui/components/toolbar/spacePartition/roomTreePane.js +32 -12
- package/lib/atwinui/components/toolbar/tagFormPane.js +2 -1
- package/lib/atwinui/components/toolbar/tagListPane.d.ts +7 -2
- package/lib/atwinui/components/toolbar/tagListPane.js +126 -38
- package/lib/atwinui/events.d.ts +3 -1
- package/lib/atwinui/events.js +629 -107
- package/lib/atwinui/index.js +9 -1
- package/lib/color.js +12 -1
- package/lib/loaders/polydrawerLoader.js +3 -0
- package/lib/types.d.ts +75 -1
- package/lib/types.js +17 -0
- package/package.json +1 -1
- package/static/atwinui.css +55 -7
- package/static/colors/SOFT_ROYAL_BLUE.png +0 -0
- package/static/colors/YELLOW_ORANGE.png +0 -0
- package/static/utility.css +156 -537
- package/lib/atwinui/components/toolbar/roomCreation/roomFormPane.d.ts +0 -68
- package/lib/atwinui/components/toolbar/roomCreation/roomFormPane.js +0 -798
- package/lib/atwinui/components/toolbar/roomCreation/roomLayerListPane.d.ts +0 -33
- package/lib/atwinui/components/toolbar/roomCreation/roomLayerListPane.js +0 -447
- package/lib/atwinui/components/toolbar/tagIotForm.d.ts +0 -20
- package/lib/atwinui/components/toolbar/tagIotForm.js +0 -391
- package/lib/atwinui/components/toolbar/usersPane.d.ts +0 -14
- package/lib/atwinui/components/toolbar/usersPane.js +0 -273
- package/lib/convert.d.ts +0 -13
- package/lib/convert.js +0 -54
|
@@ -167,6 +167,40 @@ i18n
|
|
|
167
167
|
"RotateMinimap": "Rotate Minimap",
|
|
168
168
|
"General Settings": "General Settings",
|
|
169
169
|
"UploadImage": "Upload Image",
|
|
170
|
+
"IoTTags": "IoT Tags",
|
|
171
|
+
"AddIoTTag": "Add IoT Tag",
|
|
172
|
+
"LinkedSystems": "Linked Systems",
|
|
173
|
+
"BEMAC": "BEMAC",
|
|
174
|
+
"HANASYS": "HANASYS",
|
|
175
|
+
"URLLink": "URL Link",
|
|
176
|
+
"ModelName": "Model Name",
|
|
177
|
+
"SerialNumber": "Serial Number",
|
|
178
|
+
"ManufacturerSite": "Manufacturer Site",
|
|
179
|
+
"IoTDevices": "IoT Devices",
|
|
180
|
+
"SelectDevice": "Select Device",
|
|
181
|
+
"SystemLink": "System Link",
|
|
182
|
+
"LinkedIoTDevices": "Linked IoT Devices",
|
|
183
|
+
"Power": "Power",
|
|
184
|
+
"Temperature": "Temperature",
|
|
185
|
+
"Humidity": "Humidity",
|
|
186
|
+
"Pressure": "Pressure",
|
|
187
|
+
"Proximity": "Proximity",
|
|
188
|
+
"Fluid": "Fluid",
|
|
189
|
+
"Light": "Light",
|
|
190
|
+
"Gas": "Gas",
|
|
191
|
+
"Chemical": "Chemical",
|
|
192
|
+
"Submeter": "Submeter",
|
|
193
|
+
"Frequency": "Frequency",
|
|
194
|
+
"DeleteDevice": "Delete Device",
|
|
195
|
+
"ConfirmDeleteDevice": "Are you sure you want to delete this device? This action cannot be reversed",
|
|
196
|
+
"SuccessDeleteDevice": "Successfully deleted device",
|
|
197
|
+
"URL Link": "URL Link",
|
|
198
|
+
"Model Name": "Model Name",
|
|
199
|
+
"Serial Number": "Serial Number",
|
|
200
|
+
"Manufacturer Site": "Manufacturer Site",
|
|
201
|
+
"Select Device": "Select Device",
|
|
202
|
+
"System Link": "System Link",
|
|
203
|
+
"EditIoTTag": "Edit IoT Tag",
|
|
170
204
|
"Unsend": "Unsend",
|
|
171
205
|
"Pipes": "Pipes",
|
|
172
206
|
"SelectPipeType": "Select Pipe Type",
|
|
@@ -234,8 +268,11 @@ i18n
|
|
|
234
268
|
"SuccessWindowDelete": "Succesfully deleted window",
|
|
235
269
|
"EnterFloorMaterial": "Enter floor material",
|
|
236
270
|
"EnterWallMaterial": "Enter wall material",
|
|
271
|
+
"PressEscCancelRelocation": "Press Esc key to cancel relocation.",
|
|
272
|
+
"MoveTagCancelled": "Move Tag Cancelled",
|
|
237
273
|
"Window": "Window",
|
|
238
|
-
"CannotBackDrawingMode": "Cannot go back while drawing mode is active."
|
|
274
|
+
"CannotBackDrawingMode": "Cannot go back while drawing mode is active.",
|
|
275
|
+
"PleaseOffDrawingMode": "Action cannot be done, please turn off drawing mode."
|
|
239
276
|
}
|
|
240
277
|
},
|
|
241
278
|
ja: {
|
|
@@ -320,7 +357,7 @@ i18n
|
|
|
320
357
|
"EditRoom": "ルーム編集",
|
|
321
358
|
"Memo": "メモ",
|
|
322
359
|
"WallHeight": "高さ",
|
|
323
|
-
"AddPartition": "
|
|
360
|
+
"AddPartition": "区画追加",
|
|
324
361
|
"DeleteRoom": "ルーム削除",
|
|
325
362
|
"DoneDrawing": "描画完了",
|
|
326
363
|
"NoPartitionDisplay": "表示する区画がありません",
|
|
@@ -402,6 +439,34 @@ i18n
|
|
|
402
439
|
"RotateMinimap": "画像回転",
|
|
403
440
|
"Search...": "検索...",
|
|
404
441
|
"UploadImage": "画像をアップロード",
|
|
442
|
+
"IoTTags": "IoTタグ",
|
|
443
|
+
"AddIoTTag": "IoTタグの追加",
|
|
444
|
+
"LinkedSystems": "連携方式",
|
|
445
|
+
"BEMAC": "BEMAC",
|
|
446
|
+
"HANASYS": "HANASYS",
|
|
447
|
+
"URLLink": "URLリンク",
|
|
448
|
+
"ModelName": "機器名",
|
|
449
|
+
"SerialNumber": "シリアルナンバー",
|
|
450
|
+
"ManufacturerSite": "メーカーURL",
|
|
451
|
+
"IoTDevices": "IoT情報",
|
|
452
|
+
"SelectDevice": "IoT選択",
|
|
453
|
+
"SystemLink": "システムリンク",
|
|
454
|
+
"LinkedIoTDevices": "設定済みIoT",
|
|
455
|
+
"EditIoTTag": "IoTタグ編集",
|
|
456
|
+
"Power": "電力",
|
|
457
|
+
"Temperature": "温度",
|
|
458
|
+
"Humidity": "湿度",
|
|
459
|
+
"Pressure": "圧力",
|
|
460
|
+
"Proximity": "近接",
|
|
461
|
+
"Fluid": "流体",
|
|
462
|
+
"Light": "光",
|
|
463
|
+
"Gas": "ガス",
|
|
464
|
+
"Chemical": "化学物質",
|
|
465
|
+
"Submeter": "サブメーター",
|
|
466
|
+
"Frequency": "周波数",
|
|
467
|
+
"DeleteDevice": "デバイス削除",
|
|
468
|
+
"ConfirmDeleteDevice": "この操作は元に戻せません。このデバイスを削除しますか?",
|
|
469
|
+
"SuccessDeleteDevice": "デバイスを削除しました",
|
|
405
470
|
"Unsend": "取り消し",
|
|
406
471
|
"Pipes": "矢印マーカー",
|
|
407
472
|
"SelectPipeType": "矢印マーカー種別選択",
|
|
@@ -469,8 +534,11 @@ i18n
|
|
|
469
534
|
"SuccessWindowDelete": "建具の削除が完了しました",
|
|
470
535
|
"EnterFloorMaterial": "仕上げ(床)を入力",
|
|
471
536
|
"EnterWallMaterial": "仕上げ(壁)を入力",
|
|
537
|
+
"MoveTagCancelled": "タグの移動がキャンセルされました",
|
|
538
|
+
"PressEscCancelRelocation": "再配置をキャンセルするには、Esc キーを押します。",
|
|
472
539
|
"Window": "建具",
|
|
473
|
-
"CannotBackDrawingMode": "描画モードがアクティブな間は戻ることができません。"
|
|
540
|
+
"CannotBackDrawingMode": "描画モードがアクティブな間は戻ることができません。",
|
|
541
|
+
"PleaseOffDrawingMode": "操作を行う前に、描画モードをオフにしてください。"
|
|
474
542
|
}
|
|
475
543
|
}
|
|
476
544
|
},
|
|
@@ -25,13 +25,14 @@ import { renderRoomTreePane } from "./spacePartition/roomTreePane";
|
|
|
25
25
|
import { renderRoomFormPane } from "./spacePartition/roomFormPane";
|
|
26
26
|
import { renderBasepointCalibratePane } from "./basepointCalibratePane";
|
|
27
27
|
import { renderGeneralSettingsMenu } from "./generalSettingsMenuPane";
|
|
28
|
+
import { renderTagIOTFormPane } from './tagIotFormPane';
|
|
28
29
|
import { renderScreenSharePane } from "./screenSharePane";
|
|
29
30
|
import { PipeList } from "./pipeListPane";
|
|
30
31
|
import { PipeForm } from "./pipeFormPane";
|
|
31
32
|
const pipeList = new PipeList();
|
|
32
33
|
const pipeForm = new PipeForm();
|
|
33
34
|
let iFrame, sidebarContainer;
|
|
34
|
-
let menuBar, actionBar, objectListPane, addObjectPane, tagListPane, tagFormPane, addMediaScreenForm, libraryPane, tagMessagingPane, themePane, modelControlPane, actionSettingsPane, roomTreePane, roomFormPane, basepointCalibratePane, generalSettingsPane, spaceUserListPane, viewingRemoteSpace, usersPane, pipeListPane, pipeFormPane;
|
|
35
|
+
let menuBar, actionBar, objectListPane, addObjectPane, tagListPane, tagFormPane, addMediaScreenForm, libraryPane, tagMessagingPane, themePane, modelControlPane, actionSettingsPane, roomTreePane, roomFormPane, basepointCalibratePane, generalSettingsPane, tagIotFormPane, spaceUserListPane, viewingRemoteSpace, usersPane, pipeListPane, pipeFormPane;
|
|
35
36
|
function getIframeElement(iframeId) {
|
|
36
37
|
if (!iframeId || iframeId === '') {
|
|
37
38
|
console.error("IframeId is empty or undefined");
|
|
@@ -102,6 +103,7 @@ function renderToolbarUI(payload) {
|
|
|
102
103
|
actionSettingsPane = renderActionSettingsPane();
|
|
103
104
|
basepointCalibratePane = renderBasepointCalibratePane();
|
|
104
105
|
generalSettingsPane = renderGeneralSettingsMenu();
|
|
106
|
+
tagIotFormPane = renderTagIOTFormPane();
|
|
105
107
|
usersPane = renderScreenSharePane();
|
|
106
108
|
pipeListPane = pipeList.renderPane();
|
|
107
109
|
pipeFormPane = pipeForm.renderPane();
|
|
@@ -123,6 +125,7 @@ function renderToolbarUI(payload) {
|
|
|
123
125
|
sidebarContainer.appendChild(tagListPane);
|
|
124
126
|
sidebarContainer.appendChild(addMediaScreenForm);
|
|
125
127
|
sidebarContainer.appendChild(generalSettingsPane);
|
|
128
|
+
sidebarContainer.appendChild(tagIotFormPane);
|
|
126
129
|
sidebarContainer.appendChild(usersPane);
|
|
127
130
|
sidebarContainer.appendChild(pipeListPane);
|
|
128
131
|
sidebarContainer.appendChild(pipeFormPane);
|
|
@@ -146,6 +149,7 @@ function renderToolbarUI(payload) {
|
|
|
146
149
|
roomFormPane.style.display = 'none';
|
|
147
150
|
actionSettingsPane.style.display = 'none';
|
|
148
151
|
generalSettingsPane.style.display = 'none';
|
|
152
|
+
tagIotFormPane.style.display = 'none';
|
|
149
153
|
spaceUserListPane.style.display = 'none';
|
|
150
154
|
viewingRemoteSpace.style.display = 'none';
|
|
151
155
|
usersPane.style.display = 'none';
|
|
@@ -5,6 +5,7 @@ export declare let isThemeEnabled: boolean;
|
|
|
5
5
|
export declare let isRoomCreationEnabled: boolean;
|
|
6
6
|
export declare let isBIMEnabled: boolean;
|
|
7
7
|
export declare let isGeneralSettingsEnabled: boolean;
|
|
8
|
+
export declare let isIoTTagEnabled: boolean;
|
|
8
9
|
export declare let isSpaceScreenSharingEnabled: boolean;
|
|
9
10
|
export declare let isPipeEnabled: boolean;
|
|
10
11
|
export declare function renderMenuBar(iFrame: HTMLIFrameElement): HTMLDivElement;
|
|
@@ -12,6 +12,7 @@ export let isThemeEnabled = true;
|
|
|
12
12
|
export let isRoomCreationEnabled = true;
|
|
13
13
|
export let isBIMEnabled = true;
|
|
14
14
|
export let isGeneralSettingsEnabled = true;
|
|
15
|
+
export let isIoTTagEnabled = true;
|
|
15
16
|
export let isSpaceScreenSharingEnabled = false;
|
|
16
17
|
export let isPipeEnabled = true;
|
|
17
18
|
export function renderMenuBar(iFrame) {
|
|
@@ -47,6 +48,10 @@ export function renderMenuBar(iFrame) {
|
|
|
47
48
|
<span class="mdi mdi-monitor-screenshot" id="at-screenshot-btn" data-cy="at-screenshot-btn"></span>
|
|
48
49
|
<div class="at_icon_tooltip" data-cy="at-tooltip-screenshot">${i18n.t('Screenshot')}</div>
|
|
49
50
|
</div>
|
|
51
|
+
<div class="at_sidebar_button_icon" style="display:${isIoTTagEnabled ? 'block' : 'none'}">
|
|
52
|
+
<span class="mdi mdi-apache-kafka" id="at-tag-iot-btn" data-cy="at-tag-iot-btn" target-pane="at-tag-list-pane"></span>
|
|
53
|
+
<div class="at_icon_tooltip" data-cy="at-tooltip-tag-iot-list">${i18n.t('IoTTags')}</div>
|
|
54
|
+
</div>
|
|
50
55
|
<div class="at_sidebar_button_icon" style="display:${isPipeEnabled ? 'block' : 'none'}">
|
|
51
56
|
<span class="mdi mdi-arrow-decision" id="at-pipe-btn" data-cy="at-pipe-btn" target-pane="at-pipe-list-pane"></span>
|
|
52
57
|
<div class="at_icon_tooltip" data-cy="at-tooltip-pipe">${i18n.t('Pipes')}</div>
|
|
@@ -79,6 +84,7 @@ export function renderMenuBar(iFrame) {
|
|
|
79
84
|
* based on the configuration specified in the _mpConfig object.
|
|
80
85
|
*/
|
|
81
86
|
function setMenuItemsStatus() {
|
|
87
|
+
var _a, _b, _c, _d;
|
|
82
88
|
const toolbarConfig = _mpConfig.toolbarConfig;
|
|
83
89
|
const menuItems = _mpConfig.toolbarConfig.menuItems;
|
|
84
90
|
console.log("menuItems", menuItems);
|
|
@@ -113,6 +119,11 @@ function setMenuItemsStatus() {
|
|
|
113
119
|
isGeneralSettingsEnabled = _mpConfig.toolbarConfig.menuItems.generalSetting;
|
|
114
120
|
log.info("__@ isGeneralSettingsEnabled: ", isGeneralSettingsEnabled);
|
|
115
121
|
}
|
|
122
|
+
// IOT TAGS
|
|
123
|
+
if (((_a = menuItems === null || menuItems === void 0 ? void 0 : menuItems.iot) === null || _a === void 0 ? void 0 : _a.visible) !== undefined) {
|
|
124
|
+
isIoTTagEnabled = (_d = (_c = (_b = _mpConfig === null || _mpConfig === void 0 ? void 0 : _mpConfig.toolbarConfig) === null || _b === void 0 ? void 0 : _b.menuItems) === null || _c === void 0 ? void 0 : _c.iot) === null || _d === void 0 ? void 0 : _d.visible;
|
|
125
|
+
log.info("__@ isTagIoTFormEnabled: ", isIoTTagEnabled);
|
|
126
|
+
}
|
|
116
127
|
// SCREEN SHARING
|
|
117
128
|
if (menuItems.spaceScreenSharing !== undefined) {
|
|
118
129
|
isSpaceScreenSharingEnabled = _mpConfig.toolbarConfig.menuItems.spaceScreenSharing;
|
|
@@ -145,6 +156,7 @@ export function setActiveMenu(id) {
|
|
|
145
156
|
case 'at-room-creation-btn':
|
|
146
157
|
case 'at-settings-btn':
|
|
147
158
|
case 'at-general-setting-btn':
|
|
159
|
+
case 'at-tag-iot-btn':
|
|
148
160
|
case 'at-pipe-btn':
|
|
149
161
|
case 'at-screen-share-btn':
|
|
150
162
|
if (parent.classList.contains('at_sidebar_button_icon_active')) {
|
|
@@ -116,3 +116,5 @@ export declare function setPreviousPartitionData(payload: PartitionNode): void;
|
|
|
116
116
|
* @param wallUuid - The unique identifier of the wall to edit
|
|
117
117
|
*/
|
|
118
118
|
export declare function handlePartitionWallEditBtn(wallUuid: string): Promise<void>;
|
|
119
|
+
export declare function getTempCurrentRoomEditData(): Array<PartitionNode>;
|
|
120
|
+
export declare function setTempCurrentRoomEditData(roomEditData: Array<PartitionNode>): void;
|
|
@@ -43,12 +43,12 @@ let inputWallMaterial;
|
|
|
43
43
|
let wallMaterial = '';
|
|
44
44
|
let isEditWindow = false;
|
|
45
45
|
let currentEditWindowIndex = null;
|
|
46
|
-
let
|
|
46
|
+
let tempCurrentEditRoom = null;
|
|
47
47
|
export function renderRoomFormPane() {
|
|
48
48
|
log.info("__@ renderRoomFormPane: ", roomFormMode);
|
|
49
49
|
const element = document.createElement('div');
|
|
50
50
|
element.classList.add('at_container');
|
|
51
|
-
element.classList.add('at_w-
|
|
51
|
+
element.classList.add('at_w-15');
|
|
52
52
|
element.classList.add('at_h-full');
|
|
53
53
|
element.setAttribute('id', 'at-room-form-pane');
|
|
54
54
|
element.setAttribute('data-cy', 'at-room-form-pane');
|
|
@@ -155,13 +155,13 @@ export function renderRoomFormPane() {
|
|
|
155
155
|
</div>
|
|
156
156
|
<div class="at_partition_footer">
|
|
157
157
|
<!-- Add Partition Button -->
|
|
158
|
-
<div class="at_button at_draw_partition_btn
|
|
158
|
+
<div class="at_button at_draw_partition_btn"
|
|
159
159
|
id="at-draw-partition-form-btn" data-cy="at-draw-partition-form-btn">
|
|
160
160
|
${i18n.t('AddPartition')}
|
|
161
161
|
<span class="mdi mdi-draw"></span>
|
|
162
162
|
</div>
|
|
163
163
|
|
|
164
|
-
<div class="at_button at_add_window_door_btn
|
|
164
|
+
<div class="at_button at_add_window_door_btn"
|
|
165
165
|
id="at-add-window-door-btn" data-cy="at-add-window-door-btn" style="display:none;">
|
|
166
166
|
${i18n.t('AddWindowDoor')}
|
|
167
167
|
<span class="mdi mdi-window-closed-variant"></span>
|
|
@@ -280,14 +280,24 @@ export function toggleDrawWindowButton() {
|
|
|
280
280
|
if (currentPartitionData) {
|
|
281
281
|
payload = {
|
|
282
282
|
uuid: currentPartitionData.uuid,
|
|
283
|
-
space_uuid: currentPartitionData.space_uuid,
|
|
284
|
-
name: currentPartitionData.name,
|
|
285
|
-
parent_uuid: currentPartitionData.parent_uuid,
|
|
286
283
|
polygon_json: currentPolygonData
|
|
287
284
|
};
|
|
288
285
|
}
|
|
289
286
|
// Re-render polygon
|
|
290
287
|
renderPolygon(payload);
|
|
288
|
+
const objectIndex = _3DXObjects.findIndex(obj => obj.object.object_id == currentObject.object.object_id);
|
|
289
|
+
if (objectIndex != null) {
|
|
290
|
+
log.info("objectIndex", objectIndex);
|
|
291
|
+
if (_3DXObjects[objectIndex].children) {
|
|
292
|
+
_3DXObjects[objectIndex].children.map((win) => __awaiter(this, void 0, void 0, function* () {
|
|
293
|
+
var _c;
|
|
294
|
+
log.info("WIND", win);
|
|
295
|
+
if (win.index == ((_c = currentWall.windows) === null || _c === void 0 ? void 0 : _c.length) - 1 && win.wallUUID == currentWall.uuid) {
|
|
296
|
+
yield disposeModel(win);
|
|
297
|
+
}
|
|
298
|
+
}));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
291
301
|
}
|
|
292
302
|
}
|
|
293
303
|
/**
|
|
@@ -302,6 +312,7 @@ export function displayPartitionFormMode() {
|
|
|
302
312
|
if (roomFormMode === "EDIT" /* FORM_MODE.EDIT */) {
|
|
303
313
|
setPartitionFormMode("EDIT" /* FORM_MODE.EDIT */);
|
|
304
314
|
currentEditRoomData = getCurrentEditRoomData();
|
|
315
|
+
tempCurrentEditRoom = Object.assign({}, currentEditRoomData);
|
|
305
316
|
populatePartitionForm(currentEditRoomData);
|
|
306
317
|
}
|
|
307
318
|
else {
|
|
@@ -844,8 +855,9 @@ function displayWindows(window) {
|
|
|
844
855
|
const element = document.createElement('div');
|
|
845
856
|
element.classList.add('at_dropdown_item');
|
|
846
857
|
// Extract the wall name from the format "_wall-{number}" using regex
|
|
847
|
-
const match = window.name.match(/
|
|
858
|
+
const match = window.name.match(/Window (\d+)$/);
|
|
848
859
|
let windowName = '';
|
|
860
|
+
log.info("match", match);
|
|
849
861
|
if (match) {
|
|
850
862
|
const wallNumber = parseInt(match[1]);
|
|
851
863
|
windowName = `${i18n.t('Window')} ${wallNumber}`;
|
|
@@ -872,15 +884,18 @@ function displayWindows(window) {
|
|
|
872
884
|
</div>
|
|
873
885
|
<div class="at_subitem_right">
|
|
874
886
|
<span class="mdi mdi-pencil" id="at-edit-window-btn-${window.index}" style="display: ${editDisplay};"></span>
|
|
875
|
-
<span class="mdi mdi-check" id="at-confirm-edit-window-${window.index}" data-cy="at-confirm-edit-window-${window.index}" style="display: ${confirmDisplay};"></span>
|
|
887
|
+
<!-- <span class="mdi mdi-check" id="at-confirm-edit-window-${window.index}" data-cy="at-confirm-edit-window-${window.index}" style="display: ${confirmDisplay};"></span> -->
|
|
888
|
+
<div class="at_save_button at_text_xs at_ghost" id="at-confirm-edit-window-${window.index}" data-cy="at-confirm-edit-window-${window.index}" style="display: ${confirmDisplay}; margin-top: 2px !important;">
|
|
889
|
+
${i18n.t('Save')}
|
|
890
|
+
</div>
|
|
876
891
|
<span class="mdi mdi-delete-outline" id="at-delete-window-btn-${window.index}"></span>
|
|
877
892
|
</div>
|
|
878
893
|
</div>
|
|
879
894
|
<div class="at_edit_name" id="at-edit-window-name-${window.index}" data-index="${window.index}" style="display: ${confirmDisplay};">
|
|
880
|
-
<input class="at_edit_name_input" type="text" id="at-edit-window-name-input-${window.index}" data-cy="at-edit-window-name-input-${window.index}" value="${windowName}" placeholder="${i18n.t('EnterNameHere')}">
|
|
895
|
+
<input class="at_edit_name_input at_text_xs" type="text" id="at-edit-window-name-input-${window.index}" data-cy="at-edit-window-name-input-${window.index}" value="${windowName}" placeholder="${i18n.t('EnterNameHere')}">
|
|
881
896
|
</div>
|
|
882
897
|
<div class="at_edit_material" id="at-edit-window-material-${window.index}" data-index="${window.index}" style="display: ${confirmDisplay};">
|
|
883
|
-
<input class="at_edit_material_input" type="text" id="at-edit-window-material-input-${window.index}" data-cy="at-edit-window-material-input-${window.index}" value="${(_a = window.material) !== null && _a !== void 0 ? _a : ''}" placeholder="${i18n.t('EnterMaterialHere')}">
|
|
898
|
+
<input class="at_edit_material_input at_text_xs" type="text" id="at-edit-window-material-input-${window.index}" data-cy="at-edit-window-material-input-${window.index}" value="${(_a = window.material) !== null && _a !== void 0 ? _a : ''}" placeholder="${i18n.t('EnterMaterialHere')}">
|
|
884
899
|
</div>
|
|
885
900
|
`;
|
|
886
901
|
const nameElement = element.querySelector(`#at-window-name-${window.index}`);
|
|
@@ -913,6 +928,10 @@ function setupEditWindow(element, window) {
|
|
|
913
928
|
return;
|
|
914
929
|
// Show inputs when edit icon is clicked
|
|
915
930
|
editBtn.addEventListener("click", () => {
|
|
931
|
+
if (isDrawing) {
|
|
932
|
+
notify.error(`${i18n.t('PleaseOffDrawingMode')}`);
|
|
933
|
+
return;
|
|
934
|
+
}
|
|
916
935
|
log.info("window", window);
|
|
917
936
|
editNameContainer.style.display = "flex";
|
|
918
937
|
editMaterialContainer.style.display = "flex";
|
|
@@ -1243,6 +1262,7 @@ export function clearPartitionForm() {
|
|
|
1243
1262
|
drawingMode = null;
|
|
1244
1263
|
currentEditWindowIndex = null;
|
|
1245
1264
|
isEditWindow = false;
|
|
1265
|
+
tempCurrentEditRoom = null;
|
|
1246
1266
|
}
|
|
1247
1267
|
/**
|
|
1248
1268
|
* Cancels the drawing action for a partition.
|
|
@@ -1504,6 +1524,7 @@ export function setCurrentPartitionData() {
|
|
|
1504
1524
|
setMeshChildrenMaterialProperty(currentHighlightedFace.component, currentHighlightedFace.name, currentHighlightedFace.type, currentHighlightedFace.value);
|
|
1505
1525
|
}
|
|
1506
1526
|
updatePartitionDataArray(newPayload, currentPartitionDataArray);
|
|
1527
|
+
log.info("if currentPartitionDataArray", currentPartitionDataArray);
|
|
1507
1528
|
if (drawingMode === 'partition') {
|
|
1508
1529
|
displayFaces(currentPolygonData);
|
|
1509
1530
|
}
|
|
@@ -1525,6 +1546,7 @@ export function setCurrentPartitionData() {
|
|
|
1525
1546
|
currentPartitionDataArray = currentPartitionDataArray.filter(partition => partition.uuid != currentPartitionData.uuid);
|
|
1526
1547
|
dispatchSpaceEvent(SPACE_EVENTS.PARTITION_DISPOSED, currentPartitionData);
|
|
1527
1548
|
currentPartitionData = null;
|
|
1549
|
+
log.info("else currentPartitionDataArray", currentPartitionDataArray);
|
|
1528
1550
|
}
|
|
1529
1551
|
}
|
|
1530
1552
|
});
|
|
@@ -1552,10 +1574,11 @@ function updatePartitionDataArray(payload, currentPartitionDataArray) {
|
|
|
1552
1574
|
currentPartitionData = payload;
|
|
1553
1575
|
}
|
|
1554
1576
|
else if (drawingMode === 'window') {
|
|
1577
|
+
log.info("currentPartitionData", currentPartitionData);
|
|
1555
1578
|
// Update current partition data
|
|
1556
1579
|
currentPartitionData.polygon_json = JSON.stringify(payload.polygon_json);
|
|
1557
1580
|
// Update current partition data array
|
|
1558
|
-
const currentPartitionDataIndex = currentPartitionDataArray.findIndex(partitionData => partitionData.uuid
|
|
1581
|
+
const currentPartitionDataIndex = currentPartitionDataArray.findIndex(partitionData => partitionData.uuid == currentPartitionData.uuid);
|
|
1559
1582
|
currentPartitionDataArray[currentPartitionDataIndex] = currentPartitionData;
|
|
1560
1583
|
}
|
|
1561
1584
|
dispatchSpaceEvent(SPACE_EVENTS.PARTITION_EDITED, { data: currentPartitionData });
|
|
@@ -1728,3 +1751,9 @@ export function handlePartitionWallEditBtn(wallUuid) {
|
|
|
1728
1751
|
cancelDrawing();
|
|
1729
1752
|
});
|
|
1730
1753
|
}
|
|
1754
|
+
export function getTempCurrentRoomEditData() {
|
|
1755
|
+
return tempCurrentEditRoom;
|
|
1756
|
+
}
|
|
1757
|
+
export function setTempCurrentRoomEditData(roomEditData) {
|
|
1758
|
+
tempCurrentEditRoom = roomEditData;
|
|
1759
|
+
}
|
|
@@ -75,9 +75,28 @@ export declare function updateRoomVisibilityUI(parentId: string, isVisible: bool
|
|
|
75
75
|
* @param name - The specific name/identifier of the child element to highlight
|
|
76
76
|
*/
|
|
77
77
|
export declare function highlightSelectedPartitionChild(partitionId: string, name: string): void;
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Toggles the visibility of child elements within a partition wall by managing CSS classes.
|
|
80
|
+
* @param partitionId - The unique identifier of the partition containing the child elements
|
|
81
|
+
* @param name - The specific name/identifier of the child element whose container to toggle
|
|
82
|
+
* @param expand - Optional boolean to explicitly set expansion state (true = show, false = hide). If undefined, toggles current state
|
|
83
|
+
*/
|
|
84
|
+
export declare function toggleExpandParitionWallChild(partitionId: string, name: string, expand?: boolean): void;
|
|
85
|
+
/**
|
|
86
|
+
* Highlights the selected window element by toggling CSS classes and ensures its parent partition is expanded.
|
|
87
|
+
* @param wallUuid - The unique identifier of the wall containing the window elements
|
|
88
|
+
* @param index - The index or identifier of the specific window element to highlight
|
|
89
|
+
*/
|
|
90
|
+
export declare function highlightSelectedWindow(wallUuid: string, index: number | string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Removes the highlight from all selected window items by removing the 'selected' CSS class.
|
|
93
|
+
*/
|
|
80
94
|
export declare function toggleHighlightedWindowItem(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Calculates the midpoint (centroid) of multiple 3D coordinates by averaging their x, y, and z values.
|
|
97
|
+
* @param coords - An array of objects containing start Vector3 coordinates
|
|
98
|
+
* @returns A Vector3 representing the calculated midpoint of all input coordinates
|
|
99
|
+
*/
|
|
81
100
|
export declare function calculateMidPoint(coords: Array<{
|
|
82
101
|
start: Vector3;
|
|
83
102
|
}>): Vector3;
|
|
@@ -27,7 +27,7 @@ export function renderRoomTreePane() {
|
|
|
27
27
|
log.info("__@ renderRoomTreePane");
|
|
28
28
|
const element = document.createElement('div');
|
|
29
29
|
element.classList.add('at_container');
|
|
30
|
-
element.classList.add('at_w-
|
|
30
|
+
element.classList.add('at_w-15');
|
|
31
31
|
element.classList.add('at_h-full');
|
|
32
32
|
element.setAttribute('id', 'at-room-tree-pane');
|
|
33
33
|
element.setAttribute('data-cy', 'at-room-tree-pane');
|
|
@@ -387,7 +387,6 @@ function toggleSelectedPartition() {
|
|
|
387
387
|
yield goToPosition(wallBottomMidPoint);
|
|
388
388
|
highlightSelectedPartitionChild(partitionId, objectName);
|
|
389
389
|
toggleHighlightedWindowItem();
|
|
390
|
-
toggeleExpandParitionWallChild(partitionId, objectName);
|
|
391
390
|
}
|
|
392
391
|
catch (e) {
|
|
393
392
|
log.info('goToPosition failed: ', e);
|
|
@@ -453,7 +452,7 @@ function toggleSelectedPartition() {
|
|
|
453
452
|
try {
|
|
454
453
|
const windowBottomMidPoint = calculateMidPoint(windowCoords);
|
|
455
454
|
yield goToPosition(windowBottomMidPoint);
|
|
456
|
-
|
|
455
|
+
highlightSelectedWindow(wallUuid, windowIndex);
|
|
457
456
|
}
|
|
458
457
|
catch (e) {
|
|
459
458
|
log.info('goToPosition failed: ', e);
|
|
@@ -613,10 +612,8 @@ export function updatePolygonVisibilityData(isVisible, currPartition, isFloor, p
|
|
|
613
612
|
log.info("WALL!");
|
|
614
613
|
// WALLS
|
|
615
614
|
targetItem = polygonJson.walls.find(item => item.uuid === polygonItemId) || null;
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
// windows?.forEach(w => w.options.is_visible = isVisible)
|
|
619
|
-
// <END_COMMENT> TODO: 16032 - uncomment when polygon loader window visibility update is implemented
|
|
615
|
+
const windows = (targetItem === null || targetItem === void 0 ? void 0 : targetItem.windows) || null;
|
|
616
|
+
windows === null || windows === void 0 ? void 0 : windows.forEach(w => w.options.is_visible = isVisible);
|
|
620
617
|
}
|
|
621
618
|
log.info("targetItem:", targetItem);
|
|
622
619
|
if (targetItem) {
|
|
@@ -669,6 +666,9 @@ function updatePolygonData(currPartition, isVisible, isUpdateAllChildren) {
|
|
|
669
666
|
polygonJson.floor.options.is_visible = isVisible;
|
|
670
667
|
polygonJson.walls.forEach(wall => {
|
|
671
668
|
wall.options.is_visible = isVisible;
|
|
669
|
+
if (wall === null || wall === void 0 ? void 0 : wall.windows) {
|
|
670
|
+
wall === null || wall === void 0 ? void 0 : wall.windows.forEach(window => window.options.is_visible = isVisible);
|
|
671
|
+
}
|
|
672
672
|
});
|
|
673
673
|
}
|
|
674
674
|
}
|
|
@@ -724,18 +724,25 @@ export function highlightSelectedPartitionChild(partitionId, name) {
|
|
|
724
724
|
header.classList.toggle('selected', isSelected);
|
|
725
725
|
const arrow = header.querySelector('.at_partition_child_expand_icon');
|
|
726
726
|
if (arrow && arrow.textContent) {
|
|
727
|
-
// Use replace to only affect elements that have arrows
|
|
728
727
|
if (isSelected) {
|
|
729
728
|
arrow.textContent = arrow.textContent.replace('▶', '▼');
|
|
729
|
+
toggleExpandParitionWallChild(partitionId, name, false);
|
|
730
730
|
}
|
|
731
731
|
else {
|
|
732
732
|
arrow.textContent = arrow.textContent.replace('▼', '▶');
|
|
733
|
+
toggleExpandParitionWallChild(partitionId, name, true);
|
|
733
734
|
}
|
|
734
735
|
}
|
|
735
736
|
}
|
|
736
737
|
});
|
|
737
738
|
}
|
|
738
|
-
|
|
739
|
+
/**
|
|
740
|
+
* Toggles the visibility of child elements within a partition wall by managing CSS classes.
|
|
741
|
+
* @param partitionId - The unique identifier of the partition containing the child elements
|
|
742
|
+
* @param name - The specific name/identifier of the child element whose container to toggle
|
|
743
|
+
* @param expand - Optional boolean to explicitly set expansion state (true = show, false = hide). If undefined, toggles current state
|
|
744
|
+
*/
|
|
745
|
+
export function toggleExpandParitionWallChild(partitionId, name, expand) {
|
|
739
746
|
const partitionChildren = document.querySelectorAll(`li[partition-li-id="${partitionId}"]`);
|
|
740
747
|
const targetId = `partition-child-${name}`;
|
|
741
748
|
partitionChildren.forEach((partitionChild) => {
|
|
@@ -743,7 +750,7 @@ export function toggeleExpandParitionWallChild(partitionId, name) {
|
|
|
743
750
|
const listContainer = partitionChild.querySelector('.at_wall_children_container');
|
|
744
751
|
if (listContainer) {
|
|
745
752
|
if (isSelected) {
|
|
746
|
-
listContainer.classList.toggle('at_hidden');
|
|
753
|
+
listContainer.classList.toggle('at_hidden', expand !== undefined ? !expand : undefined);
|
|
747
754
|
}
|
|
748
755
|
else {
|
|
749
756
|
listContainer.classList.add('at_hidden');
|
|
@@ -823,7 +830,12 @@ function openWindowEdit(targetElement, parentRoomElement, parentRoomUuid, partit
|
|
|
823
830
|
}
|
|
824
831
|
});
|
|
825
832
|
}
|
|
826
|
-
|
|
833
|
+
/**
|
|
834
|
+
* Highlights the selected window element by toggling CSS classes and ensures its parent partition is expanded.
|
|
835
|
+
* @param wallUuid - The unique identifier of the wall containing the window elements
|
|
836
|
+
* @param index - The index or identifier of the specific window element to highlight
|
|
837
|
+
*/
|
|
838
|
+
export function highlightSelectedWindow(wallUuid, index) {
|
|
827
839
|
const wallWindow = document.querySelectorAll(`li[wall-id="${wallUuid}"]`);
|
|
828
840
|
const targetId = `window-${wallUuid}-${index}`;
|
|
829
841
|
wallWindow.forEach((windowElement) => {
|
|
@@ -831,17 +843,25 @@ export function highlightSelectedWallWindow(wallUuid, index) {
|
|
|
831
843
|
const parentWallItem = windowElement.closest('li.at_partition_wall_row_item');
|
|
832
844
|
const partitionId = parentWallItem.getAttribute('partition-li-id');
|
|
833
845
|
const objectName = parentWallItem.getAttribute('object-name');
|
|
834
|
-
|
|
846
|
+
toggleExpandParitionWallChild(partitionId, objectName, true);
|
|
835
847
|
}
|
|
836
848
|
windowElement.classList.toggle('selected', windowElement.id === targetId);
|
|
837
849
|
});
|
|
838
850
|
}
|
|
851
|
+
/**
|
|
852
|
+
* Removes the highlight from all selected window items by removing the 'selected' CSS class.
|
|
853
|
+
*/
|
|
839
854
|
export function toggleHighlightedWindowItem() {
|
|
840
855
|
const windowItems = document.querySelectorAll('li.at_wall_window_row_item.selected');
|
|
841
856
|
windowItems.forEach(el => {
|
|
842
857
|
el.classList.remove('selected');
|
|
843
858
|
});
|
|
844
859
|
}
|
|
860
|
+
/**
|
|
861
|
+
* Calculates the midpoint (centroid) of multiple 3D coordinates by averaging their x, y, and z values.
|
|
862
|
+
* @param coords - An array of objects containing start Vector3 coordinates
|
|
863
|
+
* @returns A Vector3 representing the calculated midpoint of all input coordinates
|
|
864
|
+
*/
|
|
845
865
|
export function calculateMidPoint(coords) {
|
|
846
866
|
const count = coords.length;
|
|
847
867
|
const sum = coords.reduce((acc, coord) => ({
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { _tagCategories, _tags, getMpTags } from "../../../architwin";
|
|
2
2
|
import { convertToCssRgb, stringContains } from "../../../utils";
|
|
3
|
+
import { TAG_TYPE } from "../../../types";
|
|
3
4
|
import { renderTags, setSelectedCategoryFilter, setSelectedSubcategoryFilter, filterTagList, getAllSubcategories, selectedCategoryFilterId, sortTags, selectedTagSortOption } from './tagListPane';
|
|
4
5
|
import i18n from './i18n';
|
|
5
6
|
let mode = 'adding';
|
|
@@ -341,7 +342,7 @@ function selectOption(option, elementId, skipToggle = false) {
|
|
|
341
342
|
const elementId = isFilterDropdown ? 'at-subcategory-filter-options' : 'at-subcategory-options';
|
|
342
343
|
clearInnerHTML(elementId);
|
|
343
344
|
}
|
|
344
|
-
|
|
345
|
+
let tags = getMpTags().filter(tag => !tag.tag_type || tag.tag_type !== TAG_TYPE.IOT);
|
|
345
346
|
const filteredTags = filterTagList(tags);
|
|
346
347
|
const sortedTags = sortTags(filteredTags ? filteredTags : tags, selectedTagSortOption);
|
|
347
348
|
renderTags(sortedTags);
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { ITag, ITagCategory, SortConfig } from "../../../types";
|
|
1
|
+
import { ITag, ITagCategory, SortConfig, TAG_TYPE } from "../../../types";
|
|
2
2
|
import { MpSdk } from "../../../../bundle/sdk";
|
|
3
3
|
export declare let selectedCategoryFilterId: any;
|
|
4
4
|
export declare let selectedSubCategoryFilterId: any;
|
|
5
|
+
export declare let isTagPaneActive: boolean;
|
|
6
|
+
export declare let currentTagPaneMode: TAG_TYPE | null;
|
|
5
7
|
export declare let selectedTagSortOption: SortConfig;
|
|
6
8
|
export declare function renderTagListPane(): HTMLElement;
|
|
7
9
|
export declare function isTagPartOfCategory(categoryUUID: string): boolean;
|
|
8
10
|
export declare function renderTags(tags: Array<ITag>, showOwnTagsOnly?: boolean): void;
|
|
9
|
-
export declare function renderTagRow(tag: MpSdk.Tag.TagData, tagIconUrl: string): HTMLElement;
|
|
11
|
+
export declare function renderTagRow(tag: MpSdk.Tag.TagData, tagIconUrl: string, tag_type?: string): HTMLElement;
|
|
10
12
|
export declare function setTagLink(link: string): void;
|
|
11
13
|
export declare function getTagLink(): void;
|
|
12
14
|
export declare function addClickEventToTagRow(tag: MpSdk.Tag.TagData): void;
|
|
@@ -18,6 +20,9 @@ export declare function getSearchTagTerm(): string;
|
|
|
18
20
|
export declare function searchTagList(tags: Array<ITag>): Array<ITag>;
|
|
19
21
|
export declare function setSearchTagTerm(searchTagName: string): void;
|
|
20
22
|
export declare function searchClearfield(): void;
|
|
23
|
+
export declare function filterIotTagList(tags: Array<ITag>): Array<ITag>;
|
|
24
|
+
export declare function setTagPaneActive(value: boolean): void;
|
|
25
|
+
export declare function setCurrentTagPaneMode(value: TAG_TYPE | null): void;
|
|
21
26
|
export declare const sortTags: (items: ITag[], options: SortConfig) => ITag[];
|
|
22
27
|
export declare function updateSelectedTagSortOption(sortOption: string): void;
|
|
23
28
|
export declare function resetSelectedTagSortOption(): void;
|