@dssp/supervision 0.0.27 → 0.0.29

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 (37) hide show
  1. package/client/bootstrap.ts +1 -8
  2. package/client/index.ts +0 -1
  3. package/client/pages/building-inspection/building-inspection-detail-drawing.ts +130 -14
  4. package/client/pages/building-inspection/building-inspection-list.ts +0 -6
  5. package/client/pages/building-inspection/component/building-inspection-detail-header.ts +1 -1
  6. package/dist-client/bootstrap.js +1 -7
  7. package/dist-client/bootstrap.js.map +1 -1
  8. package/dist-client/index.d.ts +0 -1
  9. package/dist-client/index.js +1 -1
  10. package/dist-client/index.js.map +1 -1
  11. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.d.ts +16 -2
  12. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js +138 -18
  13. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
  14. package/dist-client/pages/building-inspection/building-inspection-list.js +0 -6
  15. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  16. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js +9 -9
  17. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js.map +1 -1
  18. package/dist-client/route.d.ts +1 -1
  19. package/dist-client/tsconfig.tsbuildinfo +1 -1
  20. package/dist-server/service/building-inspection/building-inspection-mutation.js +2 -1
  21. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  22. package/dist-server/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +6 -5
  24. package/server/service/building-inspection/building-inspection-mutation.ts +1 -1
  25. package/assets/images/hatiolab-logo.png +0 -0
  26. package/client/actions/main.ts +0 -1
  27. package/client/pages/main.ts +0 -25
  28. package/client/reducers/main.ts +0 -17
  29. package/dist-client/actions/main.d.ts +0 -1
  30. package/dist-client/actions/main.js +0 -2
  31. package/dist-client/actions/main.js.map +0 -1
  32. package/dist-client/pages/main.d.ts +0 -1
  33. package/dist-client/pages/main.js +0 -27
  34. package/dist-client/pages/main.js.map +0 -1
  35. package/dist-client/reducers/main.d.ts +0 -6
  36. package/dist-client/reducers/main.js +0 -14
  37. package/dist-client/reducers/main.js.map +0 -1
@@ -1,8 +1 @@
1
- import { store } from '@operato/shell'
2
- import supervision from './reducers/main'
3
-
4
- export default function bootstrap() {
5
- store.addReducers({
6
- supervision
7
- })
8
- }
1
+ export default function bootstrap() {}
package/client/index.ts CHANGED
@@ -1 +0,0 @@
1
- export * from './actions/main'
@@ -1,16 +1,23 @@
1
1
  import '@material/web/icon/icon.js'
2
- import { CommonGristStyles, ScrollbarStyles } from '@operato/styles'
3
- import { PageView } from '@operato/shell'
4
- import { css, html } from 'lit'
5
- import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'
2
+ import '@operato/image-marker/ox-image-marker.js'
3
+ import '@operato/image-marker/ox-image-marker-view.js'
4
+
5
+ import gql from 'graphql-tag'
6
+ import { css, html, PropertyValues } from 'lit'
6
7
  import { customElement, query, state } from 'lit/decorators.js'
8
+ import { consume } from '@lit/context'
7
9
  import { ScopedElementsMixin } from '@open-wc/scoped-elements'
10
+
11
+ import { PageView } from '@operato/shell'
12
+ import { CommonGristStyles, ScrollbarStyles } from '@operato/styles'
13
+ import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'
8
14
  import { client } from '@operato/graphql'
9
15
  import { notify } from '@operato/layout'
10
- import gql from 'graphql-tag'
16
+ import { Shape } from '@operato/image-marker'
17
+
18
+ import { DrawingImageProvider } from '@dssp/drawing/dist-client/drawing-management/drawing-image-provider.js'
19
+
11
20
  import './component/building-inspection-detail-header'
12
- import '@operato/image-marker/ox-image-marker.js'
13
- import '@operato/image-marker/ox-image-marker-view.js'
14
21
  import { BuildingInspectionStatus } from './building-inspection-list'
15
22
 
16
23
  @customElement('building-inspection-detail-drawing')
@@ -40,12 +47,28 @@ export class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageVie
40
47
  width: 100%;
41
48
  }
42
49
  }
