@smarterplan/ngx-smarterplan-locations 0.2.21 → 0.2.22

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 (59) hide show
  1. package/esm2020/lib/components/carousel/carousel.component.mjs +27 -27
  2. package/esm2020/lib/components/chevron/chevron.component.mjs +17 -17
  3. package/esm2020/lib/components/detail-location/detail-location.component.mjs +154 -154
  4. package/esm2020/lib/components/form-location/form-location.component.mjs +237 -237
  5. package/esm2020/lib/components/images/images.component.mjs +90 -90
  6. package/esm2020/lib/components/locations/locations.component.mjs +141 -141
  7. package/esm2020/lib/components/locations/map/map-popup/map-popup.component.mjs +65 -65
  8. package/esm2020/lib/components/locations/map/map.component.mjs +90 -90
  9. package/esm2020/lib/components/plan-legend/plan-legend.component.mjs +47 -0
  10. package/esm2020/lib/components/plans/calibration/calibration.component.mjs +468 -468
  11. package/esm2020/lib/components/plans/edit-plan/edit-plan.component.mjs +324 -324
  12. package/esm2020/lib/components/plans/plans.component.mjs +210 -210
  13. package/esm2020/lib/components/tab-navigation/tab-navigation.component.mjs +41 -41
  14. package/esm2020/lib/components/visits/visits.component.mjs +235 -235
  15. package/esm2020/lib/components/zones/add-audio-zone/add-audio-zone.component.mjs +230 -230
  16. package/esm2020/lib/components/zones/add-zone/add-zone.component.mjs +294 -294
  17. package/esm2020/lib/components/zones/add-zone/selection/selection.component.mjs +76 -76
  18. package/esm2020/lib/components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component.mjs +414 -413
  19. package/esm2020/lib/components/zones/zones.component.mjs +236 -232
  20. package/esm2020/lib/helper.service.mjs +134 -134
  21. package/esm2020/lib/ngx-smarterplan-location-routing.module.mjs +49 -49
  22. package/esm2020/lib/ngx-smarterplan-locations.module.mjs +125 -122
  23. package/esm2020/lib/ngx-smarterplan-locations.service.mjs +13 -13
  24. package/esm2020/lib/pipes/count-audio-sweeps.pipe.mjs +26 -26
  25. package/esm2020/lib/radio-button/radio-button.component.mjs +26 -26
  26. package/esm2020/public-api.mjs +8 -8
  27. package/esm2020/smarterplan-ngx-smarterplan-locations.mjs +4 -4
  28. package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +3676 -3624
  29. package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
  30. package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +3520 -3472
  31. package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
  32. package/lib/components/carousel/carousel.component.d.ts +12 -12
  33. package/lib/components/chevron/chevron.component.d.ts +9 -9
  34. package/lib/components/detail-location/detail-location.component.d.ts +51 -51
  35. package/lib/components/form-location/form-location.component.d.ts +45 -45
  36. package/lib/components/images/images.component.d.ts +28 -28
  37. package/lib/components/locations/locations.component.d.ts +50 -50
  38. package/lib/components/locations/map/map-popup/map-popup.component.d.ts +22 -22
  39. package/lib/components/locations/map/map.component.d.ts +22 -22
  40. package/lib/components/plan-legend/plan-legend.component.d.ts +14 -0
  41. package/lib/components/plans/calibration/calibration.component.d.ts +140 -140
  42. package/lib/components/plans/edit-plan/edit-plan.component.d.ts +55 -55
  43. package/lib/components/plans/plans.component.d.ts +59 -59
  44. package/lib/components/tab-navigation/tab-navigation.component.d.ts +13 -13
  45. package/lib/components/visits/visits.component.d.ts +51 -51
  46. package/lib/components/zones/add-audio-zone/add-audio-zone.component.d.ts +63 -63
  47. package/lib/components/zones/add-zone/add-zone.component.d.ts +67 -67
  48. package/lib/components/zones/add-zone/selection/selection.component.d.ts +44 -44
  49. package/lib/components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component.d.ts +96 -96
  50. package/lib/components/zones/zones.component.d.ts +67 -67
  51. package/lib/helper.service.d.ts +53 -53
  52. package/lib/ngx-smarterplan-location-routing.module.d.ts +7 -7
  53. package/lib/ngx-smarterplan-locations.module.d.ts +36 -35
  54. package/lib/ngx-smarterplan-locations.service.d.ts +6 -6
  55. package/lib/pipes/count-audio-sweeps.pipe.d.ts +10 -10
  56. package/lib/radio-button/radio-button.component.d.ts +12 -12
  57. package/package.json +1 -1
  58. package/public-api.d.ts +4 -4
  59. package/smarterplan-ngx-smarterplan-locations.d.ts +5 -5
