@dssp/dkpi 1.0.0-alpha.7 → 1.0.0-alpha.70
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/KPI-STATISTICS-SERVICE.md +233 -0
- package/_index.html +0 -5
- package/assets/favicon.ico +0 -0
- package/assets/images/project-image.png +0 -0
- package/assets/manifest/apple-1024.png +0 -0
- package/assets/manifest/apple-120.png +0 -0
- package/assets/manifest/apple-152.png +0 -0
- package/assets/manifest/apple-167.png +0 -0
- package/assets/manifest/apple-180.png +0 -0
- package/assets/manifest/apple-touch-icon.png +0 -0
- package/assets/manifest/badge-128x128.png +0 -0
- package/assets/manifest/chrome-splashscreen-icon-384x384.png +0 -0
- package/assets/manifest/chrome-touch-icon-192x192.png +0 -0
- package/assets/manifest/icon-128x128.png +0 -0
- package/assets/manifest/icon-192x192.png +0 -0
- package/assets/manifest/icon-512x512.png +0 -0
- package/assets/manifest/icon-72x72.png +0 -0
- package/assets/manifest/icon-96x96.png +0 -0
- package/assets/manifest/image-metaog.png +0 -0
- package/assets/manifest/maskable_icon.png +0 -0
- package/assets/manifest/ms-icon-144x144.png +0 -0
- package/assets/manifest/ms-touch-icon-144x144-precomposed.png +0 -0
- package/assets/videos/intro.mp4 +0 -0
- package/dist-client/bootstrap.js +64 -4
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/kpi-2d-lookup-chart.d.ts +43 -0
- package/dist-client/components/kpi-2d-lookup-chart.js +253 -0
- package/dist-client/components/kpi-2d-lookup-chart.js.map +1 -0
- package/dist-client/components/kpi-boxplot-chart.d.ts +24 -0
- package/dist-client/components/kpi-boxplot-chart.js +291 -0
- package/dist-client/components/kpi-boxplot-chart.js.map +1 -0
- package/dist-client/components/kpi-lookup-chart.d.ts +53 -0
- package/dist-client/components/kpi-lookup-chart.js +430 -0
- package/dist-client/components/kpi-lookup-chart.js.map +1 -0
- package/dist-client/components/kpi-mini-trend-chart.d.ts +14 -0
- package/dist-client/components/kpi-mini-trend-chart.js +148 -0
- package/dist-client/components/kpi-mini-trend-chart.js.map +1 -0
- package/dist-client/components/kpi-radar-chart.d.ts +17 -0
- package/dist-client/components/kpi-radar-chart.js +259 -0
- package/dist-client/components/kpi-radar-chart.js.map +1 -0
- package/dist-client/components/kpi-single-boxplot-chart.d.ts +24 -0
- package/dist-client/components/kpi-single-boxplot-chart.js +391 -0
- package/dist-client/components/kpi-single-boxplot-chart.js.map +1 -0
- package/dist-client/components/kpi-trend-chart.d.ts +25 -0
- package/dist-client/components/kpi-trend-chart.js +220 -0
- package/dist-client/components/kpi-trend-chart.js.map +1 -0
- package/dist-client/components/sv-pagenation-control.d.ts +18 -0
- package/dist-client/components/sv-pagenation-control.js +142 -0
- package/dist-client/components/sv-pagenation-control.js.map +1 -0
- package/dist-client/google-map/common-google-map.d.ts +35 -0
- package/dist-client/google-map/common-google-map.js +345 -0
- package/dist-client/google-map/common-google-map.js.map +1 -0
- package/dist-client/google-map/google-map-loader.d.ts +6 -0
- package/dist-client/google-map/google-map-loader.js +23 -0
- package/dist-client/google-map/google-map-loader.js.map +1 -0
- package/dist-client/icons/menu-icons.d.ts +6 -0
- package/dist-client/icons/menu-icons.js +42 -0
- package/dist-client/icons/menu-icons.js.map +1 -1
- package/dist-client/pages/kpi-admin/dssp-kpi-list-page.d.ts +22 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-list-page.js +57 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-list-page.js.map +1 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-overview.d.ts +46 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-overview.js +378 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-overview.js.map +1 -0
- package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.d.ts +20 -0
- package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.js +445 -0
- package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.js.map +1 -0
- package/dist-client/pages/kpi-admin/kpi-system-guide.d.ts +18 -0
- package/dist-client/pages/kpi-admin/kpi-system-guide.js +535 -0
- package/dist-client/pages/kpi-admin/kpi-system-guide.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.d.ts +18 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +259 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.d.ts +22 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +346 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.d.ts +26 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +433 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.d.ts +8 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js +78 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +38 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +851 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +42 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +316 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.d.ts +28 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +497 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.d.ts +18 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js +131 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.d.ts +52 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +798 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.d.ts +63 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +1089 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.d.ts +12 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js +82 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.d.ts +11 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js +65 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.d.ts +13 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.js +115 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.d.ts +15 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js +147 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.d.ts +7 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.js +86 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +57 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +719 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.d.ts +23 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +76 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +68 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +380 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +12 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +174 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.d.ts +40 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js +190 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.d.ts +23 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.js +93 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +71 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.js +464 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.d.ts +14 -0
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.js +339 -0
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.d.ts +14 -0
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.js +276 -0
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.d.ts +18 -0
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.js +307 -0
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab4-monthly.d.ts +18 -0
- package/dist-client/pages/project-complete-tabs/pc-tab4-monthly.js +433 -0
- package/dist-client/pages/project-complete-tabs/pc-tab4-monthly.js.map +1 -0
- package/dist-client/pages/sv-project-complete.d.ts +21 -0
- package/dist-client/pages/sv-project-complete.js +213 -0
- package/dist-client/pages/sv-project-complete.js.map +1 -0
- package/dist-client/pages/sv-project-completed-list.d.ts +27 -0
- package/dist-client/pages/sv-project-completed-list.js +416 -0
- package/dist-client/pages/sv-project-completed-list.js.map +1 -0
- package/dist-client/pages/sv-project-detail.d.ts +46 -0
- package/dist-client/pages/sv-project-detail.js +1236 -0
- package/dist-client/pages/sv-project-detail.js.map +1 -0
- package/dist-client/pages/sv-project-list.d.ts +165 -0
- package/dist-client/pages/sv-project-list.js +488 -0
- package/dist-client/pages/sv-project-list.js.map +1 -0
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +35 -1
- package/dist-client/route.js.map +1 -1
- package/dist-client/shared/complete-api.d.ts +8 -0
- package/dist-client/shared/complete-api.js +177 -0
- package/dist-client/shared/complete-api.js.map +1 -0
- package/dist-client/shared/func.d.ts +2 -0
- package/dist-client/shared/func.js +22 -0
- package/dist-client/shared/func.js.map +1 -0
- package/dist-client/themes/dark.css +24 -24
- package/dist-client/themes/light.css +23 -23
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/viewparts/menu-tools.d.ts +40 -5
- package/dist-client/viewparts/menu-tools.js +289 -34
- package/dist-client/viewparts/menu-tools.js.map +1 -1
- package/dist-server/index.d.ts +2 -0
- package/dist-server/index.js +5 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/scripts/calculate-kpi-scores.d.ts +10 -0
- package/dist-server/scripts/calculate-kpi-scores.js +333 -0
- package/dist-server/scripts/calculate-kpi-scores.js.map +1 -0
- package/dist-server/scripts/load-grade-data-migration.d.ts +14 -0
- package/dist-server/scripts/load-grade-data-migration.js +279 -0
- package/dist-server/scripts/load-grade-data-migration.js.map +1 -0
- package/dist-server/scripts/propagate-parent-kpi-values.d.ts +14 -0
- package/dist-server/scripts/propagate-parent-kpi-values.js +786 -0
- package/dist-server/scripts/propagate-parent-kpi-values.js.map +1 -0
- package/dist-server/scripts/recalculate-by-project-name.d.ts +2 -0
- package/dist-server/scripts/recalculate-by-project-name.js +72 -0
- package/dist-server/scripts/recalculate-by-project-name.js.map +1 -0
- package/dist-server/service/index.d.ts +4 -0
- package/dist-server/service/index.js +20 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/kpi-metric-value/index.d.ts +4 -0
- package/dist-server/service/kpi-metric-value/index.js +8 -0
- package/dist-server/service/kpi-metric-value/index.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +74 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +687 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.d.ts +7 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js +52 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js.map +1 -0
- package/dist-server/service/kpi-stat/index.d.ts +4 -0
- package/dist-server/service/kpi-stat/index.js +8 -0
- package/dist-server/service/kpi-stat/index.js.map +1 -0
- package/dist-server/service/kpi-stat/kpi-stat-query.d.ts +12 -0
- package/dist-server/service/kpi-stat/kpi-stat-query.js +662 -0
- package/dist-server/service/kpi-stat/kpi-stat-query.js.map +1 -0
- package/dist-server/service/kpi-stat/kpi-stat-types.d.ts +32 -0
- package/dist-server/service/kpi-stat/kpi-stat-types.js +180 -0
- package/dist-server/service/kpi-stat/kpi-stat-types.js.map +1 -0
- package/dist-server/service/kpi-value/index.d.ts +3 -0
- package/dist-server/service/kpi-value/index.js +7 -0
- package/dist-server/service/kpi-value/index.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-query.d.ts +8 -0
- package/dist-server/service/kpi-value/kpi-value-query.js +69 -0
- package/dist-server/service/kpi-value/kpi-value-query.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/kpi-module-service-tests.md +1286 -0
- package/kpi-module-test-report.md +676 -0
- package/kpi-module-unit-test-detailed-report.md +925 -0
- package/kpi-module-unit-tests-detailed.md +1452 -0
- package/package.json +65 -55
- package/recalculate-batch.sh +64 -0
- package/recalculate-projects-range.sh +98 -0
- package/schema.graphql +2514 -455
- package/things-factory.config.js +11 -1
- package/views/auth-page.html +0 -1
- package/views/public/home.html +0 -1
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { LitElement, html, css } from 'lit';
|
|
3
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
|
+
import { ScrollbarStyles } from '@operato/styles';
|
|
5
|
+
import GoogleMapLoader from './google-map-loader.js';
|
|
6
|
+
let CommonGoogleMap = class CommonGoogleMap extends LitElement {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.locations = [];
|
|
10
|
+
this.clusterZoom = 10;
|
|
11
|
+
this.map = null;
|
|
12
|
+
this.defaultCenter = { lat: 36.5, lng: 127.5 };
|
|
13
|
+
this._infoWindow = null;
|
|
14
|
+
this._markerClusterer = null;
|
|
15
|
+
this._buildMarkersTimer = null;
|
|
16
|
+
}
|
|
17
|
+
get anchor() {
|
|
18
|
+
return this.renderRoot.querySelector('[map]');
|
|
19
|
+
}
|
|
20
|
+
async readyMap() {
|
|
21
|
+
var _a;
|
|
22
|
+
await GoogleMapLoader.load();
|
|
23
|
+
// MarkerClusterer 라이브러리 로드
|
|
24
|
+
if (!window.markerClusterer) {
|
|
25
|
+
await GoogleMapLoader.loadMarkerClusterer();
|
|
26
|
+
}
|
|
27
|
+
if (this.map) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// DOM이 준비될 때까지 기다림
|
|
31
|
+
await this.updateComplete;
|
|
32
|
+
// anchor가 준비될 때까지 기다림
|
|
33
|
+
let attempts = 0;
|
|
34
|
+
const maxAttempts = 20;
|
|
35
|
+
while (attempts < maxAttempts) {
|
|
36
|
+
const anchor = this.anchor;
|
|
37
|
+
if (anchor && anchor.offsetWidth > 0) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
41
|
+
attempts++;
|
|
42
|
+
}
|
|
43
|
+
if (!this.anchor) {
|
|
44
|
+
console.error('Map anchor element not found');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
var show = async (center, zoom) => {
|
|
48
|
+
try {
|
|
49
|
+
// Google Maps 최신 API 사용
|
|
50
|
+
const { Map } = (await google.maps.importLibrary('maps'));
|
|
51
|
+
const mapOptions = {
|
|
52
|
+
zoom,
|
|
53
|
+
center,
|
|
54
|
+
mapId: 'DEMO_MAP_ID'
|
|
55
|
+
};
|
|
56
|
+
// controls 속성이 있으면 지도 옵션에 추가
|
|
57
|
+
if (this.controls) {
|
|
58
|
+
Object.assign(mapOptions, this.controls);
|
|
59
|
+
}
|
|
60
|
+
const map = new Map(this.anchor, mapOptions);
|
|
61
|
+
this.markers && this.markers.forEach(marker => marker.setMap(map));
|
|
62
|
+
this.map = map;
|
|
63
|
+
this.dispatchEvent(new CustomEvent('map-change', {
|
|
64
|
+
detail: this.map
|
|
65
|
+
}));
|
|
66
|
+
// 줌 변경 이벤트 전달
|
|
67
|
+
map.addListener('zoom_changed', () => {
|
|
68
|
+
this.dispatchEvent(new CustomEvent('zoom-changed', {
|
|
69
|
+
detail: { zoom: map.getZoom() },
|
|
70
|
+
bubbles: true,
|
|
71
|
+
composed: true
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
this.resetBounds();
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.error(e);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var { center, zoom = 10 } = this;
|
|
81
|
+
/* center 속성이 설정되어있지 않으면, 현재 위치를 구해서 지도의 center로 설정한다. */
|
|
82
|
+
if (!center && 'geolocation' in navigator && !((_a = this.boundCoords) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
83
|
+
navigator.geolocation.getCurrentPosition(({ coords: { latitude: lat, longitude: lng } }) => show({ lat, lng }, zoom), err => {
|
|
84
|
+
console.warn(`navigator.geolocation.getCurrentPosition failed. (${err.code}): ${err.message}`);
|
|
85
|
+
show(this.defaultCenter, zoom);
|
|
86
|
+
}, {
|
|
87
|
+
/* https://stackoverflow.com/questions/3397585/navigator-geolocation-getcurrentposition-sometimes-works-sometimes-doesnt */
|
|
88
|
+
timeout: 500
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
show(center, zoom);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async buildMarkers(locations = []) {
|
|
96
|
+
if (!this.map) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (this.markers) {
|
|
100
|
+
this.markers.forEach(marker => marker.setMap(null));
|
|
101
|
+
this.markers = [];
|
|
102
|
+
}
|
|
103
|
+
// 기존 클러스터 제거
|
|
104
|
+
if (this._markerClusterer) {
|
|
105
|
+
this._markerClusterer.clearMarkers();
|
|
106
|
+
this._markerClusterer = null;
|
|
107
|
+
}
|
|
108
|
+
// Google Maps 최신 API 사용
|
|
109
|
+
const { AdvancedMarkerElement, PinElement } = (await google.maps.importLibrary('marker'));
|
|
110
|
+
this.markers = locations
|
|
111
|
+
.map(location => {
|
|
112
|
+
// location 객체가 유효한지 확인
|
|
113
|
+
if (!location || typeof location !== 'object') {
|
|
114
|
+
console.warn('Invalid location object:', location);
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
// lat, lng 값이 유효한지 확인
|
|
118
|
+
const lat = parseFloat(location.lat);
|
|
119
|
+
const lng = parseFloat(location.lng);
|
|
120
|
+
if (isNaN(lat) || isNaN(lng)) {
|
|
121
|
+
console.warn('Invalid lat/lng values:', location);
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
// LatLng 객체 생성
|
|
125
|
+
const position = new google.maps.LatLng(lat, lng);
|
|
126
|
+
// 커스텀 마커 콘텐츠가 있으면 사용
|
|
127
|
+
let markerElement;
|
|
128
|
+
if (location.markerContent) {
|
|
129
|
+
// HTML 문자열을 DOM 요소로 변환
|
|
130
|
+
const tempDiv = document.createElement('div');
|
|
131
|
+
tempDiv.innerHTML = location.markerContent;
|
|
132
|
+
markerElement = tempDiv.firstElementChild;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// 기본 핀 사용
|
|
136
|
+
markerElement = new PinElement({
|
|
137
|
+
background: '#1976d2',
|
|
138
|
+
borderColor: '#1565c0',
|
|
139
|
+
glyphColor: '#ffffff',
|
|
140
|
+
scale: 1.2
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
// AdvancedMarkerElement 사용
|
|
144
|
+
const marker = new AdvancedMarkerElement({
|
|
145
|
+
position: position,
|
|
146
|
+
map: this.map,
|
|
147
|
+
content: markerElement
|
|
148
|
+
});
|
|
149
|
+
marker.addListener('click', () => {
|
|
150
|
+
// InfoWindow 대신 커스텀 이벤트 발생
|
|
151
|
+
if (location === null || location === void 0 ? void 0 : location.region) {
|
|
152
|
+
this.dispatchEvent(new CustomEvent('region-click', {
|
|
153
|
+
detail: { region: location.region },
|
|
154
|
+
bubbles: true,
|
|
155
|
+
composed: true
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
return marker;
|
|
160
|
+
})
|
|
161
|
+
.filter(marker => marker !== null); // null 마커 제거
|
|
162
|
+
// MarkerClusterer 미사용 — 마커 수가 적으므로 직접 지도에 표시
|
|
163
|
+
}
|
|
164
|
+
get infoWindow() {
|
|
165
|
+
if (!this._infoWindow && this.map) {
|
|
166
|
+
this._infoWindow = new google.maps.InfoWindow({
|
|
167
|
+
content: 'loading...'
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return this._infoWindow;
|
|
171
|
+
}
|
|
172
|
+
setFocus(focus, icon) {
|
|
173
|
+
focus.setZIndex(1);
|
|
174
|
+
focus.setIcon(icon);
|
|
175
|
+
}
|
|
176
|
+
resetFocus(focus, icon) {
|
|
177
|
+
focus.setZIndex(0);
|
|
178
|
+
focus.setIcon(icon);
|
|
179
|
+
}
|
|
180
|
+
async changeFocus(after, before) {
|
|
181
|
+
var _a;
|
|
182
|
+
await this.readyMap();
|
|
183
|
+
// map이 준비되지 않았으면 포커스 변경하지 않음
|
|
184
|
+
if (!this.map) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
var locations = this.locations || [];
|
|
188
|
+
if (before) {
|
|
189
|
+
var idx = locations.findIndex(location => {
|
|
190
|
+
// location 객체의 구조를 안전하게 확인
|
|
191
|
+
const beforePos = before === null || before === void 0 ? void 0 : before.position;
|
|
192
|
+
const locationPos = location === null || location === void 0 ? void 0 : location.position;
|
|
193
|
+
return ((location === null || location === void 0 ? void 0 : location.name) == (before === null || before === void 0 ? void 0 : before.name) && (locationPos === null || locationPos === void 0 ? void 0 : locationPos.lat) == (beforePos === null || beforePos === void 0 ? void 0 : beforePos.lat) && (locationPos === null || locationPos === void 0 ? void 0 : locationPos.lng) == (beforePos === null || beforePos === void 0 ? void 0 : beforePos.lng));
|
|
194
|
+
});
|
|
195
|
+
idx !== -1 && this.markers && this.resetFocus(this.markers[idx], (_a = locations[idx]) === null || _a === void 0 ? void 0 : _a.icon);
|
|
196
|
+
}
|
|
197
|
+
if (after) {
|
|
198
|
+
var idx = locations.findIndex(location => {
|
|
199
|
+
// location 객체의 구조를 안전하게 확인
|
|
200
|
+
const afterPos = after === null || after === void 0 ? void 0 : after.position;
|
|
201
|
+
const locationPos = location === null || location === void 0 ? void 0 : location.position;
|
|
202
|
+
return (location === null || location === void 0 ? void 0 : location.name) == (after === null || after === void 0 ? void 0 : after.name) && (locationPos === null || locationPos === void 0 ? void 0 : locationPos.lat) == (afterPos === null || afterPos === void 0 ? void 0 : afterPos.lat) && (locationPos === null || locationPos === void 0 ? void 0 : locationPos.lng) == (afterPos === null || afterPos === void 0 ? void 0 : afterPos.lng);
|
|
203
|
+
});
|
|
204
|
+
idx !== -1 && this.markers && this.setFocus(this.markers[idx], after === null || after === void 0 ? void 0 : after.icon);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async updated(changes) {
|
|
208
|
+
if (!this.map) {
|
|
209
|
+
await this.readyMap();
|
|
210
|
+
}
|
|
211
|
+
if (changes.has('locations')) {
|
|
212
|
+
// 디바운스: 연속된 업데이트를 하나로 묶음
|
|
213
|
+
if (this._buildMarkersTimer) {
|
|
214
|
+
clearTimeout(this._buildMarkersTimer);
|
|
215
|
+
}
|
|
216
|
+
this._buildMarkersTimer = setTimeout(() => {
|
|
217
|
+
this.buildMarkers(this.locations);
|
|
218
|
+
this._buildMarkersTimer = null;
|
|
219
|
+
}, 500);
|
|
220
|
+
}
|
|
221
|
+
if (changes.has('focused')) {
|
|
222
|
+
this.changeFocus(this.focused, changes.get('focused'));
|
|
223
|
+
}
|
|
224
|
+
if (changes.has('center')) {
|
|
225
|
+
this.map.setCenter(this.center);
|
|
226
|
+
}
|
|
227
|
+
if (changes.has('controls')) {
|
|
228
|
+
// controls가 변경되면 기존 지도의 옵션만 업데이트
|
|
229
|
+
if (this.map && this.controls) {
|
|
230
|
+
// Google Maps API의 setOptions 메서드 사용
|
|
231
|
+
this.map.setOptions(this.controls);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (changes.has('polygons')) {
|
|
235
|
+
;
|
|
236
|
+
(changes.get('polygons') || []).forEach(geofence => geofence.setMap(null));
|
|
237
|
+
(this.polygons || []).forEach(geofence => geofence.setMap(this.map));
|
|
238
|
+
}
|
|
239
|
+
if (changes.has('polylines')) {
|
|
240
|
+
;
|
|
241
|
+
(changes.get('polylines') || []).forEach(polyline => polyline.setMap(null));
|
|
242
|
+
(this.polylines || []).forEach(polyline => polyline.setMap(this.map));
|
|
243
|
+
}
|
|
244
|
+
if (changes.has('markers')) {
|
|
245
|
+
;
|
|
246
|
+
(changes.get('markers') || []).forEach(marker => marker.setMap(null));
|
|
247
|
+
(this.markers || []).forEach(marker => marker.setMap(this.map));
|
|
248
|
+
}
|
|
249
|
+
if (changes.has('boundCoords')) {
|
|
250
|
+
this.resetBounds();
|
|
251
|
+
}
|
|
252
|
+
// 클러스터링 설정 변경 시 마커 재구성
|
|
253
|
+
if (changes.has('clusterZoom')) {
|
|
254
|
+
this.buildMarkers(this.locations);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
render() {
|
|
258
|
+
return html ` <div map></div> `;
|
|
259
|
+
}
|
|
260
|
+
resetBounds() {
|
|
261
|
+
if (!this.boundCoords || this.boundCoords.length < 1 || !this.map) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
var bounds = new google.maps.LatLngBounds();
|
|
265
|
+
this.boundCoords.forEach(coord => bounds.extend(coord));
|
|
266
|
+
this.map.fitBounds(bounds);
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
CommonGoogleMap.styles = [
|
|
270
|
+
ScrollbarStyles,
|
|
271
|
+
css `
|
|
272
|
+
:host {
|
|
273
|
+
display: flex;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
[map] {
|
|
277
|
+
flex: 1;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.gm-style .gm-style-iw-c {
|
|
281
|
+
padding: 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.gm-style .gm-style-iw-d {
|
|
285
|
+
overflow: auto !important;
|
|
286
|
+
}
|
|
287
|
+
.gm-style .gm-style-iw-d + button {
|
|
288
|
+
top: 0 !important;
|
|
289
|
+
right: 0 !important;
|
|
290
|
+
}
|
|
291
|
+
`
|
|
292
|
+
];
|
|
293
|
+
__decorate([
|
|
294
|
+
property({ type: Object }),
|
|
295
|
+
__metadata("design:type", Object)
|
|
296
|
+
], CommonGoogleMap.prototype, "center", void 0);
|
|
297
|
+
__decorate([
|
|
298
|
+
property({ type: Number }),
|
|
299
|
+
__metadata("design:type", Object)
|
|
300
|
+
], CommonGoogleMap.prototype, "zoom", void 0);
|
|
301
|
+
__decorate([
|
|
302
|
+
property({ type: Array }),
|
|
303
|
+
__metadata("design:type", Array)
|
|
304
|
+
], CommonGoogleMap.prototype, "locations", void 0);
|
|
305
|
+
__decorate([
|
|
306
|
+
property({ type: Object }),
|
|
307
|
+
__metadata("design:type", Object)
|
|
308
|
+
], CommonGoogleMap.prototype, "focused", void 0);
|
|
309
|
+
__decorate([
|
|
310
|
+
property({ type: Array }),
|
|
311
|
+
__metadata("design:type", Object)
|
|
312
|
+
], CommonGoogleMap.prototype, "polygons", void 0);
|
|
313
|
+
__decorate([
|
|
314
|
+
property({ type: Array }),
|
|
315
|
+
__metadata("design:type", Object)
|
|
316
|
+
], CommonGoogleMap.prototype, "polylines", void 0);
|
|
317
|
+
__decorate([
|
|
318
|
+
property({ type: Array }),
|
|
319
|
+
__metadata("design:type", Object)
|
|
320
|
+
], CommonGoogleMap.prototype, "markers", void 0);
|
|
321
|
+
__decorate([
|
|
322
|
+
property({ type: Array }),
|
|
323
|
+
__metadata("design:type", Object)
|
|
324
|
+
], CommonGoogleMap.prototype, "boundCoords", void 0);
|
|
325
|
+
__decorate([
|
|
326
|
+
property({ type: Object }),
|
|
327
|
+
__metadata("design:type", Object)
|
|
328
|
+
], CommonGoogleMap.prototype, "controls", void 0);
|
|
329
|
+
__decorate([
|
|
330
|
+
property({ type: Number }),
|
|
331
|
+
__metadata("design:type", Object)
|
|
332
|
+
], CommonGoogleMap.prototype, "clusterZoom", void 0);
|
|
333
|
+
__decorate([
|
|
334
|
+
state(),
|
|
335
|
+
__metadata("design:type", Object)
|
|
336
|
+
], CommonGoogleMap.prototype, "map", void 0);
|
|
337
|
+
__decorate([
|
|
338
|
+
state(),
|
|
339
|
+
__metadata("design:type", Object)
|
|
340
|
+
], CommonGoogleMap.prototype, "defaultCenter", void 0);
|
|
341
|
+
CommonGoogleMap = __decorate([
|
|
342
|
+
customElement('common-google-map')
|
|
343
|
+
], CommonGoogleMap);
|
|
344
|
+
export { CommonGoogleMap };
|
|
345
|
+
//# sourceMappingURL=common-google-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-google-map.js","sourceRoot":"","sources":["../../client/google-map/common-google-map.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport GoogleMapLoader from './google-map-loader.js'\n\ndeclare global {\n interface Window {\n google: any\n markerClusterer?: any\n }\n}\n\ndeclare const google: any\n\ndeclare namespace google.maps {\n interface MapsLibrary {\n Map: any\n InfoWindow: any\n }\n\n interface MarkerLibrary {\n AdvancedMarkerElement: any\n PinElement: any\n }\n}\n\n@customElement('common-google-map')\nexport class CommonGoogleMap extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n }\n\n [map] {\n flex: 1;\n }\n\n .gm-style .gm-style-iw-c {\n padding: 0;\n }\n\n .gm-style .gm-style-iw-d {\n overflow: auto !important;\n }\n .gm-style .gm-style-iw-d + button {\n top: 0 !important;\n right: 0 !important;\n }\n `\n ]\n\n @property({ type: Object }) center\n @property({ type: Number }) zoom\n @property({ type: Array }) locations: any[] = []\n @property({ type: Object }) focused\n @property({ type: Array }) polygons\n @property({ type: Array }) polylines\n @property({ type: Array }) markers\n @property({ type: Array }) boundCoords\n @property({ type: Object }) controls\n @property({ type: Number }) clusterZoom = 10\n\n @state() map: any = null\n @state() defaultCenter: any = { lat: 36.5, lng: 127.5 }\n private _infoWindow: any = null\n private _markerClusterer: any = null\n private _buildMarkersTimer: any = null\n\n get anchor() {\n return this.renderRoot.querySelector('[map]')\n }\n\n async readyMap() {\n await GoogleMapLoader.load()\n\n // MarkerClusterer 라이브러리 로드\n if (!window.markerClusterer) {\n await GoogleMapLoader.loadMarkerClusterer()\n }\n\n if (this.map) {\n return\n }\n\n // DOM이 준비될 때까지 기다림\n await this.updateComplete\n\n // anchor가 준비될 때까지 기다림\n let attempts = 0\n const maxAttempts = 20\n while (attempts < maxAttempts) {\n const anchor = this.anchor as HTMLElement\n if (anchor && anchor.offsetWidth > 0) {\n break\n }\n await new Promise(resolve => setTimeout(resolve, 50))\n attempts++\n }\n\n if (!this.anchor) {\n console.error('Map anchor element not found')\n return\n }\n\n var show = async (center, zoom) => {\n try {\n // Google Maps 최신 API 사용\n const { Map } = (await google.maps.importLibrary('maps')) as google.maps.MapsLibrary\n\n const mapOptions = {\n zoom,\n center,\n mapId: 'DEMO_MAP_ID'\n }\n\n // controls 속성이 있으면 지도 옵션에 추가\n if (this.controls) {\n Object.assign(mapOptions, this.controls)\n }\n\n const map = new Map(this.anchor, mapOptions)\n\n this.markers && this.markers.forEach(marker => marker.setMap(map))\n\n this.map = map\n\n this.dispatchEvent(\n new CustomEvent('map-change', {\n detail: this.map\n })\n )\n\n // 줌 변경 이벤트 전달\n map.addListener('zoom_changed', () => {\n this.dispatchEvent(\n new CustomEvent('zoom-changed', {\n detail: { zoom: map.getZoom() },\n bubbles: true,\n composed: true\n })\n )\n })\n\n this.resetBounds()\n } catch (e) {\n console.error(e)\n }\n }\n\n var { center, zoom = 10 } = this\n\n /* center 속성이 설정되어있지 않으면, 현재 위치를 구해서 지도의 center로 설정한다. */\n if (!center && 'geolocation' in navigator && !this.boundCoords?.length) {\n navigator.geolocation.getCurrentPosition(\n ({ coords: { latitude: lat, longitude: lng } }) => show({ lat, lng }, zoom),\n err => {\n console.warn(`navigator.geolocation.getCurrentPosition failed. (${err.code}): ${err.message}`)\n show(this.defaultCenter, zoom)\n },\n {\n /* https://stackoverflow.com/questions/3397585/navigator-geolocation-getcurrentposition-sometimes-works-sometimes-doesnt */\n timeout: 500\n }\n )\n } else {\n show(center, zoom)\n }\n }\n\n async buildMarkers(locations: any[] = []) {\n if (!this.map) {\n return\n }\n\n if (this.markers) {\n this.markers.forEach(marker => marker.setMap(null))\n this.markers = []\n }\n\n // 기존 클러스터 제거\n if (this._markerClusterer) {\n this._markerClusterer.clearMarkers()\n this._markerClusterer = null\n }\n\n // Google Maps 최신 API 사용\n const { AdvancedMarkerElement, PinElement } = (await google.maps.importLibrary(\n 'marker'\n )) as google.maps.MarkerLibrary\n\n this.markers = locations\n .map(location => {\n // location 객체가 유효한지 확인\n if (!location || typeof location !== 'object') {\n console.warn('Invalid location object:', location)\n return null\n }\n\n // lat, lng 값이 유효한지 확인\n const lat = parseFloat(location.lat)\n const lng = parseFloat(location.lng)\n\n if (isNaN(lat) || isNaN(lng)) {\n console.warn('Invalid lat/lng values:', location)\n return null\n }\n\n // LatLng 객체 생성\n const position = new google.maps.LatLng(lat, lng)\n\n // 커스텀 마커 콘텐츠가 있으면 사용\n let markerElement\n if (location.markerContent) {\n // HTML 문자열을 DOM 요소로 변환\n const tempDiv = document.createElement('div')\n tempDiv.innerHTML = location.markerContent\n markerElement = tempDiv.firstElementChild\n } else {\n // 기본 핀 사용\n markerElement = new PinElement({\n background: '#1976d2',\n borderColor: '#1565c0',\n glyphColor: '#ffffff',\n scale: 1.2\n })\n }\n\n // AdvancedMarkerElement 사용\n const marker = new AdvancedMarkerElement({\n position: position,\n map: this.map,\n content: markerElement\n })\n\n marker.addListener('click', () => {\n // InfoWindow 대신 커스텀 이벤트 발생\n if (location?.region) {\n this.dispatchEvent(\n new CustomEvent('region-click', {\n detail: { region: location.region },\n bubbles: true,\n composed: true\n })\n )\n }\n })\n\n return marker\n })\n .filter(marker => marker !== null) // null 마커 제거\n\n // MarkerClusterer 미사용 — 마커 수가 적으므로 직접 지도에 표시\n }\n\n get infoWindow() {\n if (!this._infoWindow && this.map) {\n this._infoWindow = new google.maps.InfoWindow({\n content: 'loading...'\n })\n }\n\n return this._infoWindow\n }\n\n setFocus(focus, icon) {\n focus.setZIndex(1)\n focus.setIcon(icon)\n }\n\n resetFocus(focus, icon) {\n focus.setZIndex(0)\n focus.setIcon(icon)\n }\n\n async changeFocus(after, before) {\n await this.readyMap()\n\n // map이 준비되지 않았으면 포커스 변경하지 않음\n if (!this.map) {\n return\n }\n\n var locations = this.locations || []\n\n if (before) {\n var idx = locations.findIndex(location => {\n // location 객체의 구조를 안전하게 확인\n const beforePos = before?.position\n const locationPos = location?.position\n\n return (\n location?.name == before?.name && locationPos?.lat == beforePos?.lat && locationPos?.lng == beforePos?.lng\n )\n })\n idx !== -1 && this.markers && this.resetFocus(this.markers[idx], locations[idx]?.icon)\n }\n\n if (after) {\n var idx = locations.findIndex(location => {\n // location 객체의 구조를 안전하게 확인\n const afterPos = after?.position\n const locationPos = location?.position\n\n return location?.name == after?.name && locationPos?.lat == afterPos?.lat && locationPos?.lng == afterPos?.lng\n })\n idx !== -1 && this.markers && this.setFocus(this.markers[idx], after?.icon)\n }\n }\n\n async updated(changes) {\n if (!this.map) {\n await this.readyMap()\n }\n\n if (changes.has('locations')) {\n // 디바운스: 연속된 업데이트를 하나로 묶음\n if (this._buildMarkersTimer) {\n clearTimeout(this._buildMarkersTimer)\n }\n this._buildMarkersTimer = setTimeout(() => {\n this.buildMarkers(this.locations)\n this._buildMarkersTimer = null\n }, 500)\n }\n\n if (changes.has('focused')) {\n this.changeFocus(this.focused, changes.get('focused'))\n }\n\n if (changes.has('center')) {\n this.map.setCenter(this.center)\n }\n\n if (changes.has('controls')) {\n // controls가 변경되면 기존 지도의 옵션만 업데이트\n if (this.map && this.controls) {\n // Google Maps API의 setOptions 메서드 사용\n this.map.setOptions(this.controls)\n }\n }\n\n if (changes.has('polygons')) {\n ;(changes.get('polygons') || []).forEach(geofence => geofence.setMap(null))\n ;(this.polygons || []).forEach(geofence => geofence.setMap(this.map))\n }\n\n if (changes.has('polylines')) {\n ;(changes.get('polylines') || []).forEach(polyline => polyline.setMap(null))\n ;(this.polylines || []).forEach(polyline => polyline.setMap(this.map))\n }\n\n if (changes.has('markers')) {\n ;(changes.get('markers') || []).forEach(marker => marker.setMap(null))\n ;(this.markers || []).forEach(marker => marker.setMap(this.map))\n }\n\n if (changes.has('boundCoords')) {\n this.resetBounds()\n }\n\n // 클러스터링 설정 변경 시 마커 재구성\n if (changes.has('clusterZoom')) {\n this.buildMarkers(this.locations)\n }\n }\n\n render() {\n return html` <div map></div> `\n }\n\n resetBounds() {\n if (!this.boundCoords || this.boundCoords.length < 1 || !this.map) {\n return\n }\n\n var bounds = new google.maps.LatLngBounds()\n this.boundCoords.forEach(coord => bounds.extend(coord))\n this.map.fitBounds(bounds)\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import ScriptLoader from '@operato/utils/script-loader.js';
|
|
2
|
+
class GoogleMapLoader {
|
|
3
|
+
static async load() {
|
|
4
|
+
if (GoogleMapLoader.loaded) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
var key = 'AIzaSyBgQZb-SFqjQBC_XTxNiz0XapejNwV9PgA';
|
|
8
|
+
await ScriptLoader.load('https://maps.googleapis.com/maps/api/js' + (key ? '?key=' + key : '') + '&libraries=places');
|
|
9
|
+
GoogleMapLoader.loaded = true;
|
|
10
|
+
}
|
|
11
|
+
static async loadMarkerClusterer() {
|
|
12
|
+
if (GoogleMapLoader.markerClustererLoaded) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
// Google Maps 공식 MarkerClusterer 라이브러리 로드
|
|
16
|
+
await ScriptLoader.load('https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js');
|
|
17
|
+
GoogleMapLoader.markerClustererLoaded = true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
GoogleMapLoader.loaded = false;
|
|
21
|
+
GoogleMapLoader.markerClustererLoaded = false;
|
|
22
|
+
export default GoogleMapLoader;
|
|
23
|
+
//# sourceMappingURL=google-map-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-map-loader.js","sourceRoot":"","sources":["../../client/google-map/google-map-loader.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,iCAAiC,CAAA;AAE1D,MAAqB,eAAe;IAIlC,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,GAAG,GAAG,yCAAyC,CAAA;QAEnD,MAAM,YAAY,CAAC,IAAI,CACrB,yCAAyC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAC7F,CAAA;QACD,eAAe,CAAC,MAAM,GAAG,IAAI,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB;QAC9B,IAAI,eAAe,CAAC,qBAAqB,EAAE,CAAC;YAC1C,OAAM;QACR,CAAC;QAED,0CAA0C;QAC1C,MAAM,YAAY,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;QAE1F,eAAe,CAAC,qBAAqB,GAAG,IAAI,CAAA;IAC9C,CAAC;;AAxBM,sBAAM,GAAG,KAAK,CAAA;AACd,qCAAqB,GAAG,KAAK,CAAA;eAFjB,eAAe","sourcesContent":["import ScriptLoader from '@operato/utils/script-loader.js'\n\nexport default class GoogleMapLoader {\n static loaded = false\n static markerClustererLoaded = false\n\n static async load() {\n if (GoogleMapLoader.loaded) {\n return\n }\n var key = 'AIzaSyBgQZb-SFqjQBC_XTxNiz0XapejNwV9PgA'\n\n await ScriptLoader.load(\n 'https://maps.googleapis.com/maps/api/js' + (key ? '?key=' + key : '') + '&libraries=places'\n )\n GoogleMapLoader.loaded = true\n }\n\n static async loadMarkerClusterer() {\n if (GoogleMapLoader.markerClustererLoaded) {\n return\n }\n\n // Google Maps 공식 MarkerClusterer 라이브러리 로드\n await ScriptLoader.load('https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js')\n\n GoogleMapLoader.markerClustererLoaded = true\n }\n}\n"]}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export declare const ICON_SETTING_SCHEDULE = "\n<svg width=\"18\" height=\"20\" viewBox=\"0 0 18 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.95 15.9845L4.74625 12.7808L5.83075 11.6963L7.95 13.8155L12.1693 9.59627L13.2538 10.6808L7.95 15.9845ZM2.30775 19.5C1.80258 19.5 1.375 19.325 1.025 18.975C0.675 18.625 0.5 18.1974 0.5 17.6923V4.30777C0.5 3.8026 0.675 3.37502 1.025 3.02502C1.375 2.67502 1.80258 2.50002 2.30775 2.50002H3.69225V0.384766H5.23075V2.50002H12.8077V0.384766H14.3077V2.50002H15.6923C16.1974 2.50002 16.625 2.67502 16.975 3.02502C17.325 3.37502 17.5 3.8026 17.5 4.30777V17.6923C17.5 18.1974 17.325 18.625 16.975 18.975C16.625 19.325 16.1974 19.5 15.6923 19.5H2.30775ZM2.30775 18H15.6923C15.7692 18 15.8398 17.9679 15.9038 17.9038C15.9679 17.8398 16 17.7693 16 17.6923V8.30777H2V17.6923C2 17.7693 2.03208 17.8398 2.09625 17.9038C2.16025 17.9679 2.23075 18 2.30775 18ZM2 6.80777H16V4.30777C16 4.23077 15.9679 4.16026 15.9038 4.09626C15.8398 4.0321 15.7692 4.00002 15.6923 4.00002H2.30775C2.23075 4.00002 2.16025 4.0321 2.09625 4.09626C2.03208 4.16026 2 4.23077 2 4.30777V6.80777Z\"\n fill=\"#02A8A2\"\n />\n</svg>";
|
|
2
|
+
export declare const ICON_SETTING_COST = "\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.323 17.0385L17.4807 13.9155L16.6423 13.077L14.323 15.3558L13.3577 14.3807L12.5193 15.2345L14.323 17.0385ZM3.38475 5.86525H14.6152V4.3655H3.38475V5.86525ZM15 19.5578C13.7513 19.5578 12.6892 19.1199 11.8135 18.2443C10.9378 17.3686 10.5 16.3064 10.5 15.0577C10.5 13.8091 10.9378 12.7469 11.8135 11.8713C12.6892 10.9956 13.7513 10.5577 15 10.5577C16.2487 10.5577 17.3108 10.9956 18.1865 11.8713C19.0622 12.7469 19.5 13.8091 19.5 15.0577C19.5 16.3064 19.0622 17.3686 18.1865 18.2443C17.3108 19.1199 16.2487 19.5578 15 19.5578ZM0.5 18.3845V2.30775C0.5 1.80908 0.676583 1.38308 1.02975 1.02975C1.38308 0.676583 1.80908 0.5 2.30775 0.5H15.6923C16.1909 0.5 16.6169 0.676583 16.9703 1.02975C17.3234 1.38308 17.5 1.80908 17.5 2.30775V8.61725C17.2602 8.51208 17.0169 8.424 16.7703 8.353C16.5234 8.28183 16.2667 8.22767 16 8.1905V2.30775C16 2.23075 15.9679 2.16025 15.9038 2.09625C15.8398 2.03208 15.7692 2 15.6923 2H2.30775C2.23075 2 2.16025 2.03208 2.09625 2.09625C2.03208 2.16025 2 2.23075 2 2.30775V16.05H8.20975C8.27375 16.4448 8.36758 16.8243 8.49125 17.1885C8.61508 17.5525 8.78017 17.898 8.9865 18.225L8.89425 18.3173L7.577 17.1538L6.15375 18.3845L4.73075 17.1538L3.30775 18.3845L1.88475 17.1538L0.5 18.3845ZM3.38475 13.6345H8.277C8.3205 13.3678 8.38108 13.1112 8.45875 12.8645C8.53625 12.6177 8.63075 12.3744 8.74225 12.1348H3.38475V13.6345ZM3.38475 9.75H10.5905C11.07 9.31283 11.6136 8.96158 12.2212 8.69625C12.8289 8.43075 13.4763 8.282 14.1635 8.25H3.38475V9.75Z\"\n fill=\"#02A8A2\"\n />\n</svg>";
|
|
3
|
+
export declare const ICON_SETTING_QUALITY = "\n<svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2557 15.4999L11.2115 14.4557L13.8115 11.8557L11.2115 9.25565L12.2557 8.2114L14.8558 10.8114L17.4557 8.2114L18.5 9.25565L15.9 11.8557L18.5 14.4557L17.4557 15.4999L14.8558 12.8999L12.2557 15.4999ZM14.2402 6.8364L11.0462 3.64215L12.0903 2.5979L14.2153 4.7229L18.4653 0.4729L19.5095 1.54215L14.2402 6.8364ZM0.5 12.5577V11.0577H9V12.5577H0.5ZM0.5 4.94215V3.44215H9V4.94215H0.5Z\"\n fill=\"#02A8A2\"\n />\n</svg>";
|
|
4
|
+
export declare const ICON_SETTING_SAFETY = "\n<svg width=\"16\" height=\"20\" viewBox=\"0 0 16 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.95 13.2041L12.2538 7.90032L11.1845 6.83107L6.95 11.0658L4.83075 8.94657L3.7615 10.0158L6.95 13.2041ZM8 19.4811C5.83717 18.8912 4.0465 17.6182 2.628 15.6618C1.20933 13.7055 0.5 11.5183 0.5 9.10032V3.34657L8 0.538818L15.5 3.34657V9.10032C15.5 11.5183 14.7907 13.7055 13.372 15.6618C11.9535 17.6182 10.1628 18.8912 8 19.4811ZM8 17.9003C9.73333 17.3503 11.1667 16.2503 12.3 14.6003C13.4333 12.9503 14 11.117 14 9.10032V4.37532L8 2.13482L2 4.37532V9.10032C2 11.117 2.56667 12.9503 3.7 14.6003C4.83333 16.2503 6.26667 17.3503 8 17.9003Z\"\n fill=\"#02A8A2\"\n />\n</svg>";
|
|
5
|
+
export declare const ICON_SETTING_ENVIRONMENT = "\n<svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M2.74625 14.2493C2.04108 13.541 1.49042 12.7265 1.09425 11.8058C0.698083 10.8852 0.5 9.93334 0.5 8.95034C0.5 7.9645 0.688833 6.98633 1.0665 6.01583C1.444 5.04533 2.05392 4.13892 2.89625 3.29658C3.50525 2.68758 4.26775 2.18592 5.18375 1.79159C6.09975 1.39742 7.13725 1.09717 8.29625 0.890835C9.45525 0.684335 10.7183 0.564085 12.0855 0.530085C13.4528 0.496252 14.8872 0.540169 16.3885 0.661835C16.4962 2.09517 16.533 3.48784 16.499 4.83984C16.465 6.19167 16.3468 7.45217 16.1443 8.62134C15.9416 9.79067 15.6458 10.8436 15.2568 11.7801C14.8676 12.7166 14.3666 13.4913 13.7538 14.1041C12.9281 14.9363 12.0451 15.5437 11.1048 15.9263C10.1644 16.309 9.212 16.5003 8.2475 16.5003C7.23633 16.5003 6.24292 16.3023 5.26725 15.9061C4.29158 15.5099 3.45125 14.9577 2.74625 14.2493ZM4.9885 14.0848C5.491 14.4003 6.02208 14.6318 6.58175 14.7791C7.14142 14.9266 7.6975 15.0003 8.25 15.0003C9.021 15.0003 9.78358 14.8478 10.5378 14.5426C11.2921 14.2374 12.0077 13.74 12.6845 13.0503C12.9833 12.7503 13.2863 12.3295 13.5935 11.7878C13.9005 11.2462 14.1661 10.5378 14.3903 9.66284C14.6144 8.78784 14.7846 7.7295 14.9008 6.48783C15.0169 5.24617 15.0398 3.767 14.9693 2.05033C14.1526 2.017 13.2285 2.00767 12.197 2.02234C11.1657 2.03717 10.1368 2.12117 9.1105 2.27434C8.08433 2.4275 7.1145 2.66759 6.201 2.99459C5.2875 3.32142 4.54867 3.76692 3.9845 4.33108C3.241 5.07475 2.72433 5.82767 2.4345 6.58983C2.14483 7.352 2 8.07475 2 8.75809C2 9.70292 2.18433 10.5574 2.553 11.3216C2.9215 12.0856 3.30508 12.6528 3.70375 13.0233C4.26275 11.767 5.04833 10.5616 6.0605 9.40708C7.07267 8.25258 8.35508 7.24525 9.90775 6.38509C8.73325 7.40942 7.72742 8.53442 6.89025 9.76009C6.05308 10.9856 5.41917 12.4272 4.9885 14.0848Z\"\n fill=\"#02A8A2\"\n />\n</svg>";
|
|
6
|
+
export declare const ICON_SETTING_PRODUCTIVITY = "\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.8845 19.5002C13.6102 19.5002 12.5224 19.0496 11.6213 18.1482C10.7199 17.2471 10.2693 16.1592 10.2693 14.8847C10.2693 13.6104 10.7199 12.5227 11.6213 11.6215C12.5224 10.7202 13.6102 10.2695 14.8845 10.2695C16.159 10.2695 17.2468 10.7202 18.148 11.6215C19.0493 12.5227 19.5 13.6104 19.5 14.8847C19.5 16.1592 19.0493 17.2471 18.148 18.1482C17.2468 19.0496 16.159 19.5002 14.8845 19.5002ZM16.9115 16.8715C16.9885 16.7882 17.0078 16.6945 16.9693 16.5905C16.9308 16.4867 16.8596 16.4264 16.7558 16.4097C16.3544 16.3392 15.9807 16.1912 15.6345 15.9655C15.2883 15.74 15.0083 15.44 14.7943 15.0655C14.5801 14.6912 14.4589 14.2982 14.4308 13.8867C14.4026 13.4752 14.4603 13.0772 14.6038 12.6925C14.6371 12.5887 14.6179 12.4942 14.5463 12.409C14.4744 12.3237 14.3866 12.2945 14.2828 12.3215C13.2494 12.5087 12.5462 13.0939 12.173 14.0772C11.8 15.0606 11.9513 15.9753 12.627 16.8215C13.1653 17.497 13.8727 17.8431 14.749 17.8597C15.6253 17.8764 16.3462 17.547 16.9115 16.8715ZM7.69225 19.5002L7.3115 16.454C7.04367 16.3643 6.769 16.2387 6.4875 16.0772C6.20617 15.9156 5.95459 15.7425 5.73275 15.558L2.9115 16.7502L0.604004 12.7502L3.04425 10.906C3.02125 10.7573 3.00492 10.608 2.99525 10.458C2.98559 10.308 2.98075 10.1586 2.98075 10.0097C2.98075 9.86758 2.98559 9.72308 2.99525 9.57624C3.00492 9.42941 3.02125 9.26883 3.04425 9.09449L0.604004 7.25024L2.9115 3.26949L5.723 4.45224C5.96417 4.26124 6.22159 4.08658 6.49525 3.92824C6.76892 3.76991 7.03784 3.64266 7.302 3.54649L7.69225 0.500244H12.3078L12.6885 3.55599C12.9885 3.66499 13.2599 3.79224 13.5028 3.93774C13.7458 4.08324 13.991 4.25474 14.2385 4.45224L17.0885 3.26949L19.396 7.25024L17.546 8.65024C17.2627 8.52458 16.9727 8.41691 16.676 8.32724C16.3792 8.23741 16.0686 8.17074 15.7443 8.12724L17.4345 6.85024L16.45 5.15024L13.9365 6.20974C13.6018 5.85208 13.2009 5.53608 12.7338 5.26174C12.2664 4.98741 11.7937 4.79316 11.3155 4.67899L11 2.00024H9.0155L8.6845 4.66949C8.17434 4.78999 7.70325 4.97458 7.27125 5.22324C6.83909 5.47208 6.42684 5.79258 6.0345 6.18474L3.55 5.15024L2.5655 6.85024L4.725 8.45974C4.64167 8.69708 4.58334 8.94391 4.55 9.20024C4.51667 9.45658 4.5 9.72641 4.5 10.0097C4.5 10.2701 4.51667 10.5252 4.55 10.7752C4.58334 11.0252 4.6385 11.2721 4.7155 11.5157L2.5655 13.1502L3.55 14.8502L6.025 13.8002C6.3275 14.1027 6.64767 14.3665 6.9855 14.5915C7.32334 14.8165 7.69034 15.0008 8.0865 15.1445C8.116 15.9855 8.291 16.7778 8.6115 17.5215C8.932 18.265 9.36084 18.9246 9.898 19.5002H7.69225ZM8.4865 12.5925C8.56734 12.3425 8.66259 12.1034 8.77225 11.8752C8.88175 11.6471 9.00575 11.4266 9.14425 11.2137C8.94809 11.0804 8.79359 10.908 8.68075 10.6965C8.56792 10.4848 8.5115 10.2527 8.5115 10.0002C8.5115 9.58358 8.65734 9.22941 8.949 8.93774C9.24067 8.64608 9.59484 8.50024 10.0115 8.50024C10.2577 8.50024 10.4907 8.55758 10.7105 8.67224C10.9305 8.78708 11.1072 8.94258 11.2405 9.13874C11.4532 9.00024 11.6727 8.87783 11.899 8.77149C12.1253 8.66499 12.3603 8.57649 12.6038 8.50599C12.3486 8.04966 11.9913 7.68458 11.5318 7.41074C11.0721 7.13708 10.5653 7.00024 10.0115 7.00024C9.16917 7.00024 8.45859 7.29224 7.87975 7.87624C7.30092 8.46024 7.0115 9.16824 7.0115 10.0002C7.0115 10.5502 7.14325 11.056 7.40675 11.5175C7.67025 11.979 8.03017 12.3373 8.4865 12.5925Z\"\n fill=\"#02A8A2\"\n />\n</svg>";
|
|
1
7
|
export declare const ICONS_HOME: string[];
|
|
2
8
|
export declare const ICONS_KPIS: string[];
|
|
3
9
|
export declare const ICONS_STATUS: string[];
|
|
@@ -73,6 +73,48 @@ const ICON_SETTING = `
|
|
|
73
73
|
<path class="menu-svg" d="M13.1,24.2h2v-5.7h-2v1.9h-2.4v2h2.4v1.9h0ZM16.7,22.3h12.8v-2h-12.8v2ZM25,18.1h2v-1.9h2.4v-2h-2.4v-1.9h-2v5.7h0ZM10.6,16.2h12.8v-2h-12.8v2ZM14.3,34v-3.3h-6.9c-.8,0-1.5-.3-2.1-.8s-.8-1.3-.8-2.1V8.9c0-.8.3-1.6.8-2.1.6-.5,1.3-.8,2.1-.8h25.2c.8,0,1.5.3,2.1.8s.8,1.3.8,2.1v18.8c0,.8-.3,1.6-.8,2.1-.6.5-1.3.8-2.1.8h-6.9v3.3h-11.5,0ZM7.5,28.2h25.2c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4V8.9c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H7.5c0,0-.3,0-.4.2,0,0-.2.2-.2.4v18.8c0,0,0,.3.2.4,0,0,.2.2.4.2h0ZM6.9,28.2V8.4v19.8Z"/>
|
|
74
74
|
</svg>
|
|
75
75
|
`;
|
|
76
|
+
export const ICON_SETTING_SCHEDULE = `
|
|
77
|
+
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
78
|
+
<path
|
|
79
|
+
d="M7.95 15.9845L4.74625 12.7808L5.83075 11.6963L7.95 13.8155L12.1693 9.59627L13.2538 10.6808L7.95 15.9845ZM2.30775 19.5C1.80258 19.5 1.375 19.325 1.025 18.975C0.675 18.625 0.5 18.1974 0.5 17.6923V4.30777C0.5 3.8026 0.675 3.37502 1.025 3.02502C1.375 2.67502 1.80258 2.50002 2.30775 2.50002H3.69225V0.384766H5.23075V2.50002H12.8077V0.384766H14.3077V2.50002H15.6923C16.1974 2.50002 16.625 2.67502 16.975 3.02502C17.325 3.37502 17.5 3.8026 17.5 4.30777V17.6923C17.5 18.1974 17.325 18.625 16.975 18.975C16.625 19.325 16.1974 19.5 15.6923 19.5H2.30775ZM2.30775 18H15.6923C15.7692 18 15.8398 17.9679 15.9038 17.9038C15.9679 17.8398 16 17.7693 16 17.6923V8.30777H2V17.6923C2 17.7693 2.03208 17.8398 2.09625 17.9038C2.16025 17.9679 2.23075 18 2.30775 18ZM2 6.80777H16V4.30777C16 4.23077 15.9679 4.16026 15.9038 4.09626C15.8398 4.0321 15.7692 4.00002 15.6923 4.00002H2.30775C2.23075 4.00002 2.16025 4.0321 2.09625 4.09626C2.03208 4.16026 2 4.23077 2 4.30777V6.80777Z"
|
|
80
|
+
fill="#02A8A2"
|
|
81
|
+
/>
|
|
82
|
+
</svg>`;
|
|
83
|
+
export const ICON_SETTING_COST = `
|
|
84
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
85
|
+
<path
|
|
86
|
+
d="M14.323 17.0385L17.4807 13.9155L16.6423 13.077L14.323 15.3558L13.3577 14.3807L12.5193 15.2345L14.323 17.0385ZM3.38475 5.86525H14.6152V4.3655H3.38475V5.86525ZM15 19.5578C13.7513 19.5578 12.6892 19.1199 11.8135 18.2443C10.9378 17.3686 10.5 16.3064 10.5 15.0577C10.5 13.8091 10.9378 12.7469 11.8135 11.8713C12.6892 10.9956 13.7513 10.5577 15 10.5577C16.2487 10.5577 17.3108 10.9956 18.1865 11.8713C19.0622 12.7469 19.5 13.8091 19.5 15.0577C19.5 16.3064 19.0622 17.3686 18.1865 18.2443C17.3108 19.1199 16.2487 19.5578 15 19.5578ZM0.5 18.3845V2.30775C0.5 1.80908 0.676583 1.38308 1.02975 1.02975C1.38308 0.676583 1.80908 0.5 2.30775 0.5H15.6923C16.1909 0.5 16.6169 0.676583 16.9703 1.02975C17.3234 1.38308 17.5 1.80908 17.5 2.30775V8.61725C17.2602 8.51208 17.0169 8.424 16.7703 8.353C16.5234 8.28183 16.2667 8.22767 16 8.1905V2.30775C16 2.23075 15.9679 2.16025 15.9038 2.09625C15.8398 2.03208 15.7692 2 15.6923 2H2.30775C2.23075 2 2.16025 2.03208 2.09625 2.09625C2.03208 2.16025 2 2.23075 2 2.30775V16.05H8.20975C8.27375 16.4448 8.36758 16.8243 8.49125 17.1885C8.61508 17.5525 8.78017 17.898 8.9865 18.225L8.89425 18.3173L7.577 17.1538L6.15375 18.3845L4.73075 17.1538L3.30775 18.3845L1.88475 17.1538L0.5 18.3845ZM3.38475 13.6345H8.277C8.3205 13.3678 8.38108 13.1112 8.45875 12.8645C8.53625 12.6177 8.63075 12.3744 8.74225 12.1348H3.38475V13.6345ZM3.38475 9.75H10.5905C11.07 9.31283 11.6136 8.96158 12.2212 8.69625C12.8289 8.43075 13.4763 8.282 14.1635 8.25H3.38475V9.75Z"
|
|
87
|
+
fill="#02A8A2"
|
|
88
|
+
/>
|
|
89
|
+
</svg>`;
|
|
90
|
+
export const ICON_SETTING_QUALITY = `
|
|
91
|
+
<svg width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
92
|
+
<path
|
|
93
|
+
d="M12.2557 15.4999L11.2115 14.4557L13.8115 11.8557L11.2115 9.25565L12.2557 8.2114L14.8558 10.8114L17.4557 8.2114L18.5 9.25565L15.9 11.8557L18.5 14.4557L17.4557 15.4999L14.8558 12.8999L12.2557 15.4999ZM14.2402 6.8364L11.0462 3.64215L12.0903 2.5979L14.2153 4.7229L18.4653 0.4729L19.5095 1.54215L14.2402 6.8364ZM0.5 12.5577V11.0577H9V12.5577H0.5ZM0.5 4.94215V3.44215H9V4.94215H0.5Z"
|
|
94
|
+
fill="#02A8A2"
|
|
95
|
+
/>
|
|
96
|
+
</svg>`;
|
|
97
|
+
export const ICON_SETTING_SAFETY = `
|
|
98
|
+
<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
99
|
+
<path
|
|
100
|
+
d="M6.95 13.2041L12.2538 7.90032L11.1845 6.83107L6.95 11.0658L4.83075 8.94657L3.7615 10.0158L6.95 13.2041ZM8 19.4811C5.83717 18.8912 4.0465 17.6182 2.628 15.6618C1.20933 13.7055 0.5 11.5183 0.5 9.10032V3.34657L8 0.538818L15.5 3.34657V9.10032C15.5 11.5183 14.7907 13.7055 13.372 15.6618C11.9535 17.6182 10.1628 18.8912 8 19.4811ZM8 17.9003C9.73333 17.3503 11.1667 16.2503 12.3 14.6003C13.4333 12.9503 14 11.117 14 9.10032V4.37532L8 2.13482L2 4.37532V9.10032C2 11.117 2.56667 12.9503 3.7 14.6003C4.83333 16.2503 6.26667 17.3503 8 17.9003Z"
|
|
101
|
+
fill="#02A8A2"
|
|
102
|
+
/>
|
|
103
|
+
</svg>`;
|
|
104
|
+
export const ICON_SETTING_ENVIRONMENT = `
|
|
105
|
+
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
106
|
+
<path
|
|
107
|
+
d="M2.74625 14.2493C2.04108 13.541 1.49042 12.7265 1.09425 11.8058C0.698083 10.8852 0.5 9.93334 0.5 8.95034C0.5 7.9645 0.688833 6.98633 1.0665 6.01583C1.444 5.04533 2.05392 4.13892 2.89625 3.29658C3.50525 2.68758 4.26775 2.18592 5.18375 1.79159C6.09975 1.39742 7.13725 1.09717 8.29625 0.890835C9.45525 0.684335 10.7183 0.564085 12.0855 0.530085C13.4528 0.496252 14.8872 0.540169 16.3885 0.661835C16.4962 2.09517 16.533 3.48784 16.499 4.83984C16.465 6.19167 16.3468 7.45217 16.1443 8.62134C15.9416 9.79067 15.6458 10.8436 15.2568 11.7801C14.8676 12.7166 14.3666 13.4913 13.7538 14.1041C12.9281 14.9363 12.0451 15.5437 11.1048 15.9263C10.1644 16.309 9.212 16.5003 8.2475 16.5003C7.23633 16.5003 6.24292 16.3023 5.26725 15.9061C4.29158 15.5099 3.45125 14.9577 2.74625 14.2493ZM4.9885 14.0848C5.491 14.4003 6.02208 14.6318 6.58175 14.7791C7.14142 14.9266 7.6975 15.0003 8.25 15.0003C9.021 15.0003 9.78358 14.8478 10.5378 14.5426C11.2921 14.2374 12.0077 13.74 12.6845 13.0503C12.9833 12.7503 13.2863 12.3295 13.5935 11.7878C13.9005 11.2462 14.1661 10.5378 14.3903 9.66284C14.6144 8.78784 14.7846 7.7295 14.9008 6.48783C15.0169 5.24617 15.0398 3.767 14.9693 2.05033C14.1526 2.017 13.2285 2.00767 12.197 2.02234C11.1657 2.03717 10.1368 2.12117 9.1105 2.27434C8.08433 2.4275 7.1145 2.66759 6.201 2.99459C5.2875 3.32142 4.54867 3.76692 3.9845 4.33108C3.241 5.07475 2.72433 5.82767 2.4345 6.58983C2.14483 7.352 2 8.07475 2 8.75809C2 9.70292 2.18433 10.5574 2.553 11.3216C2.9215 12.0856 3.30508 12.6528 3.70375 13.0233C4.26275 11.767 5.04833 10.5616 6.0605 9.40708C7.07267 8.25258 8.35508 7.24525 9.90775 6.38509C8.73325 7.40942 7.72742 8.53442 6.89025 9.76009C6.05308 10.9856 5.41917 12.4272 4.9885 14.0848Z"
|
|
108
|
+
fill="#02A8A2"
|
|
109
|
+
/>
|
|
110
|
+
</svg>`;
|
|
111
|
+
export const ICON_SETTING_PRODUCTIVITY = `
|
|
112
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
113
|
+
<path
|
|
114
|
+
d="M14.8845 19.5002C13.6102 19.5002 12.5224 19.0496 11.6213 18.1482C10.7199 17.2471 10.2693 16.1592 10.2693 14.8847C10.2693 13.6104 10.7199 12.5227 11.6213 11.6215C12.5224 10.7202 13.6102 10.2695 14.8845 10.2695C16.159 10.2695 17.2468 10.7202 18.148 11.6215C19.0493 12.5227 19.5 13.6104 19.5 14.8847C19.5 16.1592 19.0493 17.2471 18.148 18.1482C17.2468 19.0496 16.159 19.5002 14.8845 19.5002ZM16.9115 16.8715C16.9885 16.7882 17.0078 16.6945 16.9693 16.5905C16.9308 16.4867 16.8596 16.4264 16.7558 16.4097C16.3544 16.3392 15.9807 16.1912 15.6345 15.9655C15.2883 15.74 15.0083 15.44 14.7943 15.0655C14.5801 14.6912 14.4589 14.2982 14.4308 13.8867C14.4026 13.4752 14.4603 13.0772 14.6038 12.6925C14.6371 12.5887 14.6179 12.4942 14.5463 12.409C14.4744 12.3237 14.3866 12.2945 14.2828 12.3215C13.2494 12.5087 12.5462 13.0939 12.173 14.0772C11.8 15.0606 11.9513 15.9753 12.627 16.8215C13.1653 17.497 13.8727 17.8431 14.749 17.8597C15.6253 17.8764 16.3462 17.547 16.9115 16.8715ZM7.69225 19.5002L7.3115 16.454C7.04367 16.3643 6.769 16.2387 6.4875 16.0772C6.20617 15.9156 5.95459 15.7425 5.73275 15.558L2.9115 16.7502L0.604004 12.7502L3.04425 10.906C3.02125 10.7573 3.00492 10.608 2.99525 10.458C2.98559 10.308 2.98075 10.1586 2.98075 10.0097C2.98075 9.86758 2.98559 9.72308 2.99525 9.57624C3.00492 9.42941 3.02125 9.26883 3.04425 9.09449L0.604004 7.25024L2.9115 3.26949L5.723 4.45224C5.96417 4.26124 6.22159 4.08658 6.49525 3.92824C6.76892 3.76991 7.03784 3.64266 7.302 3.54649L7.69225 0.500244H12.3078L12.6885 3.55599C12.9885 3.66499 13.2599 3.79224 13.5028 3.93774C13.7458 4.08324 13.991 4.25474 14.2385 4.45224L17.0885 3.26949L19.396 7.25024L17.546 8.65024C17.2627 8.52458 16.9727 8.41691 16.676 8.32724C16.3792 8.23741 16.0686 8.17074 15.7443 8.12724L17.4345 6.85024L16.45 5.15024L13.9365 6.20974C13.6018 5.85208 13.2009 5.53608 12.7338 5.26174C12.2664 4.98741 11.7937 4.79316 11.3155 4.67899L11 2.00024H9.0155L8.6845 4.66949C8.17434 4.78999 7.70325 4.97458 7.27125 5.22324C6.83909 5.47208 6.42684 5.79258 6.0345 6.18474L3.55 5.15024L2.5655 6.85024L4.725 8.45974C4.64167 8.69708 4.58334 8.94391 4.55 9.20024C4.51667 9.45658 4.5 9.72641 4.5 10.0097C4.5 10.2701 4.51667 10.5252 4.55 10.7752C4.58334 11.0252 4.6385 11.2721 4.7155 11.5157L2.5655 13.1502L3.55 14.8502L6.025 13.8002C6.3275 14.1027 6.64767 14.3665 6.9855 14.5915C7.32334 14.8165 7.69034 15.0008 8.0865 15.1445C8.116 15.9855 8.291 16.7778 8.6115 17.5215C8.932 18.265 9.36084 18.9246 9.898 19.5002H7.69225ZM8.4865 12.5925C8.56734 12.3425 8.66259 12.1034 8.77225 11.8752C8.88175 11.6471 9.00575 11.4266 9.14425 11.2137C8.94809 11.0804 8.79359 10.908 8.68075 10.6965C8.56792 10.4848 8.5115 10.2527 8.5115 10.0002C8.5115 9.58358 8.65734 9.22941 8.949 8.93774C9.24067 8.64608 9.59484 8.50024 10.0115 8.50024C10.2577 8.50024 10.4907 8.55758 10.7105 8.67224C10.9305 8.78708 11.1072 8.94258 11.2405 9.13874C11.4532 9.00024 11.6727 8.87783 11.899 8.77149C12.1253 8.66499 12.3603 8.57649 12.6038 8.50599C12.3486 8.04966 11.9913 7.68458 11.5318 7.41074C11.0721 7.13708 10.5653 7.00024 10.0115 7.00024C9.16917 7.00024 8.45859 7.29224 7.87975 7.87624C7.30092 8.46024 7.0115 9.16824 7.0115 10.0002C7.0115 10.5502 7.14325 11.056 7.40675 11.5175C7.67025 11.979 8.03017 12.3373 8.4865 12.5925Z"
|
|
115
|
+
fill="#02A8A2"
|
|
116
|
+
/>
|
|
117
|
+
</svg>`;
|
|
76
118
|
function icons(template) {
|
|
77
119
|
return ['#ffffff', '#64A3D9'].map(color => 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(template.replace(/{{strokecolor}}/g, color)));
|
|
78
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-icons.js","sourceRoot":"","sources":["../../client/icons/menu-icons.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAcjB,CAAA;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAcjB,CAAA;AAED,MAAM,WAAW,GAAG;;;;;;;;;;;;;;CAcnB,CAAA;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;CAcxB,CAAA;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;CAcpB,CAAA;AAED,SAAS,KAAK,CAAC,QAAQ;IACrB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAC/B,KAAK,CAAC,EAAE,CAAC,0CAA0C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CACxG,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAA","sourcesContent":["const ICON_HOME = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M31,36.5c-.2,0-.4,0-.6,0-.2,0-.3-.2-.5-.3l-8.3-8.3c-.2-.2-.3-.3-.3-.5,0-.2,0-.4,0-.6s0-.4,0-.6c0-.2.2-.3.3-.5l3.1-3.1c.2-.2.3-.3.5-.3.2,0,.4,0,.6,0s.4,0,.6,0c.2,0,.3.2.5.3l8.3,8.3c.2.2.3.3.3.5,0,.2,0,.4,0,.6s0,.4,0,.6c0,.2-.2.3-.3.5l-3.1,3.1c-.2.2-.3.3-.5.3-.2,0-.4,0-.6,0ZM31,33.6l1.8-1.8-6.9-6.9-1.8,1.8,6.9,6.9ZM8.9,36.5c-.2,0-.4,0-.6-.1-.2,0-.3-.2-.5-.3l-3.1-3.1c-.2-.2-.3-.3-.3-.5,0-.2-.1-.4-.1-.6s0-.4.1-.6c0-.2.2-.3.3-.5l8.6-8.6h3.5l1.3-1.3-6.9-6.9h-2.4l-4.6-4.6,4.1-4.1,4.6,4.6v2.4l6.9,6.9,4.9-4.9-2.4-2.4,2.1-2.1h-4.2l-.9-.9,5.3-5.3.9.9v4.2l2.1-2.1,6.2,6.2c.4.4.8.9,1,1.5.2.5.3,1.1.3,1.7s0,1-.3,1.5c-.2.5-.5.9-.8,1.4l-3.5-3.5-2.3,2.3-1.8-1.8-8,8v3.5l-8.6,8.6c-.2.2-.3.3-.5.3-.2,0-.4.1-.6.1ZM8.9,33.6l7.6-7.6v-1.8h-1.8l-7.6,7.6,1.8,1.8ZM8.9,33.6l-1.8-1.8.9.9.9.9ZM31,33.6l1.8-1.8-1.8,1.8Z\"/>\n</svg>\n`\n\nconst ICON_KPIS = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M27.9,15.1h2.7v-2.8h-2.7v2.8ZM27.9,21.4h2.7v-2.8h-2.7v2.8ZM27.9,27.7h2.7v-2.8h-2.7v2.8ZM26.9,33.3v-2.4h6.9V9h-14.2v2.8l-2.3-1.7v-3.5h18.7v26.7s-9.1,0-9.1,0ZM4,33.3v-14.5l9.9-7.3,9.9,7.3v14.5h-8.1v-7.5h-3.5v7.5H4ZM6.3,31h3.6v-7.5h8v7.5h3.6v-11l-7.7-5.5-7.7,5.5v11h0ZM18,31v-7.5h-8v7.5-7.5h8v7.5Z\"/>\n</svg>\n`\n\nconst ICON_STATUS = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n\n <path class=\"menu-svg\" d=\"M7.4,33.9c-.8,0-1.5-.3-2.1-.8-.6-.6-.8-1.3-.8-2.1V9c0-.8.3-1.5.8-2.1.6-.6,1.3-.8,2.1-.8h25.2c.8,0,1.5.3,2.1.8s.8,1.3.8,2.1v21.9c0,.8-.3,1.5-.8,2.1s-1.3.8-2.1.8H7.4ZM7.4,31.4h25.2c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4V9c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H7.4c0,0-.3,0-.4.2,0,0-.2.2-.2.4v21.9c0,0,0,.3.2.4,0,0,.2.2.4.2h0ZM8.9,27.7h7.3v-2.4h-7.3v2.4ZM24.2,24.3l7.5-7.5-1.8-1.8-5.7,5.8-2.4-2.4-1.7,1.8s4.1,4.1,4.1,4.1ZM8.9,21.2h7.3v-2.4h-7.3v2.4ZM8.9,14.6h7.3v-2.4h-7.3s0,2.4,0,2.4ZM6.9,31.4V8.5v22.9Z\"/>\n</svg>\n`\n\nconst ICON_INTEGRATION = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M9.1,35.5c-.8,0-1.5-.3-2.1-.8-.6-.6-.8-1.2-.8-2.1V10.9c0-.8.3-1.5.8-2.1.6-.6,1.2-.8,2.1-.8h2.3v-3.5h2.5v3.5h12.3v-3.5h2.4v3.5h2.3c.8,0,1.5.3,2.1.8.6.6.8,1.2.8,2.1v21.7c0,.8-.3,1.5-.8,2.1s-1.2.8-2.1.8c0,0-21.8,0-21.8,0ZM9.1,33.1h21.7c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4v-15.2H8.5v15.2c0,0,0,.3.2.4,0,0,.2.2.4.2ZM8.5,14.9h22.7v-4c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H9.1c0,0-.3,0-.4.2,0,0-.2.2-.2.4,0,0,0,4,0,4ZM8.5,14.9v-4.5,4.5ZM12.2,22.9v-2.4h15.4v2.4s-15.4,0-15.4,0ZM12.2,29.4v-2.4h10.5v2.4h-10.5Z\"/>\n</svg>\n`\n\nconst ICON_SETTING = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M13.1,24.2h2v-5.7h-2v1.9h-2.4v2h2.4v1.9h0ZM16.7,22.3h12.8v-2h-12.8v2ZM25,18.1h2v-1.9h2.4v-2h-2.4v-1.9h-2v5.7h0ZM10.6,16.2h12.8v-2h-12.8v2ZM14.3,34v-3.3h-6.9c-.8,0-1.5-.3-2.1-.8s-.8-1.3-.8-2.1V8.9c0-.8.3-1.6.8-2.1.6-.5,1.3-.8,2.1-.8h25.2c.8,0,1.5.3,2.1.8s.8,1.3.8,2.1v18.8c0,.8-.3,1.6-.8,2.1-.6.5-1.3.8-2.1.8h-6.9v3.3h-11.5,0ZM7.5,28.2h25.2c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4V8.9c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H7.5c0,0-.3,0-.4.2,0,0-.2.2-.2.4v18.8c0,0,0,.3.2.4,0,0,.2.2.4.2h0ZM6.9,28.2V8.4v19.8Z\"/>\n</svg>\n`\n\nfunction icons(template) {\n return ['#ffffff', '#64A3D9'].map(\n color => 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(template.replace(/{{strokecolor}}/g, color))\n )\n}\n\nexport const ICONS_HOME = icons(ICON_HOME)\nexport const ICONS_KPIS = icons(ICON_KPIS)\nexport const ICONS_STATUS = icons(ICON_STATUS)\nexport const ICONS_INTEGRATION = icons(ICON_INTEGRATION)\nexport const ICONS_SETTING = icons(ICON_SETTING)\n"]}
|
|
1
|
+
{"version":3,"file":"menu-icons.js","sourceRoot":"","sources":["../../client/icons/menu-icons.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAcjB,CAAA;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAcjB,CAAA;AAED,MAAM,WAAW,GAAG;;;;;;;;;;;;;;CAcnB,CAAA;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;CAcxB,CAAA;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;CAcpB,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;OAM9B,CAAA;AAEP,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;OAM1B,CAAA;AAEP,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;OAM7B,CAAA;AAEP,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;OAM5B,CAAA;AAEP,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;OAMjC,CAAA;AAEP,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;OAMlC,CAAA;AAEP,SAAS,KAAK,CAAC,QAAQ;IACrB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAC/B,KAAK,CAAC,EAAE,CAAC,0CAA0C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CACxG,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAA","sourcesContent":["const ICON_HOME = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M31,36.5c-.2,0-.4,0-.6,0-.2,0-.3-.2-.5-.3l-8.3-8.3c-.2-.2-.3-.3-.3-.5,0-.2,0-.4,0-.6s0-.4,0-.6c0-.2.2-.3.3-.5l3.1-3.1c.2-.2.3-.3.5-.3.2,0,.4,0,.6,0s.4,0,.6,0c.2,0,.3.2.5.3l8.3,8.3c.2.2.3.3.3.5,0,.2,0,.4,0,.6s0,.4,0,.6c0,.2-.2.3-.3.5l-3.1,3.1c-.2.2-.3.3-.5.3-.2,0-.4,0-.6,0ZM31,33.6l1.8-1.8-6.9-6.9-1.8,1.8,6.9,6.9ZM8.9,36.5c-.2,0-.4,0-.6-.1-.2,0-.3-.2-.5-.3l-3.1-3.1c-.2-.2-.3-.3-.3-.5,0-.2-.1-.4-.1-.6s0-.4.1-.6c0-.2.2-.3.3-.5l8.6-8.6h3.5l1.3-1.3-6.9-6.9h-2.4l-4.6-4.6,4.1-4.1,4.6,4.6v2.4l6.9,6.9,4.9-4.9-2.4-2.4,2.1-2.1h-4.2l-.9-.9,5.3-5.3.9.9v4.2l2.1-2.1,6.2,6.2c.4.4.8.9,1,1.5.2.5.3,1.1.3,1.7s0,1-.3,1.5c-.2.5-.5.9-.8,1.4l-3.5-3.5-2.3,2.3-1.8-1.8-8,8v3.5l-8.6,8.6c-.2.2-.3.3-.5.3-.2,0-.4.1-.6.1ZM8.9,33.6l7.6-7.6v-1.8h-1.8l-7.6,7.6,1.8,1.8ZM8.9,33.6l-1.8-1.8.9.9.9.9ZM31,33.6l1.8-1.8-1.8,1.8Z\"/>\n</svg>\n`\n\nconst ICON_KPIS = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M27.9,15.1h2.7v-2.8h-2.7v2.8ZM27.9,21.4h2.7v-2.8h-2.7v2.8ZM27.9,27.7h2.7v-2.8h-2.7v2.8ZM26.9,33.3v-2.4h6.9V9h-14.2v2.8l-2.3-1.7v-3.5h18.7v26.7s-9.1,0-9.1,0ZM4,33.3v-14.5l9.9-7.3,9.9,7.3v14.5h-8.1v-7.5h-3.5v7.5H4ZM6.3,31h3.6v-7.5h8v7.5h3.6v-11l-7.7-5.5-7.7,5.5v11h0ZM18,31v-7.5h-8v7.5-7.5h8v7.5Z\"/>\n</svg>\n`\n\nconst ICON_STATUS = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n\n <path class=\"menu-svg\" d=\"M7.4,33.9c-.8,0-1.5-.3-2.1-.8-.6-.6-.8-1.3-.8-2.1V9c0-.8.3-1.5.8-2.1.6-.6,1.3-.8,2.1-.8h25.2c.8,0,1.5.3,2.1.8s.8,1.3.8,2.1v21.9c0,.8-.3,1.5-.8,2.1s-1.3.8-2.1.8H7.4ZM7.4,31.4h25.2c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4V9c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H7.4c0,0-.3,0-.4.2,0,0-.2.2-.2.4v21.9c0,0,0,.3.2.4,0,0,.2.2.4.2h0ZM8.9,27.7h7.3v-2.4h-7.3v2.4ZM24.2,24.3l7.5-7.5-1.8-1.8-5.7,5.8-2.4-2.4-1.7,1.8s4.1,4.1,4.1,4.1ZM8.9,21.2h7.3v-2.4h-7.3v2.4ZM8.9,14.6h7.3v-2.4h-7.3s0,2.4,0,2.4ZM6.9,31.4V8.5v22.9Z\"/>\n</svg>\n`\n\nconst ICON_INTEGRATION = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M9.1,35.5c-.8,0-1.5-.3-2.1-.8-.6-.6-.8-1.2-.8-2.1V10.9c0-.8.3-1.5.8-2.1.6-.6,1.2-.8,2.1-.8h2.3v-3.5h2.5v3.5h12.3v-3.5h2.4v3.5h2.3c.8,0,1.5.3,2.1.8.6.6.8,1.2.8,2.1v21.7c0,.8-.3,1.5-.8,2.1s-1.2.8-2.1.8c0,0-21.8,0-21.8,0ZM9.1,33.1h21.7c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4v-15.2H8.5v15.2c0,0,0,.3.2.4,0,0,.2.2.4.2ZM8.5,14.9h22.7v-4c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H9.1c0,0-.3,0-.4.2,0,0-.2.2-.2.4,0,0,0,4,0,4ZM8.5,14.9v-4.5,4.5ZM12.2,22.9v-2.4h15.4v2.4s-15.4,0-15.4,0ZM12.2,29.4v-2.4h10.5v2.4h-10.5Z\"/>\n</svg>\n`\n\nconst ICON_SETTING = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M13.1,24.2h2v-5.7h-2v1.9h-2.4v2h2.4v1.9h0ZM16.7,22.3h12.8v-2h-12.8v2ZM25,18.1h2v-1.9h2.4v-2h-2.4v-1.9h-2v5.7h0ZM10.6,16.2h12.8v-2h-12.8v2ZM14.3,34v-3.3h-6.9c-.8,0-1.5-.3-2.1-.8s-.8-1.3-.8-2.1V8.9c0-.8.3-1.6.8-2.1.6-.5,1.3-.8,2.1-.8h25.2c.8,0,1.5.3,2.1.8s.8,1.3.8,2.1v18.8c0,.8-.3,1.6-.8,2.1-.6.5-1.3.8-2.1.8h-6.9v3.3h-11.5,0ZM7.5,28.2h25.2c0,0,.3,0,.4-.2,0,0,.2-.2.2-.4V8.9c0,0,0-.3-.2-.4,0,0-.2-.2-.4-.2H7.5c0,0-.3,0-.4.2,0,0-.2.2-.2.4v18.8c0,0,0,.3.2.4,0,0,.2.2.4.2h0ZM6.9,28.2V8.4v19.8Z\"/>\n</svg>\n`\n\nexport const ICON_SETTING_SCHEDULE = `\n<svg width=\"18\" height=\"20\" viewBox=\"0 0 18 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.95 15.9845L4.74625 12.7808L5.83075 11.6963L7.95 13.8155L12.1693 9.59627L13.2538 10.6808L7.95 15.9845ZM2.30775 19.5C1.80258 19.5 1.375 19.325 1.025 18.975C0.675 18.625 0.5 18.1974 0.5 17.6923V4.30777C0.5 3.8026 0.675 3.37502 1.025 3.02502C1.375 2.67502 1.80258 2.50002 2.30775 2.50002H3.69225V0.384766H5.23075V2.50002H12.8077V0.384766H14.3077V2.50002H15.6923C16.1974 2.50002 16.625 2.67502 16.975 3.02502C17.325 3.37502 17.5 3.8026 17.5 4.30777V17.6923C17.5 18.1974 17.325 18.625 16.975 18.975C16.625 19.325 16.1974 19.5 15.6923 19.5H2.30775ZM2.30775 18H15.6923C15.7692 18 15.8398 17.9679 15.9038 17.9038C15.9679 17.8398 16 17.7693 16 17.6923V8.30777H2V17.6923C2 17.7693 2.03208 17.8398 2.09625 17.9038C2.16025 17.9679 2.23075 18 2.30775 18ZM2 6.80777H16V4.30777C16 4.23077 15.9679 4.16026 15.9038 4.09626C15.8398 4.0321 15.7692 4.00002 15.6923 4.00002H2.30775C2.23075 4.00002 2.16025 4.0321 2.09625 4.09626C2.03208 4.16026 2 4.23077 2 4.30777V6.80777Z\"\n fill=\"#02A8A2\"\n />\n</svg>`\n\nexport const ICON_SETTING_COST = `\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.323 17.0385L17.4807 13.9155L16.6423 13.077L14.323 15.3558L13.3577 14.3807L12.5193 15.2345L14.323 17.0385ZM3.38475 5.86525H14.6152V4.3655H3.38475V5.86525ZM15 19.5578C13.7513 19.5578 12.6892 19.1199 11.8135 18.2443C10.9378 17.3686 10.5 16.3064 10.5 15.0577C10.5 13.8091 10.9378 12.7469 11.8135 11.8713C12.6892 10.9956 13.7513 10.5577 15 10.5577C16.2487 10.5577 17.3108 10.9956 18.1865 11.8713C19.0622 12.7469 19.5 13.8091 19.5 15.0577C19.5 16.3064 19.0622 17.3686 18.1865 18.2443C17.3108 19.1199 16.2487 19.5578 15 19.5578ZM0.5 18.3845V2.30775C0.5 1.80908 0.676583 1.38308 1.02975 1.02975C1.38308 0.676583 1.80908 0.5 2.30775 0.5H15.6923C16.1909 0.5 16.6169 0.676583 16.9703 1.02975C17.3234 1.38308 17.5 1.80908 17.5 2.30775V8.61725C17.2602 8.51208 17.0169 8.424 16.7703 8.353C16.5234 8.28183 16.2667 8.22767 16 8.1905V2.30775C16 2.23075 15.9679 2.16025 15.9038 2.09625C15.8398 2.03208 15.7692 2 15.6923 2H2.30775C2.23075 2 2.16025 2.03208 2.09625 2.09625C2.03208 2.16025 2 2.23075 2 2.30775V16.05H8.20975C8.27375 16.4448 8.36758 16.8243 8.49125 17.1885C8.61508 17.5525 8.78017 17.898 8.9865 18.225L8.89425 18.3173L7.577 17.1538L6.15375 18.3845L4.73075 17.1538L3.30775 18.3845L1.88475 17.1538L0.5 18.3845ZM3.38475 13.6345H8.277C8.3205 13.3678 8.38108 13.1112 8.45875 12.8645C8.53625 12.6177 8.63075 12.3744 8.74225 12.1348H3.38475V13.6345ZM3.38475 9.75H10.5905C11.07 9.31283 11.6136 8.96158 12.2212 8.69625C12.8289 8.43075 13.4763 8.282 14.1635 8.25H3.38475V9.75Z\"\n fill=\"#02A8A2\"\n />\n</svg>`\n\nexport const ICON_SETTING_QUALITY = `\n<svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2557 15.4999L11.2115 14.4557L13.8115 11.8557L11.2115 9.25565L12.2557 8.2114L14.8558 10.8114L17.4557 8.2114L18.5 9.25565L15.9 11.8557L18.5 14.4557L17.4557 15.4999L14.8558 12.8999L12.2557 15.4999ZM14.2402 6.8364L11.0462 3.64215L12.0903 2.5979L14.2153 4.7229L18.4653 0.4729L19.5095 1.54215L14.2402 6.8364ZM0.5 12.5577V11.0577H9V12.5577H0.5ZM0.5 4.94215V3.44215H9V4.94215H0.5Z\"\n fill=\"#02A8A2\"\n />\n</svg>`\n\nexport const ICON_SETTING_SAFETY = `\n<svg width=\"16\" height=\"20\" viewBox=\"0 0 16 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.95 13.2041L12.2538 7.90032L11.1845 6.83107L6.95 11.0658L4.83075 8.94657L3.7615 10.0158L6.95 13.2041ZM8 19.4811C5.83717 18.8912 4.0465 17.6182 2.628 15.6618C1.20933 13.7055 0.5 11.5183 0.5 9.10032V3.34657L8 0.538818L15.5 3.34657V9.10032C15.5 11.5183 14.7907 13.7055 13.372 15.6618C11.9535 17.6182 10.1628 18.8912 8 19.4811ZM8 17.9003C9.73333 17.3503 11.1667 16.2503 12.3 14.6003C13.4333 12.9503 14 11.117 14 9.10032V4.37532L8 2.13482L2 4.37532V9.10032C2 11.117 2.56667 12.9503 3.7 14.6003C4.83333 16.2503 6.26667 17.3503 8 17.9003Z\"\n fill=\"#02A8A2\"\n />\n</svg>`\n\nexport const ICON_SETTING_ENVIRONMENT = `\n<svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M2.74625 14.2493C2.04108 13.541 1.49042 12.7265 1.09425 11.8058C0.698083 10.8852 0.5 9.93334 0.5 8.95034C0.5 7.9645 0.688833 6.98633 1.0665 6.01583C1.444 5.04533 2.05392 4.13892 2.89625 3.29658C3.50525 2.68758 4.26775 2.18592 5.18375 1.79159C6.09975 1.39742 7.13725 1.09717 8.29625 0.890835C9.45525 0.684335 10.7183 0.564085 12.0855 0.530085C13.4528 0.496252 14.8872 0.540169 16.3885 0.661835C16.4962 2.09517 16.533 3.48784 16.499 4.83984C16.465 6.19167 16.3468 7.45217 16.1443 8.62134C15.9416 9.79067 15.6458 10.8436 15.2568 11.7801C14.8676 12.7166 14.3666 13.4913 13.7538 14.1041C12.9281 14.9363 12.0451 15.5437 11.1048 15.9263C10.1644 16.309 9.212 16.5003 8.2475 16.5003C7.23633 16.5003 6.24292 16.3023 5.26725 15.9061C4.29158 15.5099 3.45125 14.9577 2.74625 14.2493ZM4.9885 14.0848C5.491 14.4003 6.02208 14.6318 6.58175 14.7791C7.14142 14.9266 7.6975 15.0003 8.25 15.0003C9.021 15.0003 9.78358 14.8478 10.5378 14.5426C11.2921 14.2374 12.0077 13.74 12.6845 13.0503C12.9833 12.7503 13.2863 12.3295 13.5935 11.7878C13.9005 11.2462 14.1661 10.5378 14.3903 9.66284C14.6144 8.78784 14.7846 7.7295 14.9008 6.48783C15.0169 5.24617 15.0398 3.767 14.9693 2.05033C14.1526 2.017 13.2285 2.00767 12.197 2.02234C11.1657 2.03717 10.1368 2.12117 9.1105 2.27434C8.08433 2.4275 7.1145 2.66759 6.201 2.99459C5.2875 3.32142 4.54867 3.76692 3.9845 4.33108C3.241 5.07475 2.72433 5.82767 2.4345 6.58983C2.14483 7.352 2 8.07475 2 8.75809C2 9.70292 2.18433 10.5574 2.553 11.3216C2.9215 12.0856 3.30508 12.6528 3.70375 13.0233C4.26275 11.767 5.04833 10.5616 6.0605 9.40708C7.07267 8.25258 8.35508 7.24525 9.90775 6.38509C8.73325 7.40942 7.72742 8.53442 6.89025 9.76009C6.05308 10.9856 5.41917 12.4272 4.9885 14.0848Z\"\n fill=\"#02A8A2\"\n />\n</svg>`\n\nexport const ICON_SETTING_PRODUCTIVITY = `\n<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.8845 19.5002C13.6102 19.5002 12.5224 19.0496 11.6213 18.1482C10.7199 17.2471 10.2693 16.1592 10.2693 14.8847C10.2693 13.6104 10.7199 12.5227 11.6213 11.6215C12.5224 10.7202 13.6102 10.2695 14.8845 10.2695C16.159 10.2695 17.2468 10.7202 18.148 11.6215C19.0493 12.5227 19.5 13.6104 19.5 14.8847C19.5 16.1592 19.0493 17.2471 18.148 18.1482C17.2468 19.0496 16.159 19.5002 14.8845 19.5002ZM16.9115 16.8715C16.9885 16.7882 17.0078 16.6945 16.9693 16.5905C16.9308 16.4867 16.8596 16.4264 16.7558 16.4097C16.3544 16.3392 15.9807 16.1912 15.6345 15.9655C15.2883 15.74 15.0083 15.44 14.7943 15.0655C14.5801 14.6912 14.4589 14.2982 14.4308 13.8867C14.4026 13.4752 14.4603 13.0772 14.6038 12.6925C14.6371 12.5887 14.6179 12.4942 14.5463 12.409C14.4744 12.3237 14.3866 12.2945 14.2828 12.3215C13.2494 12.5087 12.5462 13.0939 12.173 14.0772C11.8 15.0606 11.9513 15.9753 12.627 16.8215C13.1653 17.497 13.8727 17.8431 14.749 17.8597C15.6253 17.8764 16.3462 17.547 16.9115 16.8715ZM7.69225 19.5002L7.3115 16.454C7.04367 16.3643 6.769 16.2387 6.4875 16.0772C6.20617 15.9156 5.95459 15.7425 5.73275 15.558L2.9115 16.7502L0.604004 12.7502L3.04425 10.906C3.02125 10.7573 3.00492 10.608 2.99525 10.458C2.98559 10.308 2.98075 10.1586 2.98075 10.0097C2.98075 9.86758 2.98559 9.72308 2.99525 9.57624C3.00492 9.42941 3.02125 9.26883 3.04425 9.09449L0.604004 7.25024L2.9115 3.26949L5.723 4.45224C5.96417 4.26124 6.22159 4.08658 6.49525 3.92824C6.76892 3.76991 7.03784 3.64266 7.302 3.54649L7.69225 0.500244H12.3078L12.6885 3.55599C12.9885 3.66499 13.2599 3.79224 13.5028 3.93774C13.7458 4.08324 13.991 4.25474 14.2385 4.45224L17.0885 3.26949L19.396 7.25024L17.546 8.65024C17.2627 8.52458 16.9727 8.41691 16.676 8.32724C16.3792 8.23741 16.0686 8.17074 15.7443 8.12724L17.4345 6.85024L16.45 5.15024L13.9365 6.20974C13.6018 5.85208 13.2009 5.53608 12.7338 5.26174C12.2664 4.98741 11.7937 4.79316 11.3155 4.67899L11 2.00024H9.0155L8.6845 4.66949C8.17434 4.78999 7.70325 4.97458 7.27125 5.22324C6.83909 5.47208 6.42684 5.79258 6.0345 6.18474L3.55 5.15024L2.5655 6.85024L4.725 8.45974C4.64167 8.69708 4.58334 8.94391 4.55 9.20024C4.51667 9.45658 4.5 9.72641 4.5 10.0097C4.5 10.2701 4.51667 10.5252 4.55 10.7752C4.58334 11.0252 4.6385 11.2721 4.7155 11.5157L2.5655 13.1502L3.55 14.8502L6.025 13.8002C6.3275 14.1027 6.64767 14.3665 6.9855 14.5915C7.32334 14.8165 7.69034 15.0008 8.0865 15.1445C8.116 15.9855 8.291 16.7778 8.6115 17.5215C8.932 18.265 9.36084 18.9246 9.898 19.5002H7.69225ZM8.4865 12.5925C8.56734 12.3425 8.66259 12.1034 8.77225 11.8752C8.88175 11.6471 9.00575 11.4266 9.14425 11.2137C8.94809 11.0804 8.79359 10.908 8.68075 10.6965C8.56792 10.4848 8.5115 10.2527 8.5115 10.0002C8.5115 9.58358 8.65734 9.22941 8.949 8.93774C9.24067 8.64608 9.59484 8.50024 10.0115 8.50024C10.2577 8.50024 10.4907 8.55758 10.7105 8.67224C10.9305 8.78708 11.1072 8.94258 11.2405 9.13874C11.4532 9.00024 11.6727 8.87783 11.899 8.77149C12.1253 8.66499 12.3603 8.57649 12.6038 8.50599C12.3486 8.04966 11.9913 7.68458 11.5318 7.41074C11.0721 7.13708 10.5653 7.00024 10.0115 7.00024C9.16917 7.00024 8.45859 7.29224 7.87975 7.87624C7.30092 8.46024 7.0115 9.16824 7.0115 10.0002C7.0115 10.5502 7.14325 11.056 7.40675 11.5175C7.67025 11.979 8.03017 12.3373 8.4865 12.5925Z\"\n fill=\"#02A8A2\"\n />\n</svg>`\n\nfunction icons(template) {\n return ['#ffffff', '#64A3D9'].map(\n color => 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(template.replace(/{{strokecolor}}/g, color))\n )\n}\n\nexport const ICONS_HOME = icons(ICON_HOME)\nexport const ICONS_KPIS = icons(ICON_KPIS)\nexport const ICONS_STATUS = icons(ICON_STATUS)\nexport const ICONS_INTEGRATION = icons(ICON_INTEGRATION)\nexport const ICONS_SETTING = icons(ICON_SETTING)\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import './kpi-grade-2d-editor.js';
|
|
2
|
+
import { TemplateResult } from 'lit';
|
|
3
|
+
import { KpiListPage } from '@things-factory/kpi/dist-client/pages/kpi/kpi-list-page.js';
|
|
4
|
+
import { KpiGrade2dEditor } from './kpi-grade-2d-editor.js';
|
|
5
|
+
export declare class DsspKpiListPage extends KpiListPage {
|
|
6
|
+
static get scopedElements(): {
|
|
7
|
+
'kpi-grade-2d-editor': typeof KpiGrade2dEditor;
|
|
8
|
+
'kpi-importer': typeof import("@things-factory/kpi/dist-client/pages/kpi/kpi-importer.js").KpiImporter;
|
|
9
|
+
'kpi-grade-editor': typeof import("@things-factory/kpi/dist-client/pages/kpi/kpi-grade-editor.js").KpiGradeEditor;
|
|
10
|
+
'kpi-viz-editor': typeof import("@things-factory/kpi/dist-client/pages/kpi/kpi-viz-editor.js").KpiVizEditor;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* CUSTOM scoreType 셀 렌더러.
|
|
14
|
+
* 2D 룩업 구조인 경우 행 수와 함께 표시.
|
|
15
|
+
*/
|
|
16
|
+
protected renderCustomGradesCell(kpi: any): TemplateResult;
|
|
17
|
+
/**
|
|
18
|
+
* CUSTOM scoreType 편집.
|
|
19
|
+
* 2D 룩업이면 kpi-grade-2d-editor 팝업을 연다.
|
|
20
|
+
*/
|
|
21
|
+
protected _editCustomGrades(kpi: any): Promise<void>;
|
|
22
|
+
}
|