50
+
51
+ dialog ox-image-marker-view {
52
+ width: 80vw;
53
+ height: 80vh;
54
+ }
43
55
  `
44
56
  ]
45
57
 
46
58
  @state() project: any = {}
47
59
  @state() buildingInspection: any = {}
48
60
  @state() buildingInspectionId: string = ''
61
+ @state() imageUrl?: string
62
+ @state() shapes: Shape[] = []
63
+ @state() linkUrl?: string
64
+ @state() linkShapes: Shape[] = []
65
+
66
+ @state() drawingImageProvider: DrawingImageProvider = new DrawingImageProvider()
67
+ // @consume({ context: OxUserPreferencesContext, subscribe: true })
68
+
69
+ @query('#image-marker') imageMarker!: any
70
+ @query('#link-viewer') linkViewer!: any
71
+ @query('dialog') dialog!: HTMLDialogElement
49
72
 
50
73
  get context() {
51
74
  return {
@@ -53,10 +76,34 @@ export class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageVie
53
76
  }
54
77
  }
55
78
 
56
- render() {
57
- const imageUrl = this.buildingInspection?.buildingLevel?.mainDrawingImage || '/assets/images/img-drawing-default.png'
58
- const shapes = JSON.parse(this.buildingInspection?.drawingMarker || null) || []
79
+ connectedCallback(): void {
80
+ super.connectedCallback()
59
81
 
82
+ requestAnimationFrame(() => {
83
+ this.imageMarker.setImageProvider(this.drawingImageProvider)
84
+ this.linkViewer.setImageProvider(this.drawingImageProvider)
85
+
86
+ this.dialog.addEventListener('click', event => {
87
+ const rect = this.dialog.getBoundingClientRect()
88
+ const isInDialog =
89
+ rect.top <= event.clientY && event.clientY <= rect.bottom && rect.left <= event.clientX && event.clientX <= rect.right
90
+
91
+ // 다이아로그 내부를 클릭한 것이 아니면 다이아로그 닫기
92
+ if (!isInDialog) {
93
+ this.dialog.close()
94
+ }
95
+ })
96
+ })
97
+ }
98
+
99
+ disconnectedCallback(): void {
100
+ this.imageMarker?.setImageProvider(null)
101
+ this.linkViewer?.setImageProvider(null)
102
+
103
+ super.disconnectedCallback()
104
+ }
105
+
106
+ render() {
60
107
  return html`
61
108
  <building-inspection-detail-header
62
109
  .buildingInspectionId=${this.buildingInspection?.id}
@@ -66,23 +113,88 @@ export class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageVie
66
113
  .buildingLevelFloor=${this.buildingInspection?.buildingLevel?.floor}
67
114
  ></building-inspection-detail-header>
68
115
 
69
- <div body>
116
+ <div
117
+ body
118
+ @link-clicked=${async (e: CustomEvent) => {
119
+ this.linkViewer.reset()
120
+
121
+ const { link } = e.detail
122
+ const { id, type, symbol, box, dwgId } = JSON.parse(link)
123
+ const [x, y, width, height] = box?.split(',').map(Number) || []
124
+
125
+ this.linkUrl = `DWGID:${dwgId}`
126
+ this.linkShapes = [
127
+ {
128
+ id: id!,
129
+ type: 'link',
130
+ x,
131
+ y,
132
+ width,
133
+ height,
134
+ link: '{}'
135
+ }
136
+ ]
137
+
138
+ if (this.dialog) {
139
+ this.dialog.showModal()
140
+ }
141
+ }}
142
+ >
70
143
  ${this.buildingInspection?.status == BuildingInspectionStatus.PASS
71
- ? html`<ox-image-marker-view .imageUrl=${imageUrl} .shapes=${shapes}></ox-image-marker-view>`
144
+ ? html`<ox-image-marker-view
145
+ id="image-marker"
146
+ .imageUrl=${this.imageUrl}
147
+ .shapes=${this.shapes}
148
+ ></ox-image-marker-view>`
72
149
  : html` <ox-image-marker
73
- .imageUrl=${imageUrl}
74
- .shapes=${shapes}
150
+ id="image-marker"
151
+ .imageUrl=${this.imageUrl}
152
+ .shapes=${this.shapes}
75
153
  @shapes-changed=${this.onClickMarkerSave}
76
154
  .currentMode=${'view'}
77
155
  ></ox-image-marker>`}
78
156
  </div>