@@ -1,134 +1,134 @@
1
- export var SweepState;
2
- (function (SweepState) {
3
- SweepState[SweepState["ADDED"] = 0] = "ADDED";
4
- SweepState[SweepState["REMOVED"] = 1] = "REMOVED";
5
- SweepState[SweepState["DISABLED"] = 2] = "DISABLED";
6
- SweepState[SweepState["OCCUPIED"] = 3] = "OCCUPIED";
7
- SweepState[SweepState["STARTPOINT"] = 4] = "STARTPOINT";
8
- })(SweepState || (SweepState = {}));
9
- export function isInPolygon(p, polygon) {
10
- let isInside = false;
11
- let minX = polygon[0].x;
12
- let maxX = polygon[0].x;
13
- let minY = polygon[0].y;
14
- let maxY = polygon[0].y;
15
- for (let n = 1; n < polygon.length; n++) {
16
- const q = polygon[n];
17
- minX = Math.min(q.x, minX);
18
- maxX = Math.max(q.x, maxX);
19
- minY = Math.min(q.y, minY);
20
- maxY = Math.max(q.y, maxY);
21
- }
22
- if (p.x < minX || p.x > maxX || p.y < minY || p.y > maxY) {
23
- return false;
24
- }
25
- for (let index = 0, index_ = polygon.length - 1; index < polygon.length; index_ = index++) {
26
- if (polygon[index].y > p.y !== polygon[index_].y > p.y &&
27
- p.x <
28
- ((polygon[index_].x - polygon[index].x) *
29
- (p.y - polygon[index].y)) /
30
- (polygon[index_].y - polygon[index].y) +
31
- polygon[index].x) {
32
- isInside = !isInside;
33
- }
34
- }
35
- return isInside;
36
- }
37
- export function rotate(point, center, angle) {
38
- let xM;
39
- let yM;
40
- let x;
41
- let y;
42
- angle *= Math.PI / 180;
43
- xM = point.x - center.x;
44
- yM = point.y - center.y;
45
- x = xM * Math.cos(angle) + yM * Math.sin(angle) + center.x;
46
- y = -xM * Math.sin(angle) + yM * Math.cos(angle) + center.y;
47
- return { x: Math.round(x), y: Math.round(y) };
48
- }
49
- /**
50
- * Check if an HtmlElement is inside a selection
51
- * @param button HTMLElement
52
- * @param selection
53
- * @returns true if the element is inside the selection, false otherwise
54
- */
55
- export function buttonIsInSelection(button, selection) {
56
- const bounds = button.getBoundingClientRect();
57
- return (bounds.bottom > selection.top &&
58
- bounds.top < selection.top + selection.height &&
59
- bounds.right > selection.left &&
60
- bounds.left < selection.left + selection.width);
61
- }
62
- /**
63
- * Styles the button that represents a sweep on the plan: green-added to zone, red -not added, gray - disabled, orange - occupied
64
- * @param button HTMLButtonElement, button on the plan,
65
- * @param isAdded boolean, if the sweep added to the zone
66
- * @param isOccupied boolean, if the sweep added to any other zone (but not current)
67
- */
68
- export function styleButton(button, state) {
69
- switch (state) {
70
- case SweepState.ADDED:
71
- button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=green&height=17&width=17")`;
72
- break;
73
- case SweepState.DISABLED:
74
- button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=#636363&height=17&width=17")`;
75
- button.style.cursor = "auto";
76
- break;
77
- case SweepState.OCCUPIED:
78
- button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=orange&height=17&width=17")`;
79
- break;
80
- case SweepState.STARTPOINT:
81
- button.style.backgroundImage = `url('https://api.iconify.design/ic/baseline-flag-circle.svg?color=white&width=17&height=17')`;
82
- break;
83
- case SweepState.REMOVED:
84
- button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=red&height=17&width=17")`;
85
- break;
86
- default:
87
- button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=red&height=17&width=17")`;
88
- break;
89
- }
90
- // if (disabled) {
91
- // button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=#636363&height=17&width=17")`;
92
- // button.style.cursor = "auto";
93
- // } else if (isOccupied) {
94
- // button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=orange&height=17&width=17")`;
95
- // } else {
96
- // button.style.backgroundImage = isAdded
97
- // ? `url("https://api.iconify.design/mdi:adjust.svg?color=green&height=17&width=17")`
98
- // : `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=red&height=17&width=17")`;
99
- // }
100
- button.style.backgroundColor = "transparent";
101
- button.style.position = "absolute";
102
- button.style.border = "none";
103
- button.style.width = "17px";
104
- button.style.height = "17px";
105
- button.disabled = false;
106
- button.type = "button";
107
- }
108
- /**
109
- * Check if sweep (button) is chosen; it is reprsented by image style "mdi:adjust"
110
- * @param button HTMLElement
111
- * @returns boolean, if button was selected
112
- */
113
- export function buttonIsChosen(button) {
114
- return button.style.backgroundImage.includes("adjust");
115
- }
116
- /**
117
- * Visually change the state of a scan button, a selected button is blue
118
- * @param button HTMLElement
119
- * @param selected if true the button will be blue, otherwise it will red or green
120
- */
121
- export function setVisuallySelected(button, selected) {
122
- if (selected) {
123
- /** Color in blue */
124
- button.style.backgroundImage = button.style.backgroundImage
125
- .replace("red", "blue")
126
- .replace("green", "blue");
127
- }
128
- else {
129
- /** Get back in red or green */
130
- const color = buttonIsChosen(button) ? "green" : "red";
131
- button.style.backgroundImage = button.style.backgroundImage.replace("blue", color);
132
- }
133
- }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvaGVscGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNsQiw2Q0FBSyxDQUFBO0lBQ0wsaURBQU8sQ0FBQTtJQUNQLG1EQUFRLENBQUE7SUFDUixtREFBUSxDQUFBO0lBQ1IsdURBQVUsQ0FBQTtBQUNkLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBc0IsRUFBRSxPQUF1QjtJQUV2RSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM5QjtJQUVELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUU7UUFDdEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxLQUNJLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzFDLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxFQUN0QixNQUFNLEdBQUcsS0FBSyxFQUFFLEVBQ2xCO1FBQ0UsSUFDSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDbEI7WUFDRSxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDeEI7S0FDSjtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQTBCLEVBQUUsTUFBMkIsRUFBRSxLQUFhO0lBQ3pGLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksQ0FBQyxDQUFDO0lBQ04sS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEIsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2xELENBQUM7QUFFRDs7Ozs7TUFLTTtBQUNOLE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsTUFBeUIsRUFDekIsU0FBb0I7SUFFcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDOUMsT0FBTyxDQUNILE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUc7UUFDN0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNO1FBQzdDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUk7UUFDN0IsTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQ2pELENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQXlCLEVBQUUsS0FBaUI7SUFDcEUsUUFBUSxLQUFLLEVBQUU7UUFDWCxLQUFLLFVBQVUsQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLGlGQUFpRixDQUFDO1lBQ2pILE1BQU07UUFDVixLQUFLLFVBQVUsQ0FBQyxRQUFRO1lBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLGlHQUFpRyxDQUFDO1lBQ2pJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUM3QixNQUFNO1FBQ1YsS0FBSyxVQUFVLENBQUMsUUFBUTtZQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxrRkFBa0YsQ0FBQztZQUNsSCxNQUFNO1FBQ1YsS0FBSyxVQUFVLENBQUMsVUFBVTtZQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyw4RkFBOEYsQ0FBQztZQUM5SCxNQUFNO1FBQ1YsS0FBSyxVQUFVLENBQUMsT0FBTztZQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyw2RkFBNkYsQ0FBQztZQUM3SCxNQUFNO1FBQ1Y7WUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyw2RkFBNkYsQ0FBQztZQUM3SCxNQUFNO0tBQ2I7SUFDRCxrQkFBa0I7SUFDbEIsd0lBQXdJO0lBQ3hJLG9DQUFvQztJQUNwQywyQkFBMkI7SUFDM0IseUhBQXlIO0lBQ3pILFdBQVc7SUFDWCw2Q0FBNkM7SUFDN0MsOEZBQThGO0lBQzlGLDJHQUEyRztJQUMzRyxJQUFJO0lBQ0osTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBbUI7SUFDOUMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7O09BSU87QUFDUCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBbUIsRUFBRSxRQUFpQjtJQUN0RSxJQUFJLFFBQVEsRUFBRTtRQUNWLG9CQUFvQjtRQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWU7YUFDdEQsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7YUFDdEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNqQztTQUFNO1FBQ0gsK0JBQStCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUMvRCxNQUFNLEVBQ04sS0FBSyxDQUNSLENBQUM7S0FDTDtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBSZWN0YW5nbGUgPSB7XHJcbiAgICB0b3A6IG51bWJlcjtcclxuICAgIGxlZnQ6IG51bWJlcjtcclxuICAgIHdpZHRoOiBudW1iZXI7XHJcbiAgICBoZWlnaHQ6IG51bWJlcjtcclxufTtcclxuXHJcbmV4cG9ydCBlbnVtIFN3ZWVwU3RhdGUge1xyXG4gICAgQURERUQsXHJcbiAgICBSRU1PVkVELFxyXG4gICAgRElTQUJMRUQsXHJcbiAgICBPQ0NVUElFRCxcclxuICAgIFNUQVJUUE9JTlRcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHA6IHsgeDogYW55OyB5OiBhbnk7IH0sIHBvbHlnb246IHN0cmluZyB8IGFueVtdKTogYm9vbGVhbiB7XHJcblxyXG4gICAgbGV0IGlzSW5zaWRlID0gZmFsc2U7XHJcbiAgICBsZXQgbWluWCA9IHBvbHlnb25bMF0ueDtcclxuICAgIGxldCBtYXhYID0gcG9seWdvblswXS54O1xyXG4gICAgbGV0IG1pblkgPSBwb2x5Z29uWzBdLnk7XHJcbiAgICBsZXQgbWF4WSA9IHBvbHlnb25bMF0ueTtcclxuICAgIGZvciAobGV0IG4gPSAxOyBuIDwgcG9seWdvbi5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgIGNvbnN0IHEgPSBwb2x5Z29uW25dO1xyXG4gICAgICAgIG1pblggPSBNYXRoLm1pbihxLngsIG1pblgpO1xyXG4gICAgICAgIG1heFggPSBNYXRoLm1heChxLngsIG1heFgpO1xyXG4gICAgICAgIG1pblkgPSBNYXRoLm1pbihxLnksIG1pblkpO1xyXG4gICAgICAgIG1heFkgPSBNYXRoLm1heChxLnksIG1heFkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwLnggPCBtaW5YIHx8IHAueCA+IG1heFggfHwgcC55IDwgbWluWSB8fCBwLnkgPiBtYXhZKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMCwgaW5kZXhfID0gcG9seWdvbi5sZW5ndGggLSAxO1xyXG4gICAgICAgIGluZGV4IDwgcG9seWdvbi5sZW5ndGg7XHJcbiAgICAgICAgaW5kZXhfID0gaW5kZXgrK1xyXG4gICAgKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBwb2x5Z29uW2luZGV4XS55ID4gcC55ICE9PSBwb2x5Z29uW2luZGV4X10ueSA+IHAueSAmJlxyXG4gICAgICAgICAgICBwLnggPFxyXG4gICAgICAgICAgICAoKHBvbHlnb25baW5kZXhfXS54IC0gcG9seWdvbltpbmRleF0ueCkgKlxyXG4gICAgICAgICAgICAgICAgKHAueSAtIHBvbHlnb25baW5kZXhdLnkpKSAvXHJcbiAgICAgICAgICAgIChwb2x5Z29uW2luZGV4X10ueSAtIHBvbHlnb25baW5kZXhdLnkpICtcclxuICAgICAgICAgICAgcG9seWdvbltpbmRleF0ueFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBpc0luc2lkZSA9ICFpc0luc2lkZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNJbnNpZGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3RhdGUocG9pbnQ6IHsgeDogYW55OyB5OiBhbnk7IH0sIGNlbnRlcjogeyB4OiBhbnk7IHk6IGFueTsgfSwgYW5nbGU6IG51bWJlcikge1xyXG4gICAgbGV0IHhNO1xyXG4gICAgbGV0IHlNO1xyXG4gICAgbGV0IHg7XHJcbiAgICBsZXQgeTtcclxuICAgIGFuZ2xlICo9IE1hdGguUEkgLyAxODA7XHJcbiAgICB4TSA9IHBvaW50LnggLSBjZW50ZXIueDtcclxuICAgIHlNID0gcG9pbnQueSAtIGNlbnRlci55O1xyXG4gICAgeCA9IHhNICogTWF0aC5jb3MoYW5nbGUpICsgeU0gKiBNYXRoLnNpbihhbmdsZSkgKyBjZW50ZXIueDtcclxuICAgIHkgPSAteE0gKiBNYXRoLnNpbihhbmdsZSkgKyB5TSAqIE1hdGguY29zKGFuZ2xlKSArIGNlbnRlci55O1xyXG4gICAgcmV0dXJuIHsgeDogTWF0aC5yb3VuZCh4KSwgeTogTWF0aC5yb3VuZCh5KSB9O1xyXG59XHJcblxyXG4vKipcclxuICAgICogQ2hlY2sgaWYgYW4gSHRtbEVsZW1lbnQgaXMgaW5zaWRlIGEgc2VsZWN0aW9uXHJcbiAgICAqIEBwYXJhbSBidXR0b24gSFRNTEVsZW1lbnRcclxuICAgICogQHBhcmFtIHNlbGVjdGlvblxyXG4gICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGluc2lkZSB0aGUgc2VsZWN0aW9uLCBmYWxzZSBvdGhlcndpc2VcclxuICAgICovXHJcbmV4cG9ydCBmdW5jdGlvbiBidXR0b25Jc0luU2VsZWN0aW9uKFxyXG4gICAgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCxcclxuICAgIHNlbGVjdGlvbjogUmVjdGFuZ2xlLFxyXG4pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGJvdW5kcyA9IGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgYm91bmRzLmJvdHRvbSA+IHNlbGVjdGlvbi50b3AgJiZcclxuICAgICAgICBib3VuZHMudG9wIDwgc2VsZWN0aW9uLnRvcCArIHNlbGVjdGlvbi5oZWlnaHQgJiZcclxuICAgICAgICBib3VuZHMucmlnaHQgPiBzZWxlY3Rpb24ubGVmdCAmJlxyXG4gICAgICAgIGJvdW5kcy5sZWZ0IDwgc2VsZWN0aW9uLmxlZnQgKyBzZWxlY3Rpb24ud2lkdGhcclxuICAgICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTdHlsZXMgdGhlIGJ1dHRvbiB0aGF0IHJlcHJlc2VudHMgYSBzd2VlcCBvbiB0aGUgcGxhbjogZ3JlZW4tYWRkZWQgdG8gem9uZSwgcmVkIC1ub3QgYWRkZWQsIGdyYXkgLSBkaXNhYmxlZCwgb3JhbmdlIC0gb2NjdXBpZWRcclxuICogQHBhcmFtIGJ1dHRvbiBIVE1MQnV0dG9uRWxlbWVudCwgYnV0dG9uIG9uIHRoZSBwbGFuLCBcclxuICogQHBhcmFtIGlzQWRkZWQgYm9vbGVhbiwgaWYgdGhlIHN3ZWVwIGFkZGVkIHRvIHRoZSB6b25lXHJcbiAqIEBwYXJhbSBpc09jY3VwaWVkIGJvb2xlYW4sIGlmIHRoZSBzd2VlcCBhZGRlZCB0byBhbnkgb3RoZXIgem9uZSAoYnV0IG5vdCBjdXJyZW50KVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlQnV0dG9uKGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQsIHN0YXRlOiBTd2VlcFN0YXRlKSB7XHJcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSBTd2VlcFN0YXRlLkFEREVEOlxyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybChcImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduL21kaTphZGp1c3Quc3ZnP2NvbG9yPWdyZWVuJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgU3dlZXBTdGF0ZS5ESVNBQkxFRDpcclxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6Y2xvc2UtY2lyY2xlLW91dGxpbmUuc3ZnP2NvbG9yPSM2MzYzNjMmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmN1cnNvciA9IFwiYXV0b1wiO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFN3ZWVwU3RhdGUuT0NDVVBJRUQ6XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9b3JhbmdlJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgU3dlZXBTdGF0ZS5TVEFSVFBPSU5UOlxyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vaWMvYmFzZWxpbmUtZmxhZy1jaXJjbGUuc3ZnP2NvbG9yPXdoaXRlJndpZHRoPTE3JmhlaWdodD0xNycpYDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBTd2VlcFN0YXRlLlJFTU9WRUQ6XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmNsb3NlLWNpcmNsZS1vdXRsaW5lLnN2Zz9jb2xvcj1yZWQmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6Y2xvc2UtY2lyY2xlLW91dGxpbmUuc3ZnP2NvbG9yPXJlZCZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGlmIChkaXNhYmxlZCkge1xyXG4gICAgLy8gICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmNsb3NlLWNpcmNsZS1vdXRsaW5lLnN2Zz9jb2xvcj0jNjM2MzYzJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWA7XHJcbiAgICAvLyAgICAgYnV0dG9uLnN0eWxlLmN1cnNvciA9IFwiYXV0b1wiO1xyXG4gICAgLy8gfSBlbHNlIGlmIChpc09jY3VwaWVkKSB7XHJcbiAgICAvLyAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1vcmFuZ2UmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGlzQWRkZWRcclxuICAgIC8vICAgICAgICAgPyBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9Z3JlZW4maGVpZ2h0PTE3JndpZHRoPTE3XCIpYFxyXG4gICAgLy8gICAgICAgICA6IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6Y2xvc2UtY2lyY2xlLW91dGxpbmUuc3ZnP2NvbG9yPXJlZCZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xyXG4gICAgLy8gfVxyXG4gICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwidHJhbnNwYXJlbnRcIjtcclxuICAgIGJ1dHRvbi5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcclxuICAgIGJ1dHRvbi5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIjtcclxuICAgIGJ1dHRvbi5zdHlsZS53aWR0aCA9IFwiMTdweFwiO1xyXG4gICAgYnV0dG9uLnN0eWxlLmhlaWdodCA9IFwiMTdweFwiO1xyXG4gICAgYnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBidXR0b24udHlwZSA9IFwiYnV0dG9uXCI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBzd2VlcCAoYnV0dG9uKSBpcyBjaG9zZW47IGl0IGlzIHJlcHJzZW50ZWQgYnkgaW1hZ2Ugc3R5bGUgXCJtZGk6YWRqdXN0XCJcclxuICogQHBhcmFtIGJ1dHRvbiBIVE1MRWxlbWVudFxyXG4gKiBAcmV0dXJucyBib29sZWFuLCBpZiBidXR0b24gd2FzIHNlbGVjdGVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uSXNDaG9zZW4oYnV0dG9uOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UuaW5jbHVkZXMoXCJhZGp1c3RcIik7XHJcbn1cclxuXHJcbi8qKlxyXG4gICAgICogVmlzdWFsbHkgY2hhbmdlIHRoZSBzdGF0ZSBvZiBhIHNjYW4gYnV0dG9uLCBhIHNlbGVjdGVkIGJ1dHRvbiBpcyBibHVlXHJcbiAgICAgKiBAcGFyYW0gYnV0dG9uIEhUTUxFbGVtZW50XHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWQgaWYgdHJ1ZSB0aGUgYnV0dG9uIHdpbGwgYmUgYmx1ZSwgb3RoZXJ3aXNlIGl0IHdpbGwgcmVkIG9yIGdyZWVuXHJcbiAgICAgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNldFZpc3VhbGx5U2VsZWN0ZWQoYnV0dG9uOiBIVE1MRWxlbWVudCwgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIC8qKiBDb2xvciBpbiBibHVlICovXHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2VcclxuICAgICAgICAgICAgLnJlcGxhY2UoXCJyZWRcIiwgXCJibHVlXCIpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKFwiZ3JlZW5cIiwgXCJibHVlXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICAvKiogR2V0IGJhY2sgaW4gcmVkIG9yIGdyZWVuICovXHJcbiAgICAgICAgY29uc3QgY29sb3IgPSBidXR0b25Jc0Nob3NlbihidXR0b24pID8gXCJncmVlblwiIDogXCJyZWRcIjtcclxuICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZS5yZXBsYWNlKFxyXG4gICAgICAgICAgICBcImJsdWVcIixcclxuICAgICAgICAgICAgY29sb3IsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
1
+ export var SweepState;
2
+ (function (SweepState) {
3
+ SweepState[SweepState["ADDED"] = 0] = "ADDED";
4
+ SweepState[SweepState["REMOVED"] = 1] = "REMOVED";
5
+ SweepState[SweepState["DISABLED"] = 2] = "DISABLED";
6
+ SweepState[SweepState["OCCUPIED"] = 3] = "OCCUPIED";
7
+ SweepState[SweepState["STARTPOINT"] = 4] = "STARTPOINT";
8
+ })(SweepState || (SweepState = {}));
9
+ export function isInPolygon(p, polygon) {
10
+ let isInside = false;
11
+ let minX = polygon[0].x;
12
+ let maxX = polygon[0].x;
13
+ let minY = polygon[0].y;
14
+ let maxY = polygon[0].y;
15
+ for (let n = 1; n < polygon.length; n++) {
16
+ const q = polygon[n];
17
+ minX = Math.min(q.x, minX);
18
+ maxX = Math.max(q.x, maxX);
19
+ minY = Math.min(q.y, minY);
20
+ maxY = Math.max(q.y, maxY);
21
+ }
22
+ if (p.x < minX || p.x > maxX || p.y < minY || p.y > maxY) {
23
+ return false;
24
+ }
25
+ for (let index = 0, index_ = polygon.length - 1; index < polygon.length; index_ = index++) {
26
+ if (polygon[index].y > p.y !== polygon[index_].y > p.y &&
27
+ p.x <
28
+ ((polygon[index_].x - polygon[index].x) *
29
+ (p.y - polygon[index].y)) /
30
+ (polygon[index_].y - polygon[index].y) +
31
+ polygon[index].x) {
32
+ isInside = !isInside;
33
+ }
34
+ }
35
+ return isInside;
36
+ }
37
+ export function rotate(point, center, angle) {
38
+ let xM;
39
+ let yM;
40
+ let x;
41
+ let y;
42
+ angle *= Math.PI / 180;
43
+ xM = point.x - center.x;
44
+ yM = point.y - center.y;
45
+ x = xM * Math.cos(angle) + yM * Math.sin(angle) + center.x;
46
+ y = -xM * Math.sin(angle) + yM * Math.cos(angle) + center.y;
47
+ return { x: Math.round(x), y: Math.round(y) };
48
+ }
49
+ /**
50
+ * Check if an HtmlElement is inside a selection
51
+ * @param button HTMLElement
52
+ * @param selection
53
+ * @returns true if the element is inside the selection, false otherwise
54
+ */
55
+ export function buttonIsInSelection(button, selection) {
56
+ const bounds = button.getBoundingClientRect();
57
+ return (bounds.bottom > selection.top &&
58
+ bounds.top < selection.top + selection.height &&
59
+ bounds.right > selection.left &&
60
+ bounds.left < selection.left + selection.width);
61
+ }
62
+ /**
63
+ * Styles the button that represents a sweep on the plan: green-added to zone, red -not added, gray - disabled, orange - occupied
64
+ * @param button HTMLButtonElement, button on the plan,
65
+ * @param isAdded boolean, if the sweep added to the zone
66
+ * @param isOccupied boolean, if the sweep added to any other zone (but not current)
67
+ */
68
+ export function styleButton(button, state) {
69
+ switch (state) {
70
+ case SweepState.ADDED:
71
+ button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=green&height=17&width=17")`;
72
+ break;
73
+ case SweepState.DISABLED:
74
+ button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=black&height=17&width=17")`;
75
+ button.style.cursor = "auto";
76
+ break;
77
+ case SweepState.OCCUPIED:
78
+ button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=orange&height=17&width=17")`;
79
+ break;
80
+ case SweepState.STARTPOINT:
81
+ button.style.backgroundImage = `url('https://api.iconify.design/ic/baseline-flag-circle.svg?color=white&width=17&height=17')`;
82
+ break;
83
+ case SweepState.REMOVED:
84
+ button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=red&height=17&width=17")`;
85
+ break;
86
+ default:
87
+ button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=red&height=17&width=17")`;
88
+ break;
89
+ }
90
+ // if (disabled) {
91
+ // button.style.backgroundImage = `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=#636363&height=17&width=17")`;
92
+ // button.style.cursor = "auto";
93
+ // } else if (isOccupied) {
94
+ // button.style.backgroundImage = `url("https://api.iconify.design/mdi:adjust.svg?color=orange&height=17&width=17")`;
95
+ // } else {
96
+ // button.style.backgroundImage = isAdded
97
+ // ? `url("https://api.iconify.design/mdi:adjust.svg?color=green&height=17&width=17")`
98
+ // : `url("https://api.iconify.design/mdi:close-circle-outline.svg?color=red&height=17&width=17")`;
99
+ // }
100
+ button.style.backgroundColor = "transparent";
101
+ button.style.position = "absolute";
102
+ button.style.border = "none";
103
+ button.style.width = "17px";
104
+ button.style.height = "17px";
105
+ button.disabled = false;
106
+ button.type = "button";
107
+ }
108
+ /**
109
+ * Check if sweep (button) is chosen; it is reprsented by image style "mdi:adjust"
110
+ * @param button HTMLElement
111
+ * @returns boolean, if button was selected
112
+ */
113
+ export function buttonIsChosen(button) {
114
+ return button.style.backgroundImage.includes("adjust");
115
+ }
116
+ /**
117
+ * Visually change the state of a scan button, a selected button is blue
118
+ * @param button HTMLElement
119
+ * @param selected if true the button will be blue, otherwise it will red or green
120
+ */
121
+ export function setVisuallySelected(button, selected) {
122
+ if (selected) {
123
+ /** Color in blue */
124
+ button.style.backgroundImage = button.style.backgroundImage
125
+ .replace("red", "blue")
126
+ .replace("green", "blue");
127
+ }
128
+ else {
129
+ /** Get back in red or green */
130
+ const color = buttonIsChosen(button) ? "green" : "red";
131
+ button.style.backgroundImage = button.style.backgroundImage.replace("blue", color);
132
+ }
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvaGVscGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNsQiw2Q0FBSyxDQUFBO0lBQ0wsaURBQU8sQ0FBQTtJQUNQLG1EQUFRLENBQUE7SUFDUixtREFBUSxDQUFBO0lBQ1IsdURBQVUsQ0FBQTtBQUNkLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBc0IsRUFBRSxPQUF1QjtJQUV2RSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUks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ICAgdG9wOiBudW1iZXI7XG4gICAgbGVmdDogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgZW51bSBTd2VlcFN0YXRlIHtcbiAgICBBRERFRCxcbiAgICBSRU1PVkVELFxuICAgIERJU0FCTEVELFxuICAgIE9DQ1VQSUVELFxuICAgIFNUQVJUUE9JTlRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHA6IHsgeDogYW55OyB5OiBhbnk7IH0sIHBvbHlnb246IHN0cmluZyB8IGFueVtdKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgaXNJbnNpZGUgPSBmYWxzZTtcbiAgICBsZXQgbWluWCA9IHBvbHlnb25bMF0ueDtcbiAgICBsZXQgbWF4WCA9IHBvbHlnb25bMF0ueDtcbiAgICBsZXQgbWluWSA9IHBvbHlnb25bMF0ueTtcbiAgICBsZXQgbWF4WSA9IHBvbHlnb25bMF0ueTtcbiAgICBmb3IgKGxldCBuID0gMTsgbiA8IHBvbHlnb24ubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgY29uc3QgcSA9IHBvbHlnb25bbl07XG4gICAgICAgIG1pblggPSBNYXRoLm1pbihxLngsIG1pblgpO1xuICAgICAgICBtYXhYID0gTWF0aC5tYXgocS54LCBtYXhYKTtcbiAgICAgICAgbWluWSA9IE1hdGgubWluKHEueSwgbWluWSk7XG4gICAgICAgIG1heFkgPSBNYXRoLm1heChxLnksIG1heFkpO1xuICAgIH1cblxuICAgIGlmIChwLnggPCBtaW5YIHx8IHAueCA+IG1heFggfHwgcC55IDwgbWluWSB8fCBwLnkgPiBtYXhZKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKFxuICAgICAgICBsZXQgaW5kZXggPSAwLCBpbmRleF8gPSBwb2x5Z29uLmxlbmd0aCAtIDE7XG4gICAgICAgIGluZGV4IDwgcG9seWdvbi5sZW5ndGg7XG4gICAgICAgIGluZGV4XyA9IGluZGV4KytcbiAgICApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcG9seWdvbltpbmRleF0ueSA+IHAueSAhPT0gcG9seWdvbltpbmRleF9dLnkgPiBwLnkgJiZcbiAgICAgICAgICAgIHAueCA8XG4gICAgICAgICAgICAoKHBvbHlnb25baW5kZXhfXS54IC0gcG9seWdvbltpbmRleF0ueCkgKlxuICAgICAgICAgICAgICAgIChwLnkgLSBwb2x5Z29uW2luZGV4XS55KSkgL1xuICAgICAgICAgICAgKHBvbHlnb25baW5kZXhfXS55IC0gcG9seWdvbltpbmRleF0ueSkgK1xuICAgICAgICAgICAgcG9seWdvbltpbmRleF0ueFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlzSW5zaWRlID0gIWlzSW5zaWRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc0luc2lkZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZShwb2ludDogeyB4OiBhbnk7IHk6IGFueTsgfSwgY2VudGVyOiB7IHg6IGFueTsgeTogYW55OyB9LCBhbmdsZTogbnVtYmVyKSB7XG4gICAgbGV0IHhNO1xuICAgIGxldCB5TTtcbiAgICBsZXQgeDtcbiAgICBsZXQgeTtcbiAgICBhbmdsZSAqPSBNYXRoLlBJIC8gMTgwO1xuICAgIHhNID0gcG9pbnQueCAtIGNlbnRlci54O1xuICAgIHlNID0gcG9pbnQueSAtIGNlbnRlci55O1xuICAgIHggPSB4TSAqIE1hdGguY29zKGFuZ2xlKSArIHlNICogTWF0aC5zaW4oYW5nbGUpICsgY2VudGVyLng7XG4gICAgeSA9IC14TSAqIE1hdGguc2luKGFuZ2xlKSArIHlNICogTWF0aC5jb3MoYW5nbGUpICsgY2VudGVyLnk7XG4gICAgcmV0dXJuIHsgeDogTWF0aC5yb3VuZCh4KSwgeTogTWF0aC5yb3VuZCh5KSB9O1xufVxuXG4vKipcbiAgICAqIENoZWNrIGlmIGFuIEh0bWxFbGVtZW50IGlzIGluc2lkZSBhIHNlbGVjdGlvblxuICAgICogQHBhcmFtIGJ1dHRvbiBIVE1MRWxlbWVudFxuICAgICogQHBhcmFtIHNlbGVjdGlvblxuICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBpbnNpZGUgdGhlIHNlbGVjdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0b25Jc0luU2VsZWN0aW9uKFxuICAgIGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQsXG4gICAgc2VsZWN0aW9uOiBSZWN0YW5nbGUsXG4pOiBib29sZWFuIHtcbiAgICBjb25zdCBib3VuZHMgPSBidXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgYm91bmRzLmJvdHRvbSA+IHNlbGVjdGlvbi50b3AgJiZcbiAgICAgICAgYm91bmRzLnRvcCA8IHNlbGVjdGlvbi50b3AgKyBzZWxlY3Rpb24uaGVpZ2h0ICYmXG4gICAgICAgIGJvdW5kcy5yaWdodCA+IHNlbGVjdGlvbi5sZWZ0ICYmXG4gICAgICAgIGJvdW5kcy5sZWZ0IDwgc2VsZWN0aW9uLmxlZnQgKyBzZWxlY3Rpb24ud2lkdGhcbiAgICApO1xufVxuXG4vKipcbiAqIFN0eWxlcyB0aGUgYnV0dG9uIHRoYXQgcmVwcmVzZW50cyBhIHN3ZWVwIG9uIHRoZSBwbGFuOiBncmVlbi1hZGRlZCB0byB6b25lLCByZWQgLW5vdCBhZGRlZCwgZ3JheSAtIGRpc2FibGVkLCBvcmFuZ2UgLSBvY2N1cGllZFxuICogQHBhcmFtIGJ1dHRvbiBIVE1MQnV0dG9uRWxlbWVudCwgYnV0dG9uIG9uIHRoZSBwbGFuLCBcbiAqIEBwYXJhbSBpc0FkZGVkIGJvb2xlYW4sIGlmIHRoZSBzd2VlcCBhZGRlZCB0byB0aGUgem9uZVxuICogQHBhcmFtIGlzT2NjdXBpZWQgYm9vbGVhbiwgaWYgdGhlIHN3ZWVwIGFkZGVkIHRvIGFueSBvdGhlciB6b25lIChidXQgbm90IGN1cnJlbnQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZUJ1dHRvbihidXR0b246IEhUTUxCdXR0b25FbGVtZW50LCBzdGF0ZTogU3dlZXBTdGF0ZSkge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgY2FzZSBTd2VlcFN0YXRlLkFEREVEOlxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU3dlZXBTdGF0ZS5ESVNBQkxFRDpcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmNsb3NlLWNpcmNsZS1vdXRsaW5lLnN2Zz9jb2xvcj1ibGFjayZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmN1cnNvciA9IFwiYXV0b1wiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU3dlZXBTdGF0ZS5PQ0NVUElFRDpcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9b3JhbmdlJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTd2VlcFN0YXRlLlNUQVJUUE9JTlQ6XG4gICAgICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vaWMvYmFzZWxpbmUtZmxhZy1jaXJjbGUuc3ZnP2NvbG9yPXdoaXRlJndpZHRoPTE3JmhlaWdodD0xNycpYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFN3ZWVwU3RhdGUuUkVNT1ZFRDpcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmNsb3NlLWNpcmNsZS1vdXRsaW5lLnN2Zz9jb2xvcj1yZWQmaGVpZ2h0PTE3JndpZHRoPTE3XCIpYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6Y2xvc2UtY2lyY2xlLW91dGxpbmUuc3ZnP2NvbG9yPXJlZCZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIGlmIChkaXNhYmxlZCkge1xuICAgIC8vICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybChcImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduL21kaTpjbG9zZS1jaXJjbGUtb3V0bGluZS5zdmc/Y29sb3I9IzYzNjM2MyZoZWlnaHQ9MTcmd2lkdGg9MTdcIilgO1xuICAgIC8vICAgICBidXR0b24uc3R5bGUuY3Vyc29yID0gXCJhdXRvXCI7XG4gICAgLy8gfSBlbHNlIGlmIChpc09jY3VwaWVkKSB7XG4gICAgLy8gICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9b3JhbmdlJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWA7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGlzQWRkZWRcbiAgICAvLyAgICAgICAgID8gYHVybChcImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduL21kaTphZGp1c3Quc3ZnP2NvbG9yPWdyZWVuJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWBcbiAgICAvLyAgICAgICAgIDogYHVybChcImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduL21kaTpjbG9zZS1jaXJjbGUtb3V0bGluZS5zdmc/Y29sb3I9cmVkJmhlaWdodD0xNyZ3aWR0aD0xN1wiKWA7XG4gICAgLy8gfVxuICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInRyYW5zcGFyZW50XCI7XG4gICAgYnV0dG9uLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgIGJ1dHRvbi5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIjtcbiAgICBidXR0b24uc3R5bGUud2lkdGggPSBcIjE3cHhcIjtcbiAgICBidXR0b24uc3R5bGUuaGVpZ2h0ID0gXCIxN3B4XCI7XG4gICAgYnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XG4gICAgYnV0dG9uLnR5cGUgPSBcImJ1dHRvblwiO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHN3ZWVwIChidXR0b24pIGlzIGNob3NlbjsgaXQgaXMgcmVwcnNlbnRlZCBieSBpbWFnZSBzdHlsZSBcIm1kaTphZGp1c3RcIlxuICogQHBhcmFtIGJ1dHRvbiBIVE1MRWxlbWVudFxuICogQHJldHVybnMgYm9vbGVhbiwgaWYgYnV0dG9uIHdhcyBzZWxlY3RlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uSXNDaG9zZW4oYnV0dG9uOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlLmluY2x1ZGVzKFwiYWRqdXN0XCIpO1xufVxuXG4vKipcbiAgICAgKiBWaXN1YWxseSBjaGFuZ2UgdGhlIHN0YXRlIG9mIGEgc2NhbiBidXR0b24sIGEgc2VsZWN0ZWQgYnV0dG9uIGlzIGJsdWVcbiAgICAgKiBAcGFyYW0gYnV0dG9uIEhUTUxFbGVtZW50XG4gICAgICogQHBhcmFtIHNlbGVjdGVkIGlmIHRydWUgdGhlIGJ1dHRvbiB3aWxsIGJlIGJsdWUsIG90aGVyd2lzZSBpdCB3aWxsIHJlZCBvciBncmVlblxuICAgICAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFZpc3VhbGx5U2VsZWN0ZWQoYnV0dG9uOiBIVE1MRWxlbWVudCwgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgLyoqIENvbG9yIGluIGJsdWUgKi9cbiAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2VcbiAgICAgICAgICAgIC5yZXBsYWNlKFwicmVkXCIsIFwiYmx1ZVwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoXCJncmVlblwiLCBcImJsdWVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLyoqIEdldCBiYWNrIGluIHJlZCBvciBncmVlbiAqL1xuICAgICAgICBjb25zdCBjb2xvciA9IGJ1dHRvbklzQ2hvc2VuKGJ1dHRvbikgPyBcImdyZWVuXCIgOiBcInJlZFwiO1xuICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYnV0dG9uLnN0eWxlLmJhY2tncm91bmRJbWFnZS5yZXBsYWNlKFxuICAgICAgICAgICAgXCJibHVlXCIsXG4gICAgICAgICAgICBjb2xvcixcbiAgICAgICAgKTtcbiAgICB9XG59Il19
@@ -1,49 +1,49 @@
1
- import { NgModule } from "@angular/core";
2
- import { RouterModule } from "@angular/router";
3
- import { CalibrationComponent } from "./components/plans/calibration/calibration.component";
4
- import { DetailLocationComponent } from "./components/detail-location/detail-location.component";
5
- import { EditPlanComponent } from "./components/plans/edit-plan/edit-plan.component";
6
- import { ImagesComponent } from "./components/images/images.component";
7
- import { LocationsComponent } from "./components/locations/locations.component";
8
- import { PlansComponent } from "./components/plans/plans.component";
9
- import { VisitsComponent } from "./components/visits/visits.component";
10
- import { ZonesComponent } from "./components/zones/zones.component";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/router";
13
- const routes = [
14
- {
15
- path: "",
16
- component: LocationsComponent,
17
- },
18
- {
19
- path: ":id",
20
- children: [
21
- { path: "", component: DetailLocationComponent },
22
- { path: "zones", component: ZonesComponent },
23
- { path: "visits", component: VisitsComponent },
24
- { path: "plans", component: PlansComponent },
25
- {
26
- path: "plan-calibration",
27
- component: CalibrationComponent,
28
- },
29
- {
30
- path: "plan-edit",
31
- component: EditPlanComponent,
32
- },
33
- { path: "images", component: ImagesComponent },
34
- ],
35
- },
36
- ];
37
- export class LocationsRoutingModule {
38
- }
39
- LocationsRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
40
- LocationsRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
41
- LocationsRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, imports: [[RouterModule.forChild(routes)], RouterModule] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, decorators: [{
43
- type: NgModule,
44
- args: [{
45
- imports: [RouterModule.forChild(routes)],
46
- exports: [RouterModule],
47
- }]
48
- }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9uLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL25neC1zbWFydGVycGxhbi1sb2NhdGlvbi1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUVwRSxNQUFNLE1BQU0sR0FBVztJQUNuQjtRQUNJLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLGtCQUFrQjtLQUNoQztJQUNEO1FBQ0ksSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUU7WUFDTixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVDO2dCQUNJLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLFNBQVMsRUFBRSxvQkFBb0I7YUFDbEM7WUFDRDtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLGlCQUFpQjthQUMvQjtZQUNELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO1NBQ2pEO0tBQ0o7Q0FDRixDQUFDO0FBTUosTUFBTSxPQUFPLHNCQUFzQjs7bUhBQXRCLHNCQUFzQjtvSEFBdEIsc0JBQXNCLHdDQUZyQixZQUFZO29IQUViLHNCQUFzQixZQUh0QixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDOUIsWUFBWTsyRkFFYixzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IENhbGlicmF0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9wbGFucy9jYWxpYnJhdGlvbi9jYWxpYnJhdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGV0YWlsTG9jYXRpb25Db21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2RldGFpbC1sb2NhdGlvbi9kZXRhaWwtbG9jYXRpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVkaXRQbGFuQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9wbGFucy9lZGl0LXBsYW4vZWRpdC1wbGFuLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBJbWFnZXNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2ltYWdlcy9pbWFnZXMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExvY2F0aW9uc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbG9jYXRpb25zL2xvY2F0aW9ucy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGxhbnNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3BsYW5zL3BsYW5zLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBWaXNpdHNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3Zpc2l0cy92aXNpdHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpvbmVzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy96b25lcy96b25lcy5jb21wb25lbnRcIjtcclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gICAge1xyXG4gICAgICAgIHBhdGg6IFwiXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiBMb2NhdGlvbnNDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6IFwiOmlkXCIsXHJcbiAgICAgICAgY2hpbGRyZW46IFtcclxuICAgICAgICAgICAgeyBwYXRoOiBcIlwiLCBjb21wb25lbnQ6IERldGFpbExvY2F0aW9uQ29tcG9uZW50IH0sXHJcbiAgICAgICAgICAgIHsgcGF0aDogXCJ6b25lc1wiLCBjb21wb25lbnQ6IFpvbmVzQ29tcG9uZW50IH0sXHJcbiAgICAgICAgICAgIHsgcGF0aDogXCJ2aXNpdHNcIiwgY29tcG9uZW50OiBWaXNpdHNDb21wb25lbnQgfSxcclxuICAgICAgICAgICAgeyBwYXRoOiBcInBsYW5zXCIsIGNvbXBvbmVudDogUGxhbnNDb21wb25lbnQgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGF0aDogXCJwbGFuLWNhbGlicmF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IENhbGlicmF0aW9uQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBcInBsYW4tZWRpdFwiLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBFZGl0UGxhbkNvbXBvbmVudCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBwYXRoOiBcImltYWdlc1wiLCBjb21wb25lbnQ6IEltYWdlc0NvbXBvbmVudCB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxyXG4gICAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbnNSb3V0aW5nTW9kdWxlIHsgfSJdfQ==
1
+ import { NgModule } from "@angular/core";
2
+ import { RouterModule } from "@angular/router";
3
+ import { CalibrationComponent } from "./components/plans/calibration/calibration.component";
4
+ import { DetailLocationComponent } from "./components/detail-location/detail-location.component";
5
+ import { EditPlanComponent } from "./components/plans/edit-plan/edit-plan.component";
6
+ import { ImagesComponent } from "./components/images/images.component";
7
+ import { LocationsComponent } from "./components/locations/locations.component";
8
+ import { PlansComponent } from "./components/plans/plans.component";
9
+ import { VisitsComponent } from "./components/visits/visits.component";
10
+ import { ZonesComponent } from "./components/zones/zones.component";
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/router";
13
+ const routes = [
14
+ {
15
+ path: "",
16
+ component: LocationsComponent,
17
+ },
18
+ {
19
+ path: ":id",
20
+ children: [
21
+ { path: "", component: DetailLocationComponent },
22
+ { path: "zones", component: ZonesComponent },
23
+ { path: "visits", component: VisitsComponent },
24
+ { path: "plans", component: PlansComponent },
25
+ {
26
+ path: "plan-calibration",
27
+ component: CalibrationComponent,
28
+ },
29
+ {
30
+ path: "plan-edit",
31
+ component: EditPlanComponent,
32
+ },
33
+ { path: "images", component: ImagesComponent },
34
+ ],
35
+ },
36
+ ];
37
+ export class LocationsRoutingModule {
38
+ }
39
+ LocationsRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
40
+ LocationsRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
41
+ LocationsRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, imports: [[RouterModule.forChild(routes)], RouterModule] });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocationsRoutingModule, decorators: [{
43
+ type: NgModule,
44
+ args: [{
45
+ imports: [RouterModule.forChild(routes)],
46
+ exports: [RouterModule],
47
+ }]
48
+ }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9uLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL25neC1zbWFydGVycGxhbi1sb2NhdGlvbi1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUVwRSxNQUFNLE1BQU0sR0FBVztJQUNuQjtRQUNJLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLGtCQUFrQjtLQUNoQztJQUNEO1FBQ0ksSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUU7WUFDTixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVDO2dCQUNJLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLFNBQVMsRUFBRSxvQkFBb0I7YUFDbEM7WUFDRDtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLGlCQUFpQjthQUMvQjtZQUNELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO1NBQ2pEO0tBQ0o7Q0FDRixDQUFDO0FBTUosTUFBTSxPQUFPLHNCQUFzQjs7bUhBQXRCLHNCQUFzQjtvSEFBdEIsc0JBQXNCLHdDQUZyQixZQUFZO29IQUViLHNCQUFzQixZQUh0QixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDOUIsWUFBWTsyRkFFYixzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgQ2FsaWJyYXRpb25Db21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3BsYW5zL2NhbGlicmF0aW9uL2NhbGlicmF0aW9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGV0YWlsTG9jYXRpb25Db21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2RldGFpbC1sb2NhdGlvbi9kZXRhaWwtbG9jYXRpb24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBFZGl0UGxhbkNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvcGxhbnMvZWRpdC1wbGFuL2VkaXQtcGxhbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IEltYWdlc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvaW1hZ2VzL2ltYWdlcy5jb21wb25lbnRcIjtcbmltcG9ydCB7IExvY2F0aW9uc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbG9jYXRpb25zL2xvY2F0aW9ucy5jb21wb25lbnRcIjtcbmltcG9ydCB7IFBsYW5zQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9wbGFucy9wbGFucy5jb21wb25lbnRcIjtcbmltcG9ydCB7IFZpc2l0c0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvdmlzaXRzL3Zpc2l0cy5jb21wb25lbnRcIjtcbmltcG9ydCB7IFpvbmVzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy96b25lcy96b25lcy5jb21wb25lbnRcIjtcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAge1xuICAgICAgICBwYXRoOiBcIlwiLFxuICAgICAgICBjb21wb25lbnQ6IExvY2F0aW9uc0NvbXBvbmVudCxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcGF0aDogXCI6aWRcIixcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHsgcGF0aDogXCJcIiwgY29tcG9uZW50OiBEZXRhaWxMb2NhdGlvbkNvbXBvbmVudCB9LFxuICAgICAgICAgICAgeyBwYXRoOiBcInpvbmVzXCIsIGNvbXBvbmVudDogWm9uZXNDb21wb25lbnQgfSxcbiAgICAgICAgICAgIHsgcGF0aDogXCJ2aXNpdHNcIiwgY29tcG9uZW50OiBWaXNpdHNDb21wb25lbnQgfSxcbiAgICAgICAgICAgIHsgcGF0aDogXCJwbGFuc1wiLCBjb21wb25lbnQ6IFBsYW5zQ29tcG9uZW50IH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGF0aDogXCJwbGFuLWNhbGlicmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBDYWxpYnJhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGF0aDogXCJwbGFuLWVkaXRcIixcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEVkaXRQbGFuQ29tcG9uZW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcGF0aDogXCJpbWFnZXNcIiwgY29tcG9uZW50OiBJbWFnZXNDb21wb25lbnQgfSxcbiAgICAgICAgXSxcbiAgICB9LFxuICBdO1xuICBcbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYXRpb25zUm91dGluZ01vZHVsZSB7IH0iXX0=