@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47
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/README.md +24 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -380
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -311
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -75
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -842
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +2 -2
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import { getMetaForImage, wait } from "../helpers.service";
|
|
2
|
-
export function getCoefficientsForImage(img, rectangle) {
|
|
3
|
-
let coeffY;
|
|
4
|
-
let coeffX;
|
|
5
|
-
const imgRatio = img.width / img.height;
|
|
6
|
-
const rectRatio = rectangle.width / rectangle.height;
|
|
7
|
-
// console.log("image", img.width, img.height);
|
|
8
|
-
// console.log("rectangle", rectangle.width, rectangle.height);
|
|
9
|
-
// console.log(imgRatio, rectRatio);
|
|
10
|
-
if (imgRatio > rectRatio) {
|
|
11
|
-
// img is fitted in rectangle by width
|
|
12
|
-
coeffX = img.width / rectangle.width;
|
|
13
|
-
const effectiveImageHeight = rectangle.width / imgRatio;
|
|
14
|
-
coeffY = img.height / effectiveImageHeight;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
coeffY = img.height / rectangle.height;
|
|
18
|
-
const effectiveImageWidth = rectangle.height * imgRatio;
|
|
19
|
-
coeffX = img.width / effectiveImageWidth;
|
|
20
|
-
}
|
|
21
|
-
// console.log(coeffX, coeffY);
|
|
22
|
-
return { coeffX, coeffY };
|
|
23
|
-
}
|
|
24
|
-
export function styleButton(button) {
|
|
25
|
-
button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=green&height=17&width=17")`;
|
|
26
|
-
button.style.backgroundColor = "transparent";
|
|
27
|
-
button.style.position = "absolute";
|
|
28
|
-
button.style.border = "none";
|
|
29
|
-
button.style.width = "17px";
|
|
30
|
-
button.style.height = "17px";
|
|
31
|
-
button.disabled = true;
|
|
32
|
-
}
|
|
33
|
-
export const showScanPointsOnPlanInDiv = async (plan, divPlan, navigations) => {
|
|
34
|
-
if (!divPlan || !plan.filepath) {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
const calibrage = JSON.parse(plan.calibration);
|
|
38
|
-
const img = await getMetaForImage(plan.filepath);
|
|
39
|
-
divPlan.style.backgroundImage = `url(${plan.filepath})`;
|
|
40
|
-
divPlan.style.backgroundSize = "contain";
|
|
41
|
-
divPlan.style.backgroundRepeat = "no-repeat";
|
|
42
|
-
await wait(1500); // while image is loaded to div
|
|
43
|
-
divPlan.innerHTML = ""; // remove all previous buttons if exist
|
|
44
|
-
const rect = divPlan.getBoundingClientRect();
|
|
45
|
-
const { coeffX, coeffY } = getCoefficientsForImage(img, rect);
|
|
46
|
-
const buttons = [];
|
|
47
|
-
await Promise.all(navigations.map(async (navigation) => {
|
|
48
|
-
const element = document.createElement("button");
|
|
49
|
-
styleButton(element);
|
|
50
|
-
element.id = navigation.matterportSweepID;
|
|
51
|
-
if (calibrage.new) {
|
|
52
|
-
// new procedure of calibrage
|
|
53
|
-
// find position for a given plan
|
|
54
|
-
const positionsOnPlan = navigation.positionOnPlan.map((entry) => JSON.parse(entry));
|
|
55
|
-
const positionOnPlan = positionsOnPlan.find((data) => data.planID === plan.id);
|
|
56
|
-
if (positionOnPlan) {
|
|
57
|
-
const realWidth = img.width / coeffX;
|
|
58
|
-
const realHeight = img.height / coeffY;
|
|
59
|
-
element.style.top = `${(positionOnPlan.y * realHeight) / calibrage.imgHeight -
|
|
60
|
-
10}px`;
|
|
61
|
-
element.style.left = `${(positionOnPlan.x * realWidth) / calibrage.imgWidth - 10}px`;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const position = JSON.parse(navigation.position);
|
|
66
|
-
const x = calibrage.offsetX + position.x * calibrage.x;
|
|
67
|
-
const y = calibrage.offsetY + position.z * calibrage.y;
|
|
68
|
-
element.style.top = `${y / coeffY - 10}px`;
|
|
69
|
-
element.style.left = `${x / coeffX - 10}px`;
|
|
70
|
-
}
|
|
71
|
-
divPlan.append(element);
|
|
72
|
-
buttons.push(element);
|
|
73
|
-
}));
|
|
74
|
-
return buttons;
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1kcmF3ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvem9uZS1kcmF3ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzNELE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsR0FBcUIsRUFDckIsU0FBYztJQUVkLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxNQUFNLENBQUM7SUFDWCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDeEMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3JELCtDQUErQztJQUMvQywrREFBK0Q7SUFDL0Qsb0NBQW9DO0lBQ3BDLElBQUksUUFBUSxHQUFHLFNBQVMsRUFBRTtRQUN0QixzQ0FBc0M7UUFDdEMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3hELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDO0tBQzlDO1NBQU07UUFDSCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDeEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUM7S0FDNUM7SUFDRCwrQkFBK0I7SUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVB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Q0osSUFBSSxDQUFDO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQ2pCLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxHQUFHLEVBQzFELElBQUksQ0FBQzthQUNSO1NBQ0o7YUFBTTtZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQztZQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUM7U0FDL0M7UUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE1ldGFGb3JJbWFnZSwgd2FpdCB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5hdmlnYXRpb24sIFBsYW4gfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29lZmZpY2llbnRzRm9ySW1hZ2UoXG4gICAgaW1nOiBIVE1MSW1hZ2VFbGVtZW50LFxuICAgIHJlY3RhbmdsZTogYW55LFxuKTogeyBjb2VmZlg6IG51bWJlcjsgY29lZmZZOiBudW1iZXIgfSB7XG4gICAgbGV0IGNvZWZmWTtcbiAgICBsZXQgY29lZmZYO1xuICAgIGNvbnN0IGltZ1JhdGlvID0gaW1nLndpZHRoIC8gaW1nLmhlaWdodDtcbiAgICBjb25zdCByZWN0UmF0aW8gPSByZWN0YW5nbGUud2lkdGggLyByZWN0YW5nbGUuaGVpZ2h0O1xuICAgIC8vIGNvbnNvbGUubG9nKFwiaW1hZ2VcIiwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcbiAgICAvLyBjb25zb2xlLmxvZyhcInJlY3RhbmdsZVwiLCByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIC8vIGNvbnNvbGUubG9nKGltZ1JhdGlvLCByZWN0UmF0aW8pO1xuICAgIGlmIChpbWdSYXRpbyA+IHJlY3RSYXRpbykge1xuICAgICAgICAvLyBpbWcgaXMgZml0dGVkIGluIHJlY3RhbmdsZSBieSB3aWR0aFxuICAgICAgICBjb2VmZlggPSBpbWcud2lkdGggLyByZWN0YW5nbGUud2lkdGg7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUltYWdlSGVpZ2h0ID0gcmVjdGFuZ2xlLndpZHRoIC8gaW1nUmF0aW87XG4gICAgICAgIGNvZWZmWSA9IGltZy5oZWlnaHQgLyBlZmZlY3RpdmVJbWFnZUhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb2VmZlkgPSBpbWcuaGVpZ2h0IC8gcmVjdGFuZ2xlLmhlaWdodDtcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlSW1hZ2VXaWR0aCA9IHJlY3RhbmdsZS5oZWlnaHQgKiBpbWdSYXRpbztcbiAgICAgICAgY29lZmZYID0gaW1nLndpZHRoIC8gZWZmZWN0aXZlSW1hZ2VXaWR0aDtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coY29lZmZYLCBjb2VmZlkpO1xuICAgIHJldHVybiB7IGNvZWZmWCwgY29lZmZZIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZUJ1dHRvbihidXR0b246IEhUTUxCdXR0b25FbGVtZW50KSB7XG4gICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xuICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInRyYW5zcGFyZW50XCI7XG4gICAgYnV0dG9uLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgIGJ1dHRvbi5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIjtcbiAgICBidXR0b24uc3R5bGUud2lkdGggPSBcIjE3cHhcIjtcbiAgICBidXR0b24uc3R5bGUuaGVpZ2h0ID0gXCIxN3B4XCI7XG4gICAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IHNob3dTY2FuUG9pbnRzT25QbGFuSW5EaXYgPSBhc3luYyAoXG4gICAgcGxhbjogUGxhbixcbiAgICBkaXZQbGFuOiBIVE1MRWxlbWVudCxcbiAgICBuYXZpZ2F0aW9uczogTmF2aWdhdGlvbltdLFxuKTogUHJvbWlzZTxIVE1MQnV0dG9uRWxlbWVudFtdPiA9PiB7XG4gICAgaWYgKCFkaXZQbGFuIHx8ICFwbGFuLmZpbGVwYXRoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgY2FsaWJyYWdlID0gSlNPTi5wYXJzZShwbGFuLmNhbGlicmF0aW9uKTtcblxuICAgIGNvbnN0IGltZyA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZShwbGFuLmZpbGVwYXRoKTtcbiAgICBkaXZQbGFuLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJHtwbGFuLmZpbGVwYXRofSlgO1xuICAgIGRpdlBsYW4uc3R5bGUuYmFja2dyb3VuZFNpemUgPSBcImNvbnRhaW5cIjtcbiAgICBkaXZQbGFuLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSBcIm5vLXJlcGVhdFwiO1xuICAgIGF3YWl0IHdhaXQoMTUwMCk7IC8vIHdoaWxlIGltYWdlIGlzIGxvYWRlZCB0byBkaXZcbiAgICBkaXZQbGFuLmlubmVySFRNTCA9IFwiXCI7IC8vIHJlbW92ZSBhbGwgcHJldmlvdXMgYnV0dG9ucyBpZiBleGlzdFxuICAgIGNvbnN0IHJlY3QgPSBkaXZQbGFuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgY29lZmZYLCBjb2VmZlkgfSA9IGdldENvZWZmaWNpZW50c0ZvckltYWdlKGltZywgcmVjdCk7XG4gICAgY29uc3QgYnV0dG9ucyA9IFtdO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBuYXZpZ2F0aW9ucy5tYXAoYXN5bmMgKG5hdmlnYXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuICAgICAgICAgICAgc3R5bGVCdXR0b24oZWxlbWVudCk7XG4gICAgICAgICAgICBlbGVtZW50LmlkID0gbmF2aWdhdGlvbi5tYXR0ZXJwb3J0U3dlZXBJRDtcbiAgICAgICAgICAgIGlmIChjYWxpYnJhZ2UubmV3KSB7XG4gICAgICAgICAgICAgICAgLy8gbmV3IHByb2NlZHVyZSBvZiBjYWxpYnJhZ2VcbiAgICAgICAgICAgICAgICAvLyBmaW5kIHBvc2l0aW9uIGZvciBhIGdpdmVuIHBsYW5cbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbnNPblBsYW4gPSBuYXZpZ2F0aW9uLnBvc2l0aW9uT25QbGFuLm1hcCgoZW50cnkpID0+XG4gICAgICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25PblBsYW4gPSBwb3NpdGlvbnNPblBsYW4uZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEucGxhbklEID09PSBwbGFuLmlkLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25QbGFuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxXaWR0aCA9IGltZy53aWR0aCAvIGNvZWZmWDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhbEhlaWdodCA9IGltZy5oZWlnaHQgLyBjb2VmZlk7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAocG9zaXRpb25PblBsYW4ueSAqIHJlYWxIZWlnaHQpIC8gY2FsaWJyYWdlLmltZ0hlaWdodCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAxMFxuICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbk9uUGxhbi54ICogcmVhbFdpZHRoKSAvIGNhbGlicmFnZS5pbWdXaWR0aCAtIDEwXG4gICAgICAgICAgICAgICAgICAgIH1weGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGNhbGlicmFnZS5vZmZzZXRYICsgcG9zaXRpb24ueCAqIGNhbGlicmFnZS54O1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBjYWxpYnJhZ2Uub2Zmc2V0WSArIHBvc2l0aW9uLnogKiBjYWxpYnJhZ2UueTtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGAke3kgLyBjb2VmZlkgLSAxMH1weGA7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7eCAvIGNvZWZmWCAtIDEwfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpdlBsYW4uYXBwZW5kKGVsZW1lbnQpO1xuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiBidXR0b25zO1xufTtcbiJdfQ==
|
|
1
|
+
import { getMetaForImage, wait } from "../helpers.service";
|
|
2
|
+
export function getCoefficientsForImage(img, rectangle) {
|
|
3
|
+
let coeffY;
|
|
4
|
+
let coeffX;
|
|
5
|
+
const imgRatio = img.width / img.height;
|
|
6
|
+
const rectRatio = rectangle.width / rectangle.height;
|
|
7
|
+
// console.log("image", img.width, img.height);
|
|
8
|
+
// console.log("rectangle", rectangle.width, rectangle.height);
|
|
9
|
+
// console.log(imgRatio, rectRatio);
|
|
10
|
+
if (imgRatio > rectRatio) {
|
|
11
|
+
// img is fitted in rectangle by width
|
|
12
|
+
coeffX = img.width / rectangle.width;
|
|
13
|
+
const effectiveImageHeight = rectangle.width / imgRatio;
|
|
14
|
+
coeffY = img.height / effectiveImageHeight;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
coeffY = img.height / rectangle.height;
|
|
18
|
+
const effectiveImageWidth = rectangle.height * imgRatio;
|
|
19
|
+
coeffX = img.width / effectiveImageWidth;
|
|
20
|
+
}
|
|
21
|
+
// console.log(coeffX, coeffY);
|
|
22
|
+
return { coeffX, coeffY };
|
|
23
|
+
}
|
|
24
|
+
export function styleButton(button) {
|
|
25
|
+
button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=green&height=17&width=17")`;
|
|
26
|
+
button.style.backgroundColor = "transparent";
|
|
27
|
+
button.style.position = "absolute";
|
|
28
|
+
button.style.border = "none";
|
|
29
|
+
button.style.width = "17px";
|
|
30
|
+
button.style.height = "17px";
|
|
31
|
+
button.disabled = true;
|
|
32
|
+
}
|
|
33
|
+
export const showScanPointsOnPlanInDiv = async (plan, divPlan, navigations) => {
|
|
34
|
+
if (!divPlan || !plan.filepath) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
const calibrage = JSON.parse(plan.calibration);
|
|
38
|
+
const img = await getMetaForImage(plan.filepath);
|
|
39
|
+
divPlan.style.backgroundImage = `url(${plan.filepath})`;
|
|
40
|
+
divPlan.style.backgroundSize = "contain";
|
|
41
|
+
divPlan.style.backgroundRepeat = "no-repeat";
|
|
42
|
+
await wait(1500); // while image is loaded to div
|
|
43
|
+
divPlan.innerHTML = ""; // remove all previous buttons if exist
|
|
44
|
+
const rect = divPlan.getBoundingClientRect();
|
|
45
|
+
const { coeffX, coeffY } = getCoefficientsForImage(img, rect);
|
|
46
|
+
const buttons = [];
|
|
47
|
+
await Promise.all(navigations.map(async (navigation) => {
|
|
48
|
+
const element = document.createElement("button");
|
|
49
|
+
styleButton(element);
|
|
50
|
+
element.id = navigation.matterportSweepID;
|
|
51
|
+
if (calibrage.new) {
|
|
52
|
+
// new procedure of calibrage
|
|
53
|
+
// find position for a given plan
|
|
54
|
+
const positionsOnPlan = navigation.positionOnPlan.map((entry) => JSON.parse(entry));
|
|
55
|
+
const positionOnPlan = positionsOnPlan.find((data) => data.planID === plan.id);
|
|
56
|
+
if (positionOnPlan) {
|
|
57
|
+
const realWidth = img.width / coeffX;
|
|
58
|
+
const realHeight = img.height / coeffY;
|
|
59
|
+
element.style.top = `${(positionOnPlan.y * realHeight) / calibrage.imgHeight -
|
|
60
|
+
10}px`;
|
|
61
|
+
element.style.left = `${(positionOnPlan.x * realWidth) / calibrage.imgWidth - 10}px`;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const position = JSON.parse(navigation.position);
|
|
66
|
+
const x = calibrage.offsetX + position.x * calibrage.x;
|
|
67
|
+
const y = calibrage.offsetY + position.z * calibrage.y;
|
|
68
|
+
element.style.top = `${y / coeffY - 10}px`;
|
|
69
|
+
element.style.left = `${x / coeffX - 10}px`;
|
|
70
|
+
}
|
|
71
|
+
divPlan.append(element);
|
|
72
|
+
buttons.push(element);
|
|
73
|
+
}));
|
|
74
|
+
return buttons;
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1kcmF3ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvem9uZS1kcmF3ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzNELE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsR0FBcUIsRUFDckIsU0FBYztJQUVkLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxNQUFNLENBQUM7SUFDWCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDeEMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3JELCtDQUErQztJQUMvQywrREFBK0Q7SUFDL0Qsb0NBQW9DO0lBQ3BDLElBQUksUUFBUSxHQUFHLFNBQVMsRUFBRTtRQUN0QixzQ0FBc0M7UUFDdEMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3hELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDO0tBQzlDO1NBQU07UUFDSCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDeEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUM7S0FDNUM7SUFDRCwrQkFBK0I7SUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUF5QjtJQUNqRCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxpRkFBaUYsQ0FBQztJQUNqSCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUM7SUFDN0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLEVBQzFDLElBQVUsRUFDVixPQUFvQixFQUNwQixXQUF5QixFQUNHLEVBQUU7SUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDNUIsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFHLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQztJQUN4RCxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7SUFDN0MsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywrQkFBK0I7SUFDakQsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7SUFDL0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDN0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNqQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixPQUFPLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztRQUMxQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZiw2QkFBNkI7WUFDN0IsaUNBQWlDO1lBQ2pDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FDcEIsQ0FBQztZQUNGLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQ3BDLENBQUM7WUFDRixJQUFJLGNBQWMsRUFBRTtnQkFDaEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3JDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUNoQixDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVM7b0JBQ3JELEVBQ0osSUFBSSxDQUFDO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQ2pCLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxHQUFHLEVBQzFELElBQUksQ0FBQzthQUNSO1NBQ0o7YUFBTTtZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQztZQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUM7U0FDL0M7UUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE1ldGFGb3JJbWFnZSwgd2FpdCB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbiwgUGxhbiB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29lZmZpY2llbnRzRm9ySW1hZ2UoXHJcbiAgICBpbWc6IEhUTUxJbWFnZUVsZW1lbnQsXHJcbiAgICByZWN0YW5nbGU6IGFueSxcclxuKTogeyBjb2VmZlg6IG51bWJlcjsgY29lZmZZOiBudW1iZXIgfSB7XHJcbiAgICBsZXQgY29lZmZZO1xyXG4gICAgbGV0IGNvZWZmWDtcclxuICAgIGNvbnN0IGltZ1JhdGlvID0gaW1nLndpZHRoIC8gaW1nLmhlaWdodDtcclxuICAgIGNvbnN0IHJlY3RSYXRpbyA9IHJlY3RhbmdsZS53aWR0aCAvIHJlY3RhbmdsZS5oZWlnaHQ7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImltYWdlXCIsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInJlY3RhbmdsZVwiLCByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQpO1xyXG4gICAgLy8gY29uc29sZS5sb2coaW1nUmF0aW8sIHJlY3RSYXRpbyk7XHJcbiAgICBpZiAoaW1nUmF0aW8gPiByZWN0UmF0aW8pIHtcclxuICAgICAgICAvLyBpbWcgaXMgZml0dGVkIGluIHJlY3RhbmdsZSBieSB3aWR0aFxyXG4gICAgICAgIGNvZWZmWCA9IGltZy53aWR0aCAvIHJlY3RhbmdsZS53aWR0aDtcclxuICAgICAgICBjb25zdCBlZmZlY3RpdmVJbWFnZUhlaWdodCA9IHJlY3RhbmdsZS53aWR0aCAvIGltZ1JhdGlvO1xyXG4gICAgICAgIGNvZWZmWSA9IGltZy5oZWlnaHQgLyBlZmZlY3RpdmVJbWFnZUhlaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29lZmZZID0gaW1nLmhlaWdodCAvIHJlY3RhbmdsZS5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlSW1hZ2VXaWR0aCA9IHJlY3RhbmdsZS5oZWlnaHQgKiBpbWdSYXRpbztcclxuICAgICAgICBjb2VmZlggPSBpbWcud2lkdGggLyBlZmZlY3RpdmVJbWFnZVdpZHRoO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2coY29lZmZYLCBjb2VmZlkpO1xyXG4gICAgcmV0dXJuIHsgY29lZmZYLCBjb2VmZlkgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlQnV0dG9uKGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQpIHtcclxuICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9Z3JlZW4maGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInRyYW5zcGFyZW50XCI7XHJcbiAgICBidXR0b24uc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XHJcbiAgICBidXR0b24uc3R5bGUuYm9yZGVyID0gXCJub25lXCI7XHJcbiAgICBidXR0b24uc3R5bGUud2lkdGggPSBcIjE3cHhcIjtcclxuICAgIGJ1dHRvbi5zdHlsZS5oZWlnaHQgPSBcIjE3cHhcIjtcclxuICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBzaG93U2NhblBvaW50c09uUGxhbkluRGl2ID0gYXN5bmMgKFxyXG4gICAgcGxhbjogUGxhbixcclxuICAgIGRpdlBsYW46IEhUTUxFbGVtZW50LFxyXG4gICAgbmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXSxcclxuKTogUHJvbWlzZTxIVE1MQnV0dG9uRWxlbWVudFtdPiA9PiB7XHJcbiAgICBpZiAoIWRpdlBsYW4gfHwgIXBsYW4uZmlsZXBhdGgpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBjYWxpYnJhZ2UgPSBKU09OLnBhcnNlKHBsYW4uY2FsaWJyYXRpb24pO1xyXG5cclxuICAgIGNvbnN0IGltZyA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZShwbGFuLmZpbGVwYXRoKTtcclxuICAgIGRpdlBsYW4uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3BsYW4uZmlsZXBhdGh9KWA7XHJcbiAgICBkaXZQbGFuLnN0eWxlLmJhY2tncm91bmRTaXplID0gXCJjb250YWluXCI7XHJcbiAgICBkaXZQbGFuLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSBcIm5vLXJlcGVhdFwiO1xyXG4gICAgYXdhaXQgd2FpdCgxNTAwKTsgLy8gd2hpbGUgaW1hZ2UgaXMgbG9hZGVkIHRvIGRpdlxyXG4gICAgZGl2UGxhbi5pbm5lckhUTUwgPSBcIlwiOyAvLyByZW1vdmUgYWxsIHByZXZpb3VzIGJ1dHRvbnMgaWYgZXhpc3RcclxuICAgIGNvbnN0IHJlY3QgPSBkaXZQbGFuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgeyBjb2VmZlgsIGNvZWZmWSB9ID0gZ2V0Q29lZmZpY2llbnRzRm9ySW1hZ2UoaW1nLCByZWN0KTtcclxuICAgIGNvbnN0IGJ1dHRvbnMgPSBbXTtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIG5hdmlnYXRpb25zLm1hcChhc3luYyAobmF2aWdhdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcclxuICAgICAgICAgICAgc3R5bGVCdXR0b24oZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuaWQgPSBuYXZpZ2F0aW9uLm1hdHRlcnBvcnRTd2VlcElEO1xyXG4gICAgICAgICAgICBpZiAoY2FsaWJyYWdlLm5ldykge1xyXG4gICAgICAgICAgICAgICAgLy8gbmV3IHByb2NlZHVyZSBvZiBjYWxpYnJhZ2VcclxuICAgICAgICAgICAgICAgIC8vIGZpbmQgcG9zaXRpb24gZm9yIGEgZ2l2ZW4gcGxhblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25zT25QbGFuID0gbmF2aWdhdGlvbi5wb3NpdGlvbk9uUGxhbi5tYXAoKGVudHJ5KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uT25QbGFuID0gcG9zaXRpb25zT25QbGFuLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEucGxhbklEID09PSBwbGFuLmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbk9uUGxhbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxXaWR0aCA9IGltZy53aWR0aCAvIGNvZWZmWDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFsSGVpZ2h0ID0gaW1nLmhlaWdodCAvIGNvZWZmWTtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGAke1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAocG9zaXRpb25PblBsYW4ueSAqIHJlYWxIZWlnaHQpIC8gY2FsaWJyYWdlLmltZ0hlaWdodCAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgfXB4YDtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHBvc2l0aW9uT25QbGFuLnggKiByZWFsV2lkdGgpIC8gY2FsaWJyYWdlLmltZ1dpZHRoIC0gMTBcclxuICAgICAgICAgICAgICAgICAgICB9cHhgO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdmlnYXRpb24ucG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGNhbGlicmFnZS5vZmZzZXRYICsgcG9zaXRpb24ueCAqIGNhbGlicmFnZS54O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IGNhbGlicmFnZS5vZmZzZXRZICsgcG9zaXRpb24ueiAqIGNhbGlicmFnZS55O1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSBgJHt5IC8gY29lZmZZIC0gMTB9cHhgO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7eCAvIGNvZWZmWCAtIDEwfXB4YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkaXZQbGFuLmFwcGVuZChlbGVtZW50KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgKTtcclxuICAgIHJldHVybiBidXR0b25zO1xyXG59O1xyXG4iXX0=
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Atomic zone change service to break cyclic dependencies issue
|
|
6
|
-
*/
|
|
7
|
-
export class ZoneChangeService {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.zoneChange = new Subject();
|
|
10
|
-
this.zonesForUserChange = new Subject();
|
|
11
|
-
this.floorHasChanged = new EventEmitter();
|
|
12
|
-
this.zoneChange.subscribe((zone) => {
|
|
13
|
-
// console.log(`new zone ${JSON.stringify(zone)}`);
|
|
14
|
-
this.currentZone = zone;
|
|
15
|
-
});
|
|
16
|
-
this.zonesForUserChange.subscribe((zones) => {
|
|
17
|
-
// console.log(`new zones ${JSON.stringify(zones)}`);
|
|
18
|
-
this.currentZones = zones;
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
ZoneChangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
-
ZoneChangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneChangeService, providedIn: 'root' });
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneChangeService, decorators: [{
|
|
25
|
-
type: Injectable,
|
|
26
|
-
args: [{
|
|
27
|
-
providedIn: 'root',
|
|
28
|
-
}]
|
|
29
|
-
}], ctorParameters: function () { return []; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Atomic zone change service to break cyclic dependencies issue
|
|
6
|
+
*/
|
|
7
|
+
export class ZoneChangeService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.zoneChange = new Subject();
|
|
10
|
+
this.zonesForUserChange = new Subject();
|
|
11
|
+
this.floorHasChanged = new EventEmitter();
|
|
12
|
+
this.zoneChange.subscribe((zone) => {
|
|
13
|
+
// console.log(`new zone ${JSON.stringify(zone)}`);
|
|
14
|
+
this.currentZone = zone;
|
|
15
|
+
});
|
|
16
|
+
this.zonesForUserChange.subscribe((zones) => {
|
|
17
|
+
// console.log(`new zones ${JSON.stringify(zones)}`);
|
|
18
|
+
this.currentZones = zones;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ZoneChangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
ZoneChangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneChangeService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneChangeService, decorators: [{
|
|
25
|
+
type: Injectable,
|
|
26
|
+
args: [{
|
|
27
|
+
providedIn: 'root',
|
|
28
|
+
}]
|
|
29
|
+
}], ctorParameters: function () { return []; } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZUNoYW5nZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy96b25lQ2hhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFHN0I7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBUkEsZUFBVSxHQUF5QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2pELHVCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3BELG9CQUFlLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqQyxtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMscURBQXFEO1lBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEdBcEJVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtab25lfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBBdG9taWMgem9uZSBjaGFuZ2Ugc2VydmljZSB0byBicmVhayBjeWNsaWMgZGVwZW5kZW5jaWVzIGlzc3VlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZUNoYW5nZVNlcnZpY2Uge1xyXG5cclxuICB6b25lQ2hhbmdlOiBTdWJqZWN0PFpvbmUgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgem9uZXNGb3JVc2VyQ2hhbmdlOiBTdWJqZWN0PFpvbmVbXSB8IG51bGw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50Wm9uZTogWm9uZTtcclxuICBwcml2YXRlIGN1cnJlbnRab25lczogWm9uZVtdO1xyXG5cclxuICBwdWJsaWMgZmxvb3JIYXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Wm9uZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFpvbmU+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy56b25lQ2hhbmdlLnN1YnNjcmliZSgoem9uZSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhgbmV3IHpvbmUgJHtKU09OLnN0cmluZ2lmeSh6b25lKX1gKTtcclxuICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnpvbmVzRm9yVXNlckNoYW5nZS5zdWJzY3JpYmUoKHpvbmVzKSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBuZXcgem9uZXMgJHtKU09OLnN0cmluZ2lmeSh6b25lcyl9YCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFpvbmVzID0gem9uZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|