157
+
158
+ <dialog>
159
+ <ox-image-marker-view id="link-viewer" .imageUrl=${this.linkUrl} .shapes=${this.linkShapes}></ox-image-marker-view>
160
+ </dialog>
79
161
  `
80
162
  }
81
163
 
164
+ protected async updated(changes: PropertyValues): Promise<void> {
165
+ if (changes.has('buildingInspection') && this.buildingInspection?.checklist) {
166
+ // 1-1. 위치 정보 - 체크리스트에 들어가는 위치정보 텍스트
167
+ const location_1 = this.buildingInspection.checklist?.location
168
+
169
+ // 1-2. 위치 정보 - 실제 위치정보 텍스트 (동 + 층) - ID 필드를 사용하면 DB ID 필드입니다.
170
+ const location_building = this.buildingInspection.buildingLevel.building.name
171
+ const location_floor = this.buildingInspection.buildingLevel.floor
172
+
173
+ // 2. 평면도 pdf 파일
174
+ // mainDrawing {
175
+ // id
176
+ // name
177
+ // fullpath
178
+ // }
179
+ const mainDrawing = this.buildingInspection.buildingLevel.mainDrawing
180
+
181
+ // 3. 선택 도면
182
+ const inspectionDrawingType = this.buildingInspection.checklist.inspectionDrawingType
183
+
184
+ const shapes = JSON.parse(this.buildingInspection?.drawingMarker || null) || []
185
+ const markers = await this.drawingImageProvider.getMarkers(inspectionDrawingType)
186
+
187
+ this.imageUrl = String(inspectionDrawingType).normalize('NFC')
188
+ this.shapes = [...shapes, ...markers]
189
+ }
190
+ }
191
+
82
192
  async pageUpdated(changes: any, lifecycle: PageLifecycle) {
83
193
  if (this.active) {
84
194
  this.buildingInspectionId = lifecycle.resourceId || ''
85
195
  await this.initBuildingInspection(this.buildingInspectionId)
196
+
197
+ this.imageMarker.reset()
86
198
  }
87
199
  }
88
200
 
@@ -95,6 +207,10 @@ export class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageVie
95
207
  status
96
208
  requestDate
97
209
  drawingMarker
210
+ checklist {
211
+ location
212
+ inspectionDrawingType
213
+ }
98
214
  buildingLevel {
99
215
  id
100
216
  floor
@@ -410,12 +410,6 @@ export class BuildingInspectionList extends ScopedElementsMixin(PageView) {
410
410
  renderer: value => BUILDING_INSPECTION_STATUS_DISPLAY[value]
411
411
  },
412
412
  width: 120
413
- },
414
- {
415
- type: 'datetime',
416
- name: '',
417
- header: '검측 결과 데이터',
418
- width: 180
419
413
  }
420
414
  ],
421
415
  rows: {
@@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'
4
4
  import { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles'
5
5
 
6
6
  @customElement('building-inspection-detail-header')
7
- class buildingInspectionDetailHeader extends LitElement {
7
+ class BuildingInspectionDetailHeader extends LitElement {
8
8
  static styles = [
9
9
  ButtonContainerStyles,
10
10
  ScrollbarStyles,
@@ -1,8 +1,2 @@
1
- import { store } from '@operato/shell';
2
- import supervision from './reducers/main';
3
- export default function bootstrap() {
4
- store.addReducers({
5
- supervision
6
- });
7
- }
1
+ export default function bootstrap() { }
8
2
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,WAAW,MAAM,iBAAiB,CAAA;AAEzC,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,KAAK,CAAC,WAAW,CAAC;QAChB,WAAW;KACZ,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { store } from '@operato/shell'\nimport supervision from './reducers/main'\n\nexport default function bootstrap() {\n store.addReducers({\n supervision\n })\n}\n"]}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,KAAI,CAAC","sourcesContent":["export default function bootstrap() {}\n"]}
@@ -1 +0,0 @@
1
- export * from './actions/main';
@@ -1,2 +1,2 @@
1
- export * from './actions/main';
1
+ "use strict";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA","sourcesContent":["export * from './actions/main'"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -1,19 +1,33 @@
1
1
  import '@material/web/icon/icon.js';
2
+ import '@operato/image-marker/ox-image-marker.js';
3
+ import '@operato/image-marker/ox-image-marker-view.js';
4
+ import { PropertyValues } from 'lit';
2
5
  import { PageView } from '@operato/shell';
3
6
  import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view';
7
+ import { Shape } from '@operato/image-marker';
8
+ import { DrawingImageProvider } from '@dssp/drawing/dist-client/drawing-management/drawing-image-provider.js';
4
9
  import './component/building-inspection-detail-header';
5
- import '@operato/image-marker/ox-image-marker.js';
6
- import '@operato/image-marker/ox-image-marker-view.js';
7
10
  declare const BuildingInspectionDetailDrawing_base: typeof PageView & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/types/src/types").ScopedElementsHost>;
8
11
  export declare class BuildingInspectionDetailDrawing extends BuildingInspectionDetailDrawing_base {
9
12
  static styles: import("lit").CSSResult[];
10
13
  project: any;
11
14
  buildingInspection: any;
12
15
  buildingInspectionId: string;
16
+ imageUrl?: string;
17
+ shapes: Shape[];
18
+ linkUrl?: string;
19
+ linkShapes: Shape[];
20
+ drawingImageProvider: DrawingImageProvider;
21
+ imageMarker: any;
22
+ linkViewer: any;
23
+ dialog: HTMLDialogElement;
13
24
  get context(): {
14
25
  title: string;
15
26
  };
27
+ connectedCallback(): void;
28
+ disconnectedCallback(): void;
16
29
  render(): import("lit-html").TemplateResult<1>;
30
+ protected updated(changes: PropertyValues): Promise<void>;
17
31
  pageUpdated(changes: any, lifecycle: PageLifecycle): Promise<void>;
18
32
  initBuildingInspection(buildingInspectionId?: string): Promise<void>;
19
33
  private _getProjectByBuildingComplexId;
@@ -1,16 +1,17 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import '@material/web/icon/icon.js';
3
- import { CommonGristStyles, ScrollbarStyles } from '@operato/styles';
4
- import { PageView } from '@operato/shell';
3
+ import '@operato/image-marker/ox-image-marker.js';
4
+ import '@operato/image-marker/ox-image-marker-view.js';
5
+ import gql from 'graphql-tag';
5
6
  import { css, html } from 'lit';
6
- import { customElement, state } from 'lit/decorators.js';
7
+ import { customElement, query, state } from 'lit/decorators.js';
7
8
  import { ScopedElementsMixin } from '@open-wc/scoped-elements';
9
+ import { PageView } from '@operato/shell';
10
+ import { CommonGristStyles, ScrollbarStyles } from '@operato/styles';
8
11
  import { client } from '@operato/graphql';
9
12
  import { notify } from '@operato/layout';
10
- import gql from 'graphql-tag';
13
+ import { DrawingImageProvider } from '@dssp/drawing/dist-client/drawing-management/drawing-image-provider.js';
11
14
  import './component/building-inspection-detail-header';
12
- import '@operato/image-marker/ox-image-marker.js';
13
- import '@operato/image-marker/ox-image-marker-view.js';
14
15
  import { BuildingInspectionStatus } from './building-inspection-list';
15
16
  let BuildingInspectionDetailDrawing = class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageView) {
16
17
  constructor() {
@@ -18,41 +19,119 @@ let BuildingInspectionDetailDrawing = class BuildingInspectionDetailDrawing exte
18
19
  this.project = {};
19
20
  this.buildingInspection = {};
20
21
  this.buildingInspectionId = '';
22
+ this.shapes = [];
23
+ this.linkShapes = [];
24
+ this.drawingImageProvider = new DrawingImageProvider();
21
25
  }
22
26
  get context() {
23
27
  return {
24
28
  title: '검측 관리 상세 - 검측 도면'
25
29
  };
26
30
  }
31
+ connectedCallback() {
32
+ super.connectedCallback();
33
+ requestAnimationFrame(() => {
34
+ this.imageMarker.setImageProvider(this.drawingImageProvider);
35
+ this.linkViewer.setImageProvider(this.drawingImageProvider);
36
+ this.dialog.addEventListener('click', event => {
37
+ const rect = this.dialog.getBoundingClientRect();
38
+ const isInDialog = rect.top <= event.clientY && event.clientY <= rect.bottom && rect.left <= event.clientX && event.clientX <= rect.right;
39
+ // 다이아로그 내부를 클릭한 것이 아니면 다이아로그 닫기
40
+ if (!isInDialog) {
41
+ this.dialog.close();
42
+ }
43
+ });
44
+ });
45
+ }
46
+ disconnectedCallback() {
47
+ var _a, _b;
48
+ (_a = this.imageMarker) === null || _a === void 0 ? void 0 : _a.setImageProvider(null);
49
+ (_b = this.linkViewer) === null || _b === void 0 ? void 0 : _b.setImageProvider(null);
50
+ super.disconnectedCallback();
51
+ }
27
52
  render() {
28
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
29
- const imageUrl = ((_b = (_a = this.buildingInspection) === null || _a === void 0 ? void 0 : _a.buildingLevel) === null || _b === void 0 ? void 0 : _b.mainDrawingImage) || '/assets/images/img-drawing-default.png';
30
- const shapes = JSON.parse(((_c = this.buildingInspection) === null || _c === void 0 ? void 0 : _c.drawingMarker) || null) || [];
53
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
31
54
  return html `
32
55
  <building-inspection-detail-header
33
- .buildingInspectionId=${(_d = this.buildingInspection) === null || _d === void 0 ? void 0 : _d.id}
34
- .buildingLevelId=${(_f = (_e = this.buildingInspection) === null || _e === void 0 ? void 0 : _e.buildingLevel) === null || _f === void 0 ? void 0 : _f.id}
56
+ .buildingInspectionId=${(_a = this.buildingInspection) === null || _a === void 0 ? void 0 : _a.id}
57
+ .buildingLevelId=${(_c = (_b = this.buildingInspection) === null || _b === void 0 ? void 0 : _b.buildingLevel) === null || _c === void 0 ? void 0 : _c.id}
35
58
  .projectName=${this.project.name}
36
- .buildingName=${(_j = (_h = (_g = this.buildingInspection) === null || _g === void 0 ? void 0 : _g.buildingLevel) === null || _h === void 0 ? void 0 : _h.building) === null || _j === void 0 ? void 0 : _j.name}
37
- .buildingLevelFloor=${(_l = (_k = this.buildingInspection) === null || _k === void 0 ? void 0 : _k.buildingLevel) === null || _l === void 0 ? void 0 : _l.floor}
59
+ .buildingName=${(_f = (_e = (_d = this.buildingInspection) === null || _d === void 0 ? void 0 : _d.buildingLevel) === null || _e === void 0 ? void 0 : _e.building) === null || _f === void 0 ? void 0 : _f.name}
60
+ .buildingLevelFloor=${(_h = (_g = this.buildingInspection) === null || _g === void 0 ? void 0 : _g.buildingLevel) === null || _h === void 0 ? void 0 : _h.floor}
38
61
  ></building-inspection-detail-header>
39
62
 
40
- <div body>
41
- ${((_m = this.buildingInspection) === null || _m === void 0 ? void 0 : _m.status) == BuildingInspectionStatus.PASS
42
- ? html `<ox-image-marker-view .imageUrl=${imageUrl} .shapes=${shapes}></ox-image-marker-view>`
63
+ <div
64
+ body
65
+ @link-clicked=${async (e) => {
66
+ this.linkViewer.reset();
67
+ const { link } = e.detail;
68
+ const { id, type, symbol, box, dwgId } = JSON.parse(link);
69
+ const [x, y, width, height] = (box === null || box === void 0 ? void 0 : box.split(',').map(Number)) || [];
70
+ this.linkUrl = `DWGID:${dwgId}`;
71
+ this.linkShapes = [
72
+ {
73
+ id: id,
74
+ type: 'link',
75
+ x,
76
+ y,
77
+ width,
78
+ height,
79
+ link: '{}'
80
+ }
81
+ ];
82
+ if (this.dialog) {
83
+ this.dialog.showModal();
84
+ }
85
+ }}
86
+ >
87
+ ${((_j = this.buildingInspection) === null || _j === void 0 ? void 0 : _j.status) == BuildingInspectionStatus.PASS
88
+ ? html `<ox-image-marker-view
89
+ id="image-marker"
90
+ .imageUrl=${this.imageUrl}
91
+ .shapes=${this.shapes}
92
+ ></ox-image-marker-view>`
43
93
  : html ` <ox-image-marker
44
- .imageUrl=${imageUrl}
45
- .shapes=${shapes}
94
+ id="image-marker"
95
+ .imageUrl=${this.imageUrl}
96
+ .shapes=${this.shapes}
46
97
  @shapes-changed=${this.onClickMarkerSave}
47
98
  .currentMode=${'view'}
48
99
  ></ox-image-marker>`}
49
100
  </div>
101
+
102
+ <dialog>
103
+ <ox-image-marker-view id="link-viewer" .imageUrl=${this.linkUrl} .shapes=${this.linkShapes}></ox-image-marker-view>
104
+ </dialog>
50
105
  `;
51
106
  }
107
+ async updated(changes) {
108
+ var _a, _b, _c;
109
+ if (changes.has('buildingInspection') && ((_a = this.buildingInspection) === null || _a === void 0 ? void 0 : _a.checklist)) {
110
+ // 1-1. 위치 정보 - 체크리스트에 들어가는 위치정보 텍스트
111
+ const location_1 = (_b = this.buildingInspection.checklist) === null || _b === void 0 ? void 0 : _b.location;
112
+ // 1-2. 위치 정보 - 실제 위치정보 텍스트 (동 + 층) - ID 필드를 사용하면 DB ID 필드입니다.
113
+ const location_building = this.buildingInspection.buildingLevel.building.name;
114
+ const location_floor = this.buildingInspection.buildingLevel.floor;
115
+ // 2. 평면도 pdf 파일
116
+ // mainDrawing {
117
+ // id
118
+ // name
119
+ // fullpath
120
+ // }
121
+ const mainDrawing = this.buildingInspection.buildingLevel.mainDrawing;
122
+ // 3. 선택 도면
123
+ const inspectionDrawingType = this.buildingInspection.checklist.inspectionDrawingType;
124
+ const shapes = JSON.parse(((_c = this.buildingInspection) === null || _c === void 0 ? void 0 : _c.drawingMarker) || null) || [];
125
+ const markers = await this.drawingImageProvider.getMarkers(inspectionDrawingType);
126
+ this.imageUrl = String(inspectionDrawingType).normalize('NFC');
127
+ this.shapes = [...shapes, ...markers];
128
+ }
129
+ }
52
130
  async pageUpdated(changes, lifecycle) {
53
131
  if (this.active) {
54
132
  this.buildingInspectionId = lifecycle.resourceId || '';
55
133
  await this.initBuildingInspection(this.buildingInspectionId);
134
+ this.imageMarker.reset();
56
135
  }
57
136
  }
58
137
  async initBuildingInspection(buildingInspectionId = '') {
@@ -65,6 +144,10 @@ let BuildingInspectionDetailDrawing = class BuildingInspectionDetailDrawing exte
65
144
  status
66
145
  requestDate
67
146
  drawingMarker
147
+ checklist {
148
+ location
149
+ inspectionDrawingType
150
+ }
68
151
  buildingLevel {
69
152
  id
70
153
  floor
@@ -159,6 +242,11 @@ BuildingInspectionDetailDrawing.styles = [
159
242
  width: 100%;
160
243
  }
161
244
  }
245
+
246
+ dialog ox-image-marker-view {
247
+ width: 80vw;
248
+ height: 80vh;
249
+ }
162
250
  `
163
251
  ];
164
252
  __decorate([
@@ -173,6 +261,38 @@ __decorate([
173
261
  state(),
174
262
  __metadata("design:type", String)
175
263
  ], BuildingInspectionDetailDrawing.prototype, "buildingInspectionId", void 0);
264
+ __decorate([
265
+ state(),
266
+ __metadata("design:type", String)
267
+ ], BuildingInspectionDetailDrawing.prototype, "imageUrl", void 0);
268
+ __decorate([
269
+ state(),
270
+ __metadata("design:type", Array)
271
+ ], BuildingInspectionDetailDrawing.prototype, "shapes", void 0);
272
+ __decorate([
273
+ state(),
274
+ __metadata("design:type", String)
275
+ ], BuildingInspectionDetailDrawing.prototype, "linkUrl", void 0);
276
+ __decorate([
277
+ state(),
278
+ __metadata("design:type", Array)
279
+ ], BuildingInspectionDetailDrawing.prototype, "linkShapes", void 0);
280
+ __decorate([
281
+ state(),
282
+ __metadata("design:type", DrawingImageProvider)
283
+ ], BuildingInspectionDetailDrawing.prototype, "drawingImageProvider", void 0);
284
+ __decorate([
285
+ query('#image-marker'),
286
+ __metadata("design:type", Object)
287
+ ], BuildingInspectionDetailDrawing.prototype, "imageMarker", void 0);
288
+ __decorate([
289
+ query('#link-viewer'),
290
+ __metadata("design:type", Object)
291
+ ], BuildingInspectionDetailDrawing.prototype, "linkViewer", void 0);
292
+ __decorate([
293
+ query('dialog'),
294
+ __metadata("design:type", HTMLDialogElement)
295
+ ], BuildingInspectionDetailDrawing.prototype, "dialog", void 0);
176
296
  BuildingInspectionDetailDrawing = __decorate([
177
297
  customElement('building-inspection-detail-drawing')
178
298
  ], BuildingInspectionDetailDrawing);
@@ -1 +1 @@
1
- {"version":3,"file":"building-inspection-detail-drawing.js","sourceRoot":"","sources":["../../../client/pages/building-inspection/building-inspection-detail-drawing.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport { CommonGristStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { notify } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport './component/building-inspection-detail-header'\nimport '@operato/image-marker/ox-image-marker.js'\nimport '@operato/image-marker/ox-image-marker-view.js'\nimport { BuildingInspectionStatus } from './building-inspection-list'\n\n@customElement('building-inspection-detail-drawing')\nexport class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: grid;\n grid-template-rows: 75px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: #f7f7f7;\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n div[body] {\n display: flex;\n justify-content: center;\n\n ox-image-marker-view {\n width: 100%;\n }\n }\n `\n ]\n\n @state() project: any = {}\n @state() buildingInspection: any = {}\n @state() buildingInspectionId: string = ''\n\n get context() {\n return {\n title: '검측 관리 상세 - 검측 도면'\n }\n }\n\n render() {\n const imageUrl = this.buildingInspection?.buildingLevel?.mainDrawingImage || '/assets/images/img-drawing-default.png'\n const shapes = JSON.parse(this.buildingInspection?.drawingMarker || null) || []\n\n return html`\n <building-inspection-detail-header\n .buildingInspectionId=${this.buildingInspection?.id}\n .buildingLevelId=${this.buildingInspection?.buildingLevel?.id}\n .projectName=${this.project.name}\n .buildingName=${this.buildingInspection?.buildingLevel?.building?.name}\n .buildingLevelFloor=${this.buildingInspection?.buildingLevel?.floor}\n ></building-inspection-detail-header>\n\n <div body>\n ${this.buildingInspection?.status == BuildingInspectionStatus.PASS\n ? html`<ox-image-marker-view .imageUrl=${imageUrl} .shapes=${shapes}></ox-image-marker-view>`\n : html` <ox-image-marker\n .imageUrl=${imageUrl}\n .shapes=${shapes}\n @shapes-changed=${this.onClickMarkerSave}\n .currentMode=${'view'}\n ></ox-image-marker>`}\n </div>\n `\n }\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.buildingInspectionId = lifecycle.resourceId || ''\n await this.initBuildingInspection(this.buildingInspectionId)\n }\n }\n\n async initBuildingInspection(buildingInspectionId: string = '') {\n const response = await client.query({\n query: gql`\n query BuildingInspection($buildingInspectionId: String!) {\n buildingInspection(id: $buildingInspectionId) {\n id\n status\n requestDate\n drawingMarker\n buildingLevel {\n id\n floor\n mainDrawing {\n id\n name\n fullpath\n }\n mainDrawingImage\n building {\n id\n name\n buildingComplex {\n id\n }\n }\n }\n }\n }\n `,\n variables: {\n buildingInspectionId\n }\n })\n\n if (response.errors) return\n\n this.buildingInspection = response.data.buildingInspection\n\n await this._getProjectByBuildingComplexId(this.buildingInspection?.buildingLevel?.building?.buildingComplex?.id)\n }\n\n private async _getProjectByBuildingComplexId(buildingComplexId) {\n const response = await client.query({\n query: gql`\n query ProjectByBuildingComplexId($buildingComplexId: String!) {\n project: projectByBuildingComplexId(buildingComplexId: $buildingComplexId) {\n id\n name\n }\n }\n `,\n variables: {\n buildingComplexId\n }\n })\n\n if (response.errors) return\n\n this.project = response.data.project\n }\n\n private async onClickMarkerSave(e) {\n const response = await client.query({\n query: gql`\n mutation UpdateBuildingInspection($patch: UpdateBuildingInspectionDrawingMarker!) {\n updateBuildingInspection(patch: $patch) {\n id\n drawingMarker\n }\n }\n `,\n variables: {\n patch: {\n id: this.buildingInspectionId,\n drawingMarker: JSON.stringify(e.detail)\n }\n }\n })\n\n if (response.errors) return\n\n notify({ message: '저장되었습니다.' })\n }\n}\n"]}
1
+ {"version":3,"file":"building-inspection-detail-drawing.js","sourceRoot":"","sources":["../../../client/pages/building-inspection/building-inspection-detail-drawing.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/image-marker/ox-image-marker.js'\nimport '@operato/image-marker/ox-image-marker-view.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { consume } from '@lit/context'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\n\nimport { PageView } from '@operato/shell'\nimport { CommonGristStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { client } from '@operato/graphql'\nimport { notify } from '@operato/layout'\nimport { Shape } from '@operato/image-marker'\n\nimport { DrawingImageProvider } from '@dssp/drawing/dist-client/drawing-management/drawing-image-provider.js'\n\nimport './component/building-inspection-detail-header'\nimport { BuildingInspectionStatus } from './building-inspection-list'\n\n@customElement('building-inspection-detail-drawing')\nexport class BuildingInspectionDetailDrawing extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: grid;\n grid-template-rows: 75px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: #f7f7f7;\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n div[body] {\n display: flex;\n justify-content: center;\n\n ox-image-marker-view {\n width: 100%;\n }\n }\n\n dialog ox-image-marker-view {\n width: 80vw;\n height: 80vh;\n }\n `\n ]\n\n @state() project: any = {}\n @state() buildingInspection: any = {}\n @state() buildingInspectionId: string = ''\n @state() imageUrl?: string\n @state() shapes: Shape[] = []\n @state() linkUrl?: string\n @state() linkShapes: Shape[] = []\n\n @state() drawingImageProvider: DrawingImageProvider = new DrawingImageProvider()\n // @consume({ context: OxUserPreferencesContext, subscribe: true })\n\n @query('#image-marker') imageMarker!: any\n @query('#link-viewer') linkViewer!: any\n @query('dialog') dialog!: HTMLDialogElement\n\n get context() {\n return {\n title: '검측 관리 상세 - 검측 도면'\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n requestAnimationFrame(() => {\n this.imageMarker.setImageProvider(this.drawingImageProvider)\n this.linkViewer.setImageProvider(this.drawingImageProvider)\n\n this.dialog.addEventListener('click', event => {\n const rect = this.dialog.getBoundingClientRect()\n const isInDialog =\n rect.top <= event.clientY && event.clientY <= rect.bottom && rect.left <= event.clientX && event.clientX <= rect.right\n\n // 다이아로그 내부를 클릭한 것이 아니면 다이아로그 닫기\n if (!isInDialog) {\n this.dialog.close()\n }\n })\n })\n }\n\n disconnectedCallback(): void {\n this.imageMarker?.setImageProvider(null)\n this.linkViewer?.setImageProvider(null)\n\n super.disconnectedCallback()\n }\n\n render() {\n return html`\n <building-inspection-detail-header\n .buildingInspectionId=${this.buildingInspection?.id}\n .buildingLevelId=${this.buildingInspection?.buildingLevel?.id}\n .projectName=${this.project.name}\n .buildingName=${this.buildingInspection?.buildingLevel?.building?.name}\n .buildingLevelFloor=${this.buildingInspection?.buildingLevel?.floor}\n ></building-inspection-detail-header>\n\n <div\n body\n @link-clicked=${async (e: CustomEvent) => {\n this.linkViewer.reset()\n\n const { link } = e.detail\n const { id, type, symbol, box, dwgId } = JSON.parse(link)\n const [x, y, width, height] = box?.split(',').map(Number) || []\n\n this.linkUrl = `DWGID:${dwgId}`\n this.linkShapes = [\n {\n id: id!,\n type: 'link',\n x,\n y,\n width,\n height,\n link: '{}'\n }\n ]\n\n if (this.dialog) {\n this.dialog.showModal()\n }\n }}\n >\n ${this.buildingInspection?.status == BuildingInspectionStatus.PASS\n ? html`<ox-image-marker-view\n id=\"image-marker\"\n .imageUrl=${this.imageUrl}\n .shapes=${this.shapes}\n ></ox-image-marker-view>`\n : html` <ox-image-marker\n id=\"image-marker\"\n .imageUrl=${this.imageUrl}\n .shapes=${this.shapes}\n @shapes-changed=${this.onClickMarkerSave}\n .currentMode=${'view'}\n ></ox-image-marker>`}\n </div>\n\n <dialog>\n <ox-image-marker-view id=\"link-viewer\" .imageUrl=${this.linkUrl} .shapes=${this.linkShapes}></ox-image-marker-view>\n </dialog>\n `\n }\n\n protected async updated(changes: PropertyValues): Promise<void> {\n if (changes.has('buildingInspection') && this.buildingInspection?.checklist) {\n // 1-1. 위치 정보 - 체크리스트에 들어가는 위치정보 텍스트\n const location_1 = this.buildingInspection.checklist?.location\n\n // 1-2. 위치 정보 - 실제 위치정보 텍스트 (동 + 층) - ID 필드를 사용하면 DB ID 필드입니다.\n const location_building = this.buildingInspection.buildingLevel.building.name\n const location_floor = this.buildingInspection.buildingLevel.floor\n\n // 2. 평면도 pdf 파일\n // mainDrawing {\n // id\n // name\n // fullpath\n // }\n const mainDrawing = this.buildingInspection.buildingLevel.mainDrawing\n\n // 3. 선택 도면\n const inspectionDrawingType = this.buildingInspection.checklist.inspectionDrawingType\n\n const shapes = JSON.parse(this.buildingInspection?.drawingMarker || null) || []\n const markers = await this.drawingImageProvider.getMarkers(inspectionDrawingType)\n\n this.imageUrl = String(inspectionDrawingType).normalize('NFC')\n this.shapes = [...shapes, ...markers]\n }\n }\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.buildingInspectionId = lifecycle.resourceId || ''\n await this.initBuildingInspection(this.buildingInspectionId)\n\n this.imageMarker.reset()\n }\n }\n\n async initBuildingInspection(buildingInspectionId: string = '') {\n const response = await client.query({\n query: gql`\n query BuildingInspection($buildingInspectionId: String!) {\n buildingInspection(id: $buildingInspectionId) {\n id\n status\n requestDate\n drawingMarker\n checklist {\n location\n inspectionDrawingType\n }\n buildingLevel {\n id\n floor\n mainDrawing {\n id\n name\n fullpath\n }\n mainDrawingImage\n building {\n id\n name\n buildingComplex {\n id\n }\n }\n }\n }\n }\n `,\n variables: {\n buildingInspectionId\n }\n })\n\n if (response.errors) return\n\n this.buildingInspection = response.data.buildingInspection\n\n await this._getProjectByBuildingComplexId(this.buildingInspection?.buildingLevel?.building?.buildingComplex?.id)\n }\n\n private async _getProjectByBuildingComplexId(buildingComplexId) {\n const response = await client.query({\n query: gql`\n query ProjectByBuildingComplexId($buildingComplexId: String!) {\n project: projectByBuildingComplexId(buildingComplexId: $buildingComplexId) {\n id\n name\n }\n }\n `,\n variables: {\n buildingComplexId\n }\n })\n\n if (response.errors) return\n\n this.project = response.data.project\n }\n\n private async onClickMarkerSave(e) {\n const response = await client.query({\n query: gql`\n mutation UpdateBuildingInspection($patch: UpdateBuildingInspectionDrawingMarker!) {\n updateBuildingInspection(patch: $patch) {\n id\n drawingMarker\n }\n }\n `,\n variables: {\n patch: {\n id: this.buildingInspectionId,\n drawingMarker: JSON.stringify(e.detail)\n }\n }\n })\n\n if (response.errors) return\n\n notify({ message: '저장되었습니다.' })\n }\n}\n"]}
@@ -225,12 +225,6 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
225
225
  renderer: value => BUILDING_INSPECTION_STATUS_DISPLAY[value]
226
226
  },
227
227
  width: 120
228
- },
229
- {
230
- type: 'datetime',
231
- name: '',
232
- header: '검측 결과 데이터',
233
- width: 180
234
228
  }
235
229
  ],
236
230
  rows: {