@dssp/supervision 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (217) hide show
  1. package/dist-client/graphql/building-inspection.d.ts +1 -0
  2. package/dist-client/graphql/building-inspection.js +100 -0
  3. package/dist-client/graphql/building-inspection.js.map +1 -0
  4. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.d.ts +9 -0
  5. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js +130 -72
  6. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js.map +1 -1
  7. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.d.ts +1 -0
  8. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js +77 -14
  9. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
  10. package/dist-client/pages/building-inspection/building-inspection-list.d.ts +18 -2
  11. package/dist-client/pages/building-inspection/building-inspection-list.js +360 -28
  12. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  13. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js +31 -9
  14. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js.map +1 -1
  15. package/dist-client/pages/building-inspection/component/daily-worklog-popup.d.ts +27 -0
  16. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js +542 -0
  17. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js.map +1 -0
  18. package/dist-client/pages/building-inspection/component/image-preview-popup.d.ts +15 -0
  19. package/dist-client/pages/building-inspection/component/image-preview-popup.js +351 -0
  20. package/dist-client/pages/building-inspection/component/image-preview-popup.js.map +1 -0
  21. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.d.ts +20 -0
  22. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.js +432 -0
  23. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.js.map +1 -0
  24. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.d.ts +30 -0
  25. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.js +479 -0
  26. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.js.map +1 -0
  27. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.d.ts +27 -0
  28. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.js +401 -0
  29. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.js.map +1 -0
  30. package/dist-client/pages/building-inspection/component/inspection-event-provider.d.ts +2 -1
  31. package/dist-client/pages/building-inspection/component/inspection-event-provider.js +39 -17
  32. package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
  33. package/dist-client/pages/building-inspection/inspection-create-popup.js +22 -9
  34. package/dist-client/pages/building-inspection/inspection-create-popup.js.map +1 -1
  35. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.d.ts +60 -0
  36. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js +1132 -0
  37. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js.map +1 -0
  38. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.d.ts +2 -0
  39. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js +740 -0
  40. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js.map +1 -0
  41. package/dist-client/pages/building-inspection-grid/component/grid-inspection-list-layer.d.ts +19 -0
  42. package/dist-client/pages/building-inspection-grid/component/grid-inspection-list-layer.js +205 -0
  43. package/dist-client/pages/building-inspection-grid/component/grid-inspection-list-layer.js.map +1 -0
  44. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.d.ts +1 -0
  45. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.js +304 -0
  46. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.js.map +1 -0
  47. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.d.ts +15 -0
  48. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.js +430 -0
  49. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.js.map +1 -0
  50. package/dist-client/pages/checklist/attachment-list-popup.d.ts +1 -0
  51. package/dist-client/pages/checklist/attachment-list-popup.js +250 -67
  52. package/dist-client/pages/checklist/attachment-list-popup.js.map +1 -1
  53. package/dist-client/pages/checklist/checklist-view.d.ts +7 -0
  54. package/dist-client/pages/checklist/checklist-view.js +363 -185
  55. package/dist-client/pages/checklist/checklist-view.js.map +1 -1
  56. package/dist-client/pages/checklist/comment-list-popup.js +14 -3
  57. package/dist-client/pages/checklist/comment-list-popup.js.map +1 -1
  58. package/dist-client/pages/checklist/file-preview-popup.js +0 -1
  59. package/dist-client/pages/checklist/file-preview-popup.js.map +1 -1
  60. package/dist-client/pages/checklist/inspection-info-popup.d.ts +50 -0
  61. package/dist-client/pages/checklist/inspection-info-popup.js +684 -0
  62. package/dist-client/pages/checklist/inspection-info-popup.js.map +1 -0
  63. package/dist-client/pages/checklist/inspection-tab-popup.d.ts +18 -0
  64. package/dist-client/pages/checklist/inspection-tab-popup.js +196 -0
  65. package/dist-client/pages/checklist/inspection-tab-popup.js.map +1 -0
  66. package/dist-client/pages/checklist-template/checklist-template-item.js +8 -3
  67. package/dist-client/pages/checklist-template/checklist-template-item.js.map +1 -1
  68. package/dist-client/pages/checklist-template/checklist-template-list.js +2 -2
  69. package/dist-client/pages/checklist-template/checklist-template-list.js.map +1 -1
  70. package/dist-client/route.d.ts +1 -1
  71. package/dist-client/route.js +3 -0
  72. package/dist-client/route.js.map +1 -1
  73. package/dist-client/stt/speech-to-text.d.ts +36 -0
  74. package/dist-client/stt/speech-to-text.js +89 -0
  75. package/dist-client/stt/speech-to-text.js.map +1 -0
  76. package/dist-client/stt/stt-utils.d.ts +28 -0
  77. package/dist-client/stt/stt-utils.js +146 -0
  78. package/dist-client/stt/stt-utils.js.map +1 -0
  79. package/dist-client/tsconfig.tsbuildinfo +1 -1
  80. package/dist-server/service/action-plan/index.d.ts +0 -1
  81. package/dist-server/service/action-plan/index.js +1 -2
  82. package/dist-server/service/action-plan/index.js.map +1 -1
  83. package/dist-server/service/building-inspection/building-inspection-history.d.ts +1 -0
  84. package/dist-server/service/building-inspection/building-inspection-history.js +5 -0
  85. package/dist-server/service/building-inspection/building-inspection-history.js.map +1 -1
  86. package/dist-server/service/building-inspection/building-inspection-mutation.d.ts +3 -3
  87. package/dist-server/service/building-inspection/building-inspection-mutation.js +145 -34
  88. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  89. package/dist-server/service/building-inspection/building-inspection-query.d.ts +3 -4
  90. package/dist-server/service/building-inspection/building-inspection-query.js +46 -30
  91. package/dist-server/service/building-inspection/building-inspection-query.js.map +1 -1
  92. package/dist-server/service/building-inspection/building-inspection-type.d.ts +28 -9
  93. package/dist-server/service/building-inspection/building-inspection-type.js +96 -17
  94. package/dist-server/service/building-inspection/building-inspection-type.js.map +1 -1
  95. package/dist-server/service/building-inspection/building-inspection.d.ts +13 -0
  96. package/dist-server/service/building-inspection/building-inspection.js +55 -2
  97. package/dist-server/service/building-inspection/building-inspection.js.map +1 -1
  98. package/dist-server/service/building-inspection/index.d.ts +5 -8
  99. package/dist-server/service/building-inspection/index.js +11 -6
  100. package/dist-server/service/building-inspection/index.js.map +1 -1
  101. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.d.ts +6 -0
  102. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +56 -0
  103. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -0
  104. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.d.ts +16 -0
  105. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js +171 -0
  106. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js.map +1 -0
  107. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.d.ts +23 -0
  108. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js +90 -0
  109. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js.map +1 -0
  110. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.d.ts +33 -0
  111. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js +132 -0
  112. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js.map +1 -0
  113. package/dist-server/service/building-inspection-daily-worklog/index.d.ts +5 -0
  114. package/dist-server/service/building-inspection-daily-worklog/index.js +9 -0
  115. package/dist-server/service/building-inspection-daily-worklog/index.js.map +1 -0
  116. package/dist-server/service/building-inspection-history/building-inspection-history-query.d.ts +16 -0
  117. package/dist-server/service/building-inspection-history/building-inspection-history-query.js +120 -0
  118. package/dist-server/service/building-inspection-history/building-inspection-history-query.js.map +1 -0
  119. package/dist-server/service/building-inspection-history/building-inspection-history-type.d.ts +5 -0
  120. package/dist-server/service/building-inspection-history/building-inspection-history-type.js +21 -0
  121. package/dist-server/service/building-inspection-history/building-inspection-history-type.js.map +1 -0
  122. package/dist-server/service/building-inspection-history/building-inspection-history.d.ts +34 -0
  123. package/dist-server/service/building-inspection-history/building-inspection-history.js +157 -0
  124. package/dist-server/service/building-inspection-history/building-inspection-history.js.map +1 -0
  125. package/dist-server/service/{building-inspection → building-inspection-history}/event-subscriber.d.ts +1 -1
  126. package/dist-server/service/{building-inspection → building-inspection-history}/event-subscriber.js +1 -1
  127. package/dist-server/service/building-inspection-history/event-subscriber.js.map +1 -0
  128. package/dist-server/service/building-inspection-history/index.d.ts +6 -0
  129. package/dist-server/service/building-inspection-history/index.js +10 -0
  130. package/dist-server/service/building-inspection-history/index.js.map +1 -0
  131. package/dist-server/service/checklist/checklist-history.d.ts +8 -0
  132. package/dist-server/service/checklist/checklist-history.js +36 -0
  133. package/dist-server/service/checklist/checklist-history.js.map +1 -1
  134. package/dist-server/service/checklist/checklist-mutation.d.ts +0 -5
  135. package/dist-server/service/checklist/checklist-mutation.js +1 -67
  136. package/dist-server/service/checklist/checklist-mutation.js.map +1 -1
  137. package/dist-server/service/checklist/checklist-query.d.ts +6 -0
  138. package/dist-server/service/checklist/checklist-query.js +63 -0
  139. package/dist-server/service/checklist/checklist-query.js.map +1 -1
  140. package/dist-server/service/checklist/checklist-type.d.ts +0 -13
  141. package/dist-server/service/checklist/checklist-type.js +1 -49
  142. package/dist-server/service/checklist/checklist-type.js.map +1 -1
  143. package/dist-server/service/checklist/checklist.d.ts +38 -3
  144. package/dist-server/service/checklist/checklist.js +131 -15
  145. package/dist-server/service/checklist/checklist.js.map +1 -1
  146. package/dist-server/service/checklist/event-subscriber.d.ts +2 -2
  147. package/dist-server/service/checklist/event-subscriber.js +2 -2
  148. package/dist-server/service/checklist/event-subscriber.js.map +1 -1
  149. package/dist-server/service/checklist/index.d.ts +1 -4
  150. package/dist-server/service/checklist/index.js +2 -5
  151. package/dist-server/service/checklist/index.js.map +1 -1
  152. package/dist-server/service/checklist-history/checklist-history-query.d.ts +11 -0
  153. package/dist-server/service/checklist-history/checklist-history-query.js +77 -0
  154. package/dist-server/service/checklist-history/checklist-history-query.js.map +1 -0
  155. package/dist-server/service/checklist-history/checklist-history-type.d.ts +5 -0
  156. package/dist-server/service/checklist-history/checklist-history-type.js +21 -0
  157. package/dist-server/service/checklist-history/checklist-history-type.js.map +1 -0
  158. package/dist-server/service/checklist-history/checklist-history.d.ts +50 -0
  159. package/dist-server/service/checklist-history/checklist-history.js +239 -0
  160. package/dist-server/service/checklist-history/checklist-history.js.map +1 -0
  161. package/dist-server/service/checklist-history/event-subscriber.d.ts +7 -0
  162. package/dist-server/service/checklist-history/event-subscriber.js +21 -0
  163. package/dist-server/service/checklist-history/event-subscriber.js.map +1 -0
  164. package/dist-server/service/checklist-history/index.d.ts +6 -0
  165. package/dist-server/service/checklist-history/index.js +10 -0
  166. package/dist-server/service/checklist-history/index.js.map +1 -0
  167. package/dist-server/service/checklist-item/checklist-item-query.d.ts +1 -1
  168. package/dist-server/service/checklist-item/checklist-item-query.js +5 -3
  169. package/dist-server/service/checklist-item/checklist-item-query.js.map +1 -1
  170. package/dist-server/service/checklist-item/index.d.ts +0 -1
  171. package/dist-server/service/checklist-item/index.js +1 -2
  172. package/dist-server/service/checklist-item/index.js.map +1 -1
  173. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.d.ts +1 -0
  174. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js +33 -6
  175. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js.map +1 -1
  176. package/dist-server/service/checklist-item-comment/index.d.ts +0 -2
  177. package/dist-server/service/checklist-item-comment/index.js +1 -3
  178. package/dist-server/service/checklist-item-comment/index.js.map +1 -1
  179. package/dist-server/service/checklist-item-history/checklist-item-history-query.d.ts +16 -0
  180. package/dist-server/service/checklist-item-history/checklist-item-history-query.js +123 -0
  181. package/dist-server/service/checklist-item-history/checklist-item-history-query.js.map +1 -0
  182. package/dist-server/service/checklist-item-history/checklist-item-history-type.d.ts +5 -0
  183. package/dist-server/service/checklist-item-history/checklist-item-history-type.js +21 -0
  184. package/dist-server/service/checklist-item-history/checklist-item-history-type.js.map +1 -0
  185. package/dist-server/service/checklist-item-history/checklist-item-history.d.ts +25 -0
  186. package/dist-server/service/checklist-item-history/checklist-item-history.js +123 -0
  187. package/dist-server/service/checklist-item-history/checklist-item-history.js.map +1 -0
  188. package/dist-server/service/checklist-item-history/event-subscriber.d.ts +7 -0
  189. package/dist-server/service/checklist-item-history/event-subscriber.js +21 -0
  190. package/dist-server/service/checklist-item-history/event-subscriber.js.map +1 -0
  191. package/dist-server/service/checklist-item-history/index.d.ts +6 -0
  192. package/dist-server/service/checklist-item-history/index.js +10 -0
  193. package/dist-server/service/checklist-item-history/index.js.map +1 -0
  194. package/dist-server/service/checklist-template-item/checklist-template-item.js +2 -4
  195. package/dist-server/service/checklist-template-item/checklist-template-item.js.map +1 -1
  196. package/dist-server/service/index.d.ts +4 -2
  197. package/dist-server/service/index.js +22 -13
  198. package/dist-server/service/index.js.map +1 -1
  199. package/dist-server/service/issue/index.d.ts +0 -1
  200. package/dist-server/service/issue/index.js +1 -2
  201. package/dist-server/service/issue/index.js.map +1 -1
  202. package/dist-server/service/project-report/index.d.ts +0 -1
  203. package/dist-server/service/project-report/index.js +1 -2
  204. package/dist-server/service/project-report/index.js.map +1 -1
  205. package/dist-server/service/project-report/project-report.d.ts +0 -2
  206. package/dist-server/service/project-report/project-report.js +0 -6
  207. package/dist-server/service/project-report/project-report.js.map +1 -1
  208. package/dist-server/service/supervisor/index.d.ts +0 -1
  209. package/dist-server/service/supervisor/index.js +1 -2
  210. package/dist-server/service/supervisor/index.js.map +1 -1
  211. package/dist-server/tsconfig.tsbuildinfo +1 -1
  212. package/package.json +13 -13
  213. package/things-factory.config.js +3 -1
  214. package/dist-server/service/building-inspection/event-subscriber.js.map +0 -1
  215. package/dist-server/service/checklist-item-comment/event-subscriber.d.ts +0 -7
  216. package/dist-server/service/checklist-item-comment/event-subscriber.js +0 -21
  217. package/dist-server/service/checklist-item-comment/event-subscriber.js.map +0 -1
@@ -0,0 +1,1132 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/icon/icon.js';
3
+ import '@material/web/button/elevated-button.js';
4
+ import '@material/web/textfield/outlined-text-field.js';
5
+ import '@material/web/button/outlined-button.js';
6
+ import { PageView } from '@operato/shell';
7
+ import { css, html } from 'lit';
8
+ import { customElement, state, query } from 'lit/decorators.js';
9
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
10
+ import { client } from '@operato/graphql';
11
+ import gql from 'graphql-tag';
12
+ import { notify, openPopup } from '@operato/layout';
13
+ import './component/notice-comment-popup';
14
+ import './component/grid-inspection-create-popup';
15
+ import { BUILDING_INSPECTION_STATUS_DISPLAY, BuildingInspectionStatus } from '../building-inspection/building-inspection-list';
16
+ import '../checklist/inspection-tab-popup';
17
+ import { verifyBiometric } from '@things-factory/auth-base/dist-client';
18
+ import { OxPrompt } from '@operato/popup';
19
+ import './component/plan-preview-popup';
20
+ import './component/grid-inspection-list-layer';
21
+ let BuildingInspectionGridDetail = class BuildingInspectionGridDetail extends ScopedElementsMixin(PageView) {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.defaultProject = {
25
+ name: '',
26
+ buildingComplex: {
27
+ buildings: []
28
+ }
29
+ };
30
+ this.project = Object.assign({}, this.defaultProject);
31
+ this.buildingInspections = [];
32
+ this.cellToInspections = {};
33
+ this.buildingInspectionSummaryOfProject = {};
34
+ this.buildingInspectionSummaryOfBuildingLevel = {};
35
+ this.selectedBuilding = {};
36
+ this.selectedLevel = {};
37
+ this.selectedInspection = {};
38
+ this.cell = '';
39
+ this.listLayer = { open: false, cell: '', items: [] };
40
+ }
41
+ get context() {
42
+ return {
43
+ title: '층별 시공검측 상세 정보'
44
+ };
45
+ }
46
+ render() {
47
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
48
+ // 그리드 가로, 세로 길이 배열 생성
49
+ const planXScale = Array.from({ length: ((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.planXScale) || 0 }, (_, i) => i);
50
+ const planYScale = Array.from({ length: ((_d = (_c = this.project) === null || _c === void 0 ? void 0 : _c.buildingComplex) === null || _d === void 0 ? void 0 : _d.planYScale) || 0 }, (_, i) => i);
51
+ return html `
52
+ <div header>
53
+ <h2>
54
+ <md-icon slot="icon" back @click=${() => history.back()}>arrow_back</md-icon>
55
+ ${this.project.name} ${(_e = this.selectedBuilding) === null || _e === void 0 ? void 0 : _e.name} ${(_f = this.selectedLevel) === null || _f === void 0 ? void 0 : _f.floorDisplayName}층
56
+ </h2>
57
+ <div button-container>
58
+ <md-elevated-button href=${`project-update/${this.project.id}`}>
59
+ <md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
60
+ </md-elevated-button>
61
+ <md-elevated-button href=${`project-plan-management/${this.project.id}`}>
62
+ <md-icon slot="icon">description</md-icon>도면 관리
63
+ </md-elevated-button>
64
+ <md-elevated-button @click=${this._openPlanPreviewPopup}>
65
+ <md-icon slot="icon">folder_eye</md-icon>추가 도면 보기
66
+ </md-elevated-button>
67
+ </div>
68
+ </div>
69
+
70
+ <div body>
71
+ <div left>
72
+ <div select>
73
+ <div>
74
+ <md-filled-select building @change=${this._onSelectBuilding}>
75
+ ${(_j = (_h = (_g = this.project) === null || _g === void 0 ? void 0 : _g.buildingComplex) === null || _h === void 0 ? void 0 : _h.buildings) === null || _j === void 0 ? void 0 : _j.map(building => {
76
+ var _a;
77
+ const selected = building.id === ((_a = this.selectedBuilding) === null || _a === void 0 ? void 0 : _a.id);
78
+ return html ` <md-select-option ?selected=${selected} .value=${building.id}>
79
+ <div slot="headline">${building.name}</div>
80
+ </md-select-option>`;
81
+ })}
82
+ </md-filled-select>
83
+
84
+ <md-filled-select level @change=${this._onSelectBuildingLevel}>
85
+ ${(_l = (_k = this.selectedBuilding) === null || _k === void 0 ? void 0 : _k.buildingLevels) === null || _l === void 0 ? void 0 : _l.map(level => {
86
+ const selected = level.id === this.selectedLevel.id;
87
+ return html `<md-select-option ?selected=${selected} .value=${level.id}>
88
+ <div slot="headline">${level.floor}</div>
89
+ </md-select-option>`;
90
+ })}
91
+ </md-filled-select>
92
+ </div>
93
+
94
+ <div state>
95
+ <span>
96
+ <md-icon request slot="icon">frame_inspect</md-icon> 검측대기
97
+ <span bold>${this.buildingInspectionSummaryOfProject[BuildingInspectionStatus.WAIT.toLowerCase()]}</span>
98
+ </span>
99
+ <span>
100
+ <md-icon request slot="icon">exclamation</md-icon> 검측요청
101
+ <span bold>${this.buildingInspectionSummaryOfProject[BuildingInspectionStatus.REQUEST.toLowerCase()]}</span>
102
+ </span>
103
+ <span>
104
+ <md-icon pass slot="icon">check</md-icon> 합격
105
+ <span bold>${this.buildingInspectionSummaryOfProject[BuildingInspectionStatus.PASS.toLowerCase()]}</span>
106
+ </span>
107
+ <span>
108
+ <md-icon fail slot="icon">close</md-icon> 불합격
109
+ <span bold>${this.buildingInspectionSummaryOfProject[BuildingInspectionStatus.FAIL.toLowerCase()]}</span>
110
+ </span>
111
+ </div>
112
+ </div>
113
+
114
+ <div drawing>
115
+ <img src=${((_m = this.selectedLevel) === null || _m === void 0 ? void 0 : _m.mainDrawingImage) || '/assets/images/img-drawing-default.png'} />
116
+
117
+ <div grid>
118
+ ${planXScale.map(v => html ` <div row=${v}>
119
+ ${planYScale.map(vv => {
120
+ const cellKey = `${v},${vv}`;
121
+ const inspections = this.cellToInspections[cellKey] || [];
122
+ const count = inspections.length;
123
+ let countClass = '';
124
+ if (count > 0) {
125
+ const allPass = inspections.every(i => i.status === BuildingInspectionStatus.PASS);
126
+ const anyFail = inspections.some(i => i.status === BuildingInspectionStatus.FAIL);
127
+ countClass = allPass ? 'green' : anyFail ? 'red' : 'black';
128
+ }
129
+ return html `<div column=${vv} cell=${cellKey} @click=${this._onClickGrid}>
130
+ ${count > 0 ? html `<span class="cell-count ${countClass}">${count}</span>` : ''}
131
+ </div>`;
132
+ })}
133
+ </div>`)}
134
+ </div>
135
+ ${this.listLayer.open
136
+ ? html `<grid-inspection-list-layer
137
+ .items=${this.listLayer.items}
138
+ .anchorEl=${this._getCellElement(this.listLayer.cell)}
139
+ .containerEl=${this.drawingContainer}
140
+ @select=${this._onSelectListItem}
141
+ @close=${this._closeListLayer}
142
+ ></grid-inspection-list-layer>`
143
+ : ''}
144
+ </div>
145
+ </div>
146
+
147
+ <div right>
148
+ <div top bold>
149
+ <div>신규 등록 현황</div>
150
+ <div content>
151
+ <span>
152
+ <md-icon request slot="icon">frame_inspect</md-icon>
153
+ ${this.buildingInspectionSummaryOfBuildingLevel[BuildingInspectionStatus.WAIT.toLowerCase()]}
154
+ </span>
155
+ <span>
156
+ <md-icon request slot="icon">exclamation</md-icon>
157
+ ${this.buildingInspectionSummaryOfBuildingLevel[BuildingInspectionStatus.REQUEST.toLowerCase()]}
158
+ </span>
159
+ <span>
160
+ <md-icon pass slot="icon">check</md-icon>
161
+ ${this.buildingInspectionSummaryOfBuildingLevel[BuildingInspectionStatus.PASS.toLowerCase()]}
162
+ </span>
163
+ <span>
164
+ <md-icon fail slot="icon">close</md-icon>
165
+ ${this.buildingInspectionSummaryOfBuildingLevel[BuildingInspectionStatus.FAIL.toLowerCase()]}
166
+ </span>
167
+ </div>
168
+ </div>
169
+
170
+ <div bottom>
171
+ <div name bold>층별 공지사항</div>
172
+ <md-elevated-button @click=${e => this._onClicPopupNotice()}>
173
+ 공지사항 확인하기(${((_o = this.selectedLevel) === null || _o === void 0 ? void 0 : _o.noticeCount) || 0})
174
+ </md-elevated-button>
175
+
176
+ <div name bold>시공검측 세부사항</div>
177
+ ${html `
178
+ <div view>
179
+ <div status>
180
+ ${this._getIconHtmlByStatus(this.selectedInspection.status)}
181
+ <span bold> ${BUILDING_INSPECTION_STATUS_DISPLAY[this.selectedInspection.status]}</span>
182
+ </div>
183
+
184
+ <div>
185
+ <div date>공종 : ${((_q = (_p = this.selectedInspection) === null || _p === void 0 ? void 0 : _p.checklist) === null || _q === void 0 ? void 0 : _q.constructionType) || ''}</div>
186
+ </div>
187
+
188
+ <hr />
189
+
190
+ <div>
191
+ <div date>세부 공종 : ${((_s = (_r = this.selectedInspection) === null || _r === void 0 ? void 0 : _r.checklist) === null || _s === void 0 ? void 0 : _s.constructionDetailType) || ''}</div>
192
+ </div>
193
+
194
+ <hr />
195
+
196
+ <div>
197
+ <div date>검측일 : ${this.selectedInspection.requestDate}</div>
198
+ </div>
199
+
200
+ <hr />
201
+
202
+ <div manager>
203
+ 담당자 : ${(_u = (_t = this.selectedInspection) === null || _t === void 0 ? void 0 : _t.manager) === null || _u === void 0 ? void 0 : _u.name} <br />
204
+ ${(_w = (_v = this.selectedInspection) === null || _v === void 0 ? void 0 : _v.manager) === null || _w === void 0 ? void 0 : _w.phone}
205
+ </div>
206
+
207
+ <hr />
208
+
209
+ ${this.selectedInspection.memo
210
+ ? html `
211
+ <div>
212
+ <div date>메모 : ${this.selectedInspection.memo}</div>
213
+ </div>
214
+ <hr />
215
+ `
216
+ : html ``}
217
+ ${((_x = this.selectedInspection.attachments) === null || _x === void 0 ? void 0 : _x.length) > 0
218
+ ? html `
219
+ <div class="attachment-info">
220
+ <span class="attachment-count">첨부파일: ${this.selectedInspection.attachments.length}개</span>
221
+ <md-elevated-button @click=${() => this._onClickUpdateInspection(1)}>
222
+ <md-icon slot="icon">attach_file</md-icon>첨부파일 보기
223
+ </md-elevated-button>
224
+ </div>
225
+ <hr />
226
+ `
227
+ : html ``}
228
+ </div>
229
+
230
+ <!-- 전층 동일 적용 버튼 -->
231
+ ${this.selectedInspection.status
232
+ ? html `<md-filled-button apply-to-all @click=${() => this._onClickApplyToAll()}>전층 동일 적용</md-filled-button>`
233
+ : html ``}
234
+
235
+ <!-- 검측 정보 등록, 수정 버튼 -->
236
+ ${!this.cell
237
+ ? html ``
238
+ : !this.selectedInspection.status
239
+ ? html `<md-outlined-button @click=${() => this._onClickCreateInspection()}>검측 정보 등록 </md-outlined-button>`
240
+ : this.selectedInspection.status == BuildingInspectionStatus.PASS
241
+ ? html `<md-filled-button @click=${() => this._onClickUpdateInspection()}>검측 정보 보기 </md-filled-button> `
242
+ : html `
243
+ <md-filled-button update @click=${() => this._onClickUpdateInspection()}>
244
+ 검측 정보 수정
245
+ </md-filled-button>
246
+ ${this.selectedInspection.status == BuildingInspectionStatus.WAIT
247
+ ? html `<md-filled-button delete @click=${() => this._onClickDeleteInspection()}>
248
+ 삭제
249
+ </md-filled-button>`
250
+ : html ``}
251
+ `}
252
+ `}
253
+ </div>
254
+ </div>
255
+ </div>
256
+ `;
257
+ }
258
+ async pageInitialized(lifecycle) { }
259
+ async pageUpdated(changes, lifecycle) {
260
+ if (this.active) {
261
+ const params = lifecycle.params;
262
+ await this.initProject(lifecycle.resourceId, params.buildingId, params.levelId);
263
+ }
264
+ }
265
+ async initProject(projectId = '', buildingId = '', levelId = '') {
266
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
267
+ const response = await client.query({
268
+ query: gql `
269
+ query Project(
270
+ $id: String!
271
+ $projectId: String!
272
+ $buildingLevelId: String!
273
+ $params: BuildingInspectionsOfBuildingLevel!
274
+ ) {
275
+ project(id: $id) {
276
+ id
277
+ name
278
+ projectType
279
+ buildingComplex {
280
+ id
281
+ planXScale
282
+ planYScale
283
+ overallConstructorEmails
284
+ taskConstructorEmails
285
+ overallSupervisoryEmails
286
+ taskSupervisoryEmails
287
+
288
+ buildings {
289
+ id
290
+ name
291
+ }
292
+ }
293
+ }
294
+
295
+ buildingInspectionSummaryOfProject(projectId: $projectId) {
296
+ wait
297
+ request
298
+ pass
299
+ fail
300
+ }
301
+
302
+ buildingInspectionSummaryOfBuildingLevel(buildingLevelId: $buildingLevelId) {
303
+ wait
304
+ request
305
+ pass
306
+ fail
307
+ }
308
+
309
+ buildingInspectionsOfBuildingLevel(params: $params) {
310
+ items {
311
+ id
312
+ cellX
313
+ cellY
314
+ status
315
+ requestDate
316
+ checklist {
317
+ constructionType
318
+ constructionDetailType
319
+ }
320
+ creator {
321
+ id
322
+ name
323
+ }
324
+ }
325
+ }
326
+ }
327
+ `,
328
+ variables: {
329
+ id: projectId,
330
+ projectId: projectId,
331
+ buildingLevelId: levelId,
332
+ params: { buildingLevelId: levelId }
333
+ }
334
+ });
335
+ if (response.errors)
336
+ return;
337
+ this.project = (_a = response.data) === null || _a === void 0 ? void 0 : _a.project;
338
+ this.buildingInspections = (_c = (_b = response.data) === null || _b === void 0 ? void 0 : _b.buildingInspectionsOfBuildingLevel) === null || _c === void 0 ? void 0 : _c.items;
339
+ this._groupInspectionsByCell();
340
+ this.buildingInspectionSummaryOfProject = (_d = response.data) === null || _d === void 0 ? void 0 : _d.buildingInspectionSummaryOfProject;
341
+ this.buildingInspectionSummaryOfBuildingLevel = (_e = response.data) === null || _e === void 0 ? void 0 : _e.buildingInspectionSummaryOfBuildingLevel;
342
+ // buildingId 파라미터가 있으면 선택된 빌딩, 없으면 첫번째 빌딩 선택
343
+ this.selectedBuilding = buildingId
344
+ ? (_h = (_g = (_f = this.project) === null || _f === void 0 ? void 0 : _f.buildingComplex) === null || _g === void 0 ? void 0 : _g.buildings) === null || _h === void 0 ? void 0 : _h.filter(v => v.id === buildingId)[0]
345
+ : (_l = (_k = (_j = this.project) === null || _j === void 0 ? void 0 : _j.buildingComplex) === null || _k === void 0 ? void 0 : _k.buildings) === null || _l === void 0 ? void 0 : _l[0];
346
+ // 선택된 동의 층 리스트 가져오기
347
+ this.selectedBuilding = await this._getBuilding(this.selectedBuilding.id);
348
+ // levelId 파라미터가 있으면 선택된 층, 없으면 첫번째 층 선택
349
+ this.selectedLevel = levelId
350
+ ? (_o = (_m = this.selectedBuilding) === null || _m === void 0 ? void 0 : _m.buildingLevels) === null || _o === void 0 ? void 0 : _o.filter(v => v.id === levelId)[0]
351
+ : (_q = (_p = this.selectedBuilding) === null || _p === void 0 ? void 0 : _p.buildingLevels) === null || _q === void 0 ? void 0 : _q[0];
352
+ // 동, 층이 랜더링 된 후에 select를 위해 이 시점에서 랜더링
353
+ this.selectedBuilding = await Object.assign({}, this.selectedBuilding);
354
+ // 기본 값 셋팅 select
355
+ await this.htmlSelectBuilding.select(this.selectedBuilding.id);
356
+ await this.htmlSelectLevel.select(this.selectedLevel.id);
357
+ }
358
+ async _getBuilding(buildingId = '') {
359
+ var _a;
360
+ const response = await client.query({
361
+ query: gql `
362
+ query Building($id: String!) {
363
+ building(id: $id) {
364
+ id
365
+ name
366
+ buildingLevels {
367
+ id
368
+ floor
369
+ floorDisplayName
370
+ noticeCount
371
+ mainDrawing {
372
+ id
373
+ name
374
+ fullpath
375
+ }
376
+ mainDrawingImage
377
+ }
378
+ }
379
+ }
380
+ `,
381
+ variables: {
382
+ id: buildingId
383
+ }
384
+ });
385
+ if (response.errors)
386
+ return;
387
+ return ((_a = response.data) === null || _a === void 0 ? void 0 : _a.building) || {};
388
+ }
389
+ async _getBuildingInspection(buildingInspectionId = '') {
390
+ var _a;
391
+ const response = await client.query({
392
+ query: gql `
393
+ query BuildingInspection($id: String!) {
394
+ buildingInspection(id: $id) {
395
+ id
396
+ cellX
397
+ cellY
398
+ status
399
+ requestDate
400
+ memo
401
+ attachments {
402
+ id
403
+ }
404
+
405
+ checklist {
406
+ id
407
+ name
408
+ constructionType
409
+ constructionDetailType
410
+ location
411
+ inspectionParts
412
+ documentNo
413
+ constructionInspectionDate
414
+ supervisorInspectionDate
415
+ overallConstructorSignature
416
+ taskConstructorSignature
417
+ overallSupervisorySignature
418
+ taskSupervisorySignature
419
+
420
+ checklistItems {
421
+ id
422
+ name
423
+ sequence
424
+ mainType
425
+ detailType
426
+ inspctionCriteria
427
+ constructionConfirmStatus
428
+ supervisoryConfirmStatus
429
+ checklistItemCommentCount
430
+ checklistItemAttachmentCount
431
+ }
432
+ }
433
+
434
+ manager {
435
+ userId
436
+ name
437
+ }
438
+ }
439
+ }
440
+ `,
441
+ variables: {
442
+ id: buildingInspectionId
443
+ }
444
+ });
445
+ if (response.errors)
446
+ return;
447
+ return ((_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspection) || {};
448
+ }
449
+ async _onSelectBuilding(e) {
450
+ var _a, _b;
451
+ const buildingId = e.target.value;
452
+ this.selectedBuilding = await this._getBuilding(buildingId);
453
+ this.selectedLevel = Object.assign({}, (_b = (_a = this.selectedBuilding) === null || _a === void 0 ? void 0 : _a.buildingLevels) === null || _b === void 0 ? void 0 : _b[0]);
454
+ this.refresh();
455
+ }
456
+ _onSelectBuildingLevel(e) {
457
+ var _a, _b, _c;
458
+ // SELECT event는 target, 팝업 Close는 detail
459
+ const buildingLevelId = ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value) || e.detail.buildingLevelId;
460
+ this.selectedLevel = Object.assign({}, (((_c = (_b = this.selectedBuilding) === null || _b === void 0 ? void 0 : _b.buildingLevels) === null || _c === void 0 ? void 0 : _c.find(v => v.id == buildingLevelId)) || {}));
461
+ this.refresh();
462
+ }
463
+ async _onClickGrid(e) {
464
+ var _a;
465
+ const target = e.currentTarget;
466
+ const cell = target.getAttribute('cell');
467
+ // active 속성 모두 제거후 클릭한 셀만 active로 변경
468
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('div[cell][active]').forEach(el => el.removeAttribute('active'));
469
+ target.setAttribute('active', 'true');
470
+ const [cellX, cellY] = (cell || '').split(',');
471
+ const items = this.cellToInspections[cell || ''] || [];
472
+ // 검측이 없으면 기존처럼 등록 가능하도록 선택만 처리
473
+ if (items.length === 0) {
474
+ this._closeListLayer();
475
+ this.selectedInspection = { cellX, cellY };
476
+ this.cell = cell || '';
477
+ return;
478
+ }
479
+ // 검측이 있으면 레이어 오픈
480
+ this.cell = cell || '';
481
+ this._openListLayer(target, items, this.cell);
482
+ }
483
+ _onClicPopupNotice() {
484
+ var _a, _b;
485
+ openPopup(html `<notice-comment-popup
486
+ .buildingLevelId=${this.selectedLevel.id}
487
+ .title=${`${(_a = this.selectedBuilding) === null || _a === void 0 ? void 0 : _a.name} ${(_b = this.selectedLevel) === null || _b === void 0 ? void 0 : _b.floor}층 공지사항`}
488
+ @change-comment=${(e) => {
489
+ if (e.detail.type === 'create') {
490
+ this.selectedLevel.noticeCount++; // 코멘트 카운트 + 1
491
+ }
492
+ else if (e.detail.type === 'delete') {
493
+ this.selectedLevel.noticeCount--; // 코멘트 카운트 - 1
494
+ }
495
+ this.requestUpdate();
496
+ }}
497
+ ></notice-comment-popup>`, { backdrop: true, size: 'medium', title: '층별 공지사항' });
498
+ }
499
+ _onClickCreateInspection() {
500
+ if (!this.cell) {
501
+ notify({ message: '셀을 선택해주세요.' });
502
+ return;
503
+ }
504
+ openPopup(html `
505
+ <grid-inspection-create-popup
506
+ .projectId=${this.project.id}
507
+ .selectedBuildingId=${this.selectedBuilding.id}
508
+ .selectedBuildingLevelId=${this.selectedLevel.id}
509
+ .cell=${this.cell}
510
+ @requestRefresh=${async (e) => {
511
+ await this.refresh(e.detail.buildingInspectionId);
512
+ }}
513
+ ></grid-inspection-create-popup>
514
+ `, { backdrop: true, size: 'large', title: '검측 요청서 등록' });
515
+ }
516
+ _onClickUpdateInspection(initialTab = 0) {
517
+ openPopup(html `
518
+ <inspection-tab-popup
519
+ .selectedInspection=${this.selectedInspection}
520
+ .project=${this.project}
521
+ .initialTab=${initialTab}
522
+ @modify-checklist=${(e) => this.validateChecklist(e.detail.checklist)}
523
+ @requestRefresh=${async (e) => {
524
+ await this.refresh(e.detail.buildingInspectionId);
525
+ }}
526
+ ></inspection-tab-popup>
527
+ `, { backdrop: true, size: 'large', title: '검측 요청서 수정' });
528
+ }
529
+ async refresh(buildingInspectionId = '') {
530
+ // 그리드, 서머리 정보 갱신
531
+ await this.initProject(this.project.id, this.selectedBuilding.id, this.selectedLevel.id);
532
+ // 선택된 검측 정보 갱신
533
+ this.selectedInspection = buildingInspectionId ? await this._getBuildingInspection(buildingInspectionId) : {};
534
+ }
535
+ _getIconHtmlByStatus(status) {
536
+ if (!status)
537
+ return '';
538
+ if (status == BuildingInspectionStatus.WAIT || status == BuildingInspectionStatus.OVERALL_WAIT) {
539
+ return html `<md-icon request slot="icon">frame_inspect</md-icon>`;
540
+ }
541
+ if (status == BuildingInspectionStatus.REQUEST || status == BuildingInspectionStatus.OVERALL_REQUEST) {
542
+ return html `<md-icon request slot="icon">exclamation</md-icon>`;
543
+ }
544
+ if (status == BuildingInspectionStatus.PASS) {
545
+ return html `<md-icon pass slot="icon">check</md-icon>`;
546
+ }
547
+ return html `<md-icon fail slot="icon">close</md-icon>`;
548
+ }
549
+ _groupInspectionsByCell() {
550
+ const map = {};
551
+ for (const item of this.buildingInspections || []) {
552
+ const key = `${item.cellX},${item.cellY}`;
553
+ if (!map[key])
554
+ map[key] = [];
555
+ map[key].push(item);
556
+ }
557
+ this.cellToInspections = map;
558
+ }
559
+ _openListLayer(anchorEl, items, cell) {
560
+ this.listLayer = { open: true, cell, items };
561
+ }
562
+ _closeListLayer() {
563
+ if (!this.listLayer.open)
564
+ return;
565
+ this.listLayer = { open: false, cell: '', items: [] };
566
+ }
567
+ async _onSelectListItem(e) {
568
+ var _a;
569
+ const id = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.id;
570
+ if (!id)
571
+ return;
572
+ const inspection = await this._getBuildingInspection(id);
573
+ this.selectedInspection = inspection;
574
+ this._closeListLayer();
575
+ }
576
+ _getCellElement(cell) {
577
+ var _a;
578
+ if (!cell)
579
+ return null;
580
+ return (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`div[cell='${cell}']`);
581
+ }
582
+ async validateChecklist(checklist) {
583
+ var _a, _b;
584
+ try {
585
+ const result = await verifyBiometric();
586
+ if (result.verified) {
587
+ console.log('Verification successful. Proceeding with sensitive action.');
588
+ }
589
+ else {
590
+ notify({ message: 'Verification failed:' + result.message });
591
+ return;
592
+ }
593
+ }
594
+ catch (error) {
595
+ notify({ message: 'Error during biometric verification:' + error });
596
+ return;
597
+ }
598
+ const response = await client.mutate({
599
+ mutation: gql `
600
+ mutation UpdateBuildingInspectionChecklist($buildingInspection: UpdateBuildingInspectionSubmitType!) {
601
+ updateBuildingInspectionChecklist(buildingInspection: $buildingInspection)
602
+ }
603
+ `,
604
+ variables: {
605
+ buildingInspection: {
606
+ id: this.selectedInspection.id,
607
+ checklist: {
608
+ id: checklist.id,
609
+ overallConstructorSignature: checklist.overallConstructorSignature,
610
+ taskConstructorSignature: checklist.taskConstructorSignature,
611
+ overallSupervisorySignature: checklist.overallSupervisorySignature,
612
+ taskSupervisorySignature: checklist.taskSupervisorySignature
613
+ },
614
+ checklistItem: checklist.checklistItems.map(item => ({
615
+ id: item.id,
616
+ constructionConfirmStatus: item.constructionConfirmStatus,
617
+ supervisoryConfirmStatus: item.supervisoryConfirmStatus
618
+ }))
619
+ }
620
+ }
621
+ });
622
+ if (!response.errors) {
623
+ notify({ message: '검측 요청서를 등록하였습니다.' });
624
+ this.refresh(this.selectedInspection.id);
625
+ history.back();
626
+ }
627
+ else {
628
+ notify({ message: ((_b = (_a = response.errors) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) || '검측 요청서 등록에 실패하였습니다.', level: 'error' });
629
+ }
630
+ }
631
+ async _onClickApplyToAll() {
632
+ var _a, _b;
633
+ if ((await OxPrompt.open({
634
+ title: '전층 동일 적용',
635
+ text: '해당 검측을 전층에 동일하게 적용 하시겠습니까?',
636
+ confirmButton: { text: '확인' },
637
+ cancelButton: { text: '취소' }
638
+ })) === false) {
639
+ return;
640
+ }
641
+ const response = await client.mutate({
642
+ mutation: gql `
643
+ mutation ApplyToAllBuildingInspection($buildingInspectionId: String!) {
644
+ applyToAllBuildingInspection(buildingInspectionId: $buildingInspectionId)
645
+ }
646
+ `,
647
+ variables: {
648
+ buildingInspectionId: this.selectedInspection.id
649
+ }
650
+ });
651
+ if (!response.errors) {
652
+ notify({ message: '전층 동일 적용 완료' });
653
+ this.refresh(this.selectedInspection.id);
654
+ }
655
+ else {
656
+ notify({ message: ((_b = (_a = response.errors) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) || '전층 동일 적용에 실패하였습니다.', level: 'error' });
657
+ }
658
+ }
659
+ _openPlanPreviewPopup() {
660
+ openPopup(html `<plan-preview-popup .buildingLevelId=${this.selectedLevel.id}></plan-preview-popup>`, {
661
+ backdrop: true,
662
+ size: 'large',
663
+ title: '추가 도면 보기'
664
+ });
665
+ }
666
+ async _onClickDeleteInspection() {
667
+ var _a, _b, _c;
668
+ if (!((_a = this.selectedInspection) === null || _a === void 0 ? void 0 : _a.id)) {
669
+ notify({ message: '삭제할 검측을 선택해주세요.', level: 'info' });
670
+ return;
671
+ }
672
+ const confirmed = await OxPrompt.open({
673
+ title: '검측 삭제',
674
+ text: '해당 검측을 삭제하시겠습니까? 삭제 후 되돌릴 수 없습니다.',
675
+ confirmButton: { text: '삭제' },
676
+ cancelButton: { text: '취소' }
677
+ });
678
+ if (confirmed === false)
679
+ return;
680
+ const response = await client.mutate({
681
+ mutation: gql `
682
+ mutation ($ids: [String!]!) {
683
+ deleteBuildingInspections(ids: $ids)
684
+ }
685
+ `,
686
+ variables: {
687
+ ids: [this.selectedInspection.id]
688
+ }
689
+ });
690
+ if (!response.errors) {
691
+ notify({ message: '삭제되었습니다.' });
692
+ this.selectedInspection = {};
693
+ await this.refresh();
694
+ }
695
+ else {
696
+ notify({ message: ((_c = (_b = response.errors) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.message) || '삭제에 실패하였습니다.', level: 'error' });
697
+ }
698
+ }
699
+ };
700
+ BuildingInspectionGridDetail.styles = [
701
+ css `
702
+ :host {
703
+ display: grid;
704
+ grid-template-rows: 75px auto;
705
+ color: #4e5055;
706
+
707
+ width: 100%;
708
+ background-color: #f7f7f7;
709
+ overflow-y: auto;
710
+
711
+ --grid-record-emphasized-background-color: red;
712
+ --grid-record-emphasized-color: yellow;
713
+ }
714
+
715
+ md-filled-button {
716
+ --md-filled-button-container-color: #0595e5;
717
+ --md-filled-button-container-height: 30px;
718
+ --md-filled-button-trailing-space: 15px;
719
+ --md-filled-button-leading-space: 15px;
720
+ }
721
+ md-filled-button[update] {
722
+ --md-filled-button-container-color: #42b382;
723
+ }
724
+ md-filled-button[apply-to-all] {
725
+ --md-filled-button-container-color: #aaa;
726
+ }
727
+ md-filled-button[delete] {
728
+ --md-filled-button-container-color: #ff4444;
729
+ }
730
+ md-outlined-button {
731
+ color: #586878;
732
+ font-weight: bold;
733
+ --md-outlined-button-label-text-size: 13px;
734
+ --md-outlined-button-container-height: 30px;
735
+ --md-outlined-button-trailing-space: 15px;
736
+ --md-outlined-button-leading-space: 15px;
737
+ }
738
+ md-filled-select {
739
+ width: auto;
740
+ min-width: 150px;
741
+ --md-filled-select-text-field-container-color: transparent;
742
+ --md-filled-select-text-field-active-indicator-color: #999;
743
+ --md-filled-select-text-field-input-text-size: 14px;
744
+ --md-filled-select-text-field-input-text-weight: bold;
745
+ --md-filled-select-text-field-input-text-line-height: 6px;
746
+ }
747
+ md-filled-select[level] {
748
+ min-width: 110px;
749
+ margin-left: 20px;
750
+ }
751
+
752
+ md-icon[request],
753
+ md-icon[pass],
754
+ md-icon[fail] {
755
+ width: 20px;
756
+ height: 20px;
757
+ margin-right: 4px;
758
+ border-radius: 5px;
759
+ font-size: 21px;
760
+ font-weight: 700;
761
+ color: #fff;
762
+ }
763
+ md-icon[request] {
764
+ background-color: #4e5055;
765
+ }
766
+ md-icon[pass] {
767
+ background-color: #4bbb4a;
768
+ }
769
+ md-icon[fail] {
770
+ background-color: #ff4444;
771
+ }
772
+
773
+ *[bold] {
774
+ font-weight: bold;
775
+ }
776
+
777
+ div[header] {
778
+ display: flex;
779
+ margin: 0px 20px;
780
+
781
+ h2 {
782
+ display: flex;
783
+ gap: 7px;
784
+ flex: 0.5;
785
+ color: #3f71a0;
786
+ font-size: 18px;
787
+
788
+ md-icon[back] {
789
+ background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);
790
+ color: white;
791
+ padding: 8px;
792
+ border-radius: 50%;
793
+ cursor: pointer;
794
+ box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);
795
+ width: 14px;
796
+ height: 14px;
797
+ --md-icon-size: 20px;
798
+ }
799
+
800
+ md-icon[back]:hover {
801
+ background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);
802
+ box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);
803
+ }
804
+ }
805
+
806
+ div[button-container] {
807
+ display: flex;
808
+ align-items: center;
809
+ justify-content: end;
810
+ flex: 0.5;
811
+
812
+ md-elevated-button {
813
+ margin: 0px 3px;
814
+
815
+ --md-elevated-button-container-height: 35px;
816
+ --md-elevated-button-label-text-size: 16px;
817
+ --md-elevated-button-container-color: #0595e5;
818
+
819
+ --md-elevated-button-label-text-color: #fff;
820
+ --md-elevated-button-hover-label-text-color: #fff;
821
+ --md-elevated-button-pressed-label-text-color: #fff;
822
+ --md-elevated-button-focus-label-text-color: #fff;
823
+ --md-elevated-button-icon-color: #fff;
824
+ --md-elevated-button-hover-icon-color: #fff;
825
+ --md-elevated-button-pressed-icon-color: #fff;
826
+ --md-elevated-button-focus-icon-color: #fff;
827
+ }
828
+ }
829
+ }
830
+
831
+ div[body] {
832
+ display: grid;
833
+ grid-template-columns: 1fr 200px;
834
+ margin: 0px 25px 25px 25px;
835
+ gap: 10px;
836
+ min-height: fit-content;
837
+
838
+ h3 {
839
+ color: #2e79be;
840
+ font-size: 18px;
841
+ margin: 0px;
842
+ }
843
+
844
+ & > div {
845
+ display: flex;
846
+ gap: 10px;
847
+ border-radius: 5px;
848
+ }
849
+
850
+ div[left] {
851
+ flex-direction: column;
852
+
853
+ div[select] {
854
+ display: flex;
855
+ align-items: center;
856
+ justify-content: space-between;
857
+ background-color: #2ea4df1a;
858
+ border: 1px solid #2ea4df33;
859
+ font-size: 18px;
860
+ padding: 7px 10px;
861
+ border-radius: 5px;
862
+ gap: 12px;
863
+
864
+ & > div[state] {
865
+ display: flex;
866
+ font-size: 15px;
867
+ margin-right: 12px;
868
+ gap: 10px;
869
+
870
+ & > span {
871
+ display: flex;
872
+ align-items: center;
873
+ margin-left: 15px;
874
+ gap: 2px;
875
+ }
876
+ }
877
+ }
878
+
879
+ div[drawing] {
880
+ width: 100%;
881
+ background-color: #ffffff;
882
+ border: 1px solid #cccccc;
883
+ border-radius: 5px;
884
+ position: relative;
885
+ }
886
+
887
+ img {
888
+ width: 100%;
889
+ background-size: contain;
890
+ }
891
+
892
+ div[grid] {
893
+ display: flex;
894
+ position: absolute;
895
+ width: 100%;
896
+ height: 100%;
897
+ top: 0;
898
+ left: 0;
899
+ border: 1px #ccc solid;
900
+ justify-content: space-between;
901
+
902
+ & > div[row] {
903
+ display: flex;
904
+ flex-direction: column;
905
+ justify-content: space-between;
906
+ flex: 1;
907
+
908
+ & > div[column] {
909
+ flex: 1;
910
+ border: dashed 1px #2ea4df99;
911
+ display: flex;
912
+ justify-content: center;
913
+ align-items: center;
914
+ position: relative;
915
+ }
916
+ }
917
+
918
+ div[row='1'] div[column] {
919
+ border-left: none !important;
920
+ }
921
+ div[row]:last-of-type div[column] {
922
+ border-right: none !important;
923
+ }
924
+ div[column='1'] {
925
+ border-top: none !important;
926
+ }
927
+ div[column]:last-of-type {
928
+ border-bottom: none !important;
929
+ }
930
+
931
+ div[cell] {
932
+ &[status='WAIT'],
933
+ &[status='REQUEST'],
934
+ &[status='OVERALL_WAIT'],
935
+ &[status='OVERALL_REQUEST'],
936
+ &[status='PASS'],
937
+ &[status='FAIL'] {
938
+ background-color: #2ea4df1a;
939
+ }
940
+
941
+ &[active] {
942
+ background-color: #2ea4df99;
943
+ }
944
+ }
945
+ }
946
+ }
947
+
948
+ div[right] {
949
+ flex-direction: column;
950
+ gap: 15px;
951
+
952
+ & > div {
953
+ background-color: #ffffff;
954
+ border: 1px solid #cccccc80;
955
+ padding: 11px 12px 15px 12px;
956
+ border-radius: 5px;
957
+ }
958
+
959
+ div[top] {
960
+ div[content] {
961
+ display: grid;
962
+ grid-template-columns: 1fr 1fr;
963
+ gap: 5px;
964
+ align-items: center;
965
+ margin-top: 8px;
966
+ justify-content: space-between;
967
+
968
+ span {
969
+ display: flex;
970
+ align-items: center;
971
+ min-width: 55px;
972
+ }
973
+ }
974
+ }
975
+
976
+ div[bottom] {
977
+ display: flex;
978
+ flex-direction: column;
979
+ flex: 1;
980
+ gap: 10px;
981
+
982
+ & > div {
983
+ display: flex;
984
+ flex-direction: column;
985
+ gap: 9px;
986
+
987
+ hr {
988
+ border: 1px #cccccc dashed;
989
+ width: 100%;
990
+ margin: 0;
991
+ }
992
+ }
993
+
994
+ div[view] {
995
+ flex: 1;
996
+
997
+ div[status] {
998
+ display: flex;
999
+ align-items: center;
1000
+ margin-bottom: 7px;
1001
+ }
1002
+
1003
+ div[date],
1004
+ div[manager] {
1005
+ font-size: 14px;
1006
+ }
1007
+ }
1008
+
1009
+ div[edit] {
1010
+ flex: 1;
1011
+ }
1012
+
1013
+ md-elevated-button {
1014
+ --md-elevated-button-container-color: #fafafa;
1015
+
1016
+ --md-elevated-button-label-text-color: #586878;
1017
+ --md-elevated-button-hover-label-text-color: #586878;
1018
+ --md-elevated-button-pressed-label-text-color: #586878;
1019
+ --md-elevated-button-focus-label-text-color: #586878;
1020
+ --md-elevated-button-icon-color: #586878;
1021
+ --md-elevated-button-hover-icon-color: #586878;
1022
+ --md-elevated-button-pressed-icon-color: #586878;
1023
+ --md-elevated-button-focus-icon-color: #586878;
1024
+ }
1025
+ }
1026
+ }
1027
+ }
1028
+
1029
+ .attachment-info {
1030
+ display: flex;
1031
+ align-items: center;
1032
+ justify-content: space-between;
1033
+ margin-bottom: 8px;
1034
+ gap: 5px;
1035
+ flex-direction: column;
1036
+ align-items: flex-start;
1037
+ }
1038
+
1039
+ .attachment-count {
1040
+ font-size: 14px;
1041
+ color: #586878;
1042
+ }
1043
+ .cell-count {
1044
+ position: absolute;
1045
+ top: 4px;
1046
+ right: 4px;
1047
+ display: flex;
1048
+ align-items: center;
1049
+ justify-content: center;
1050
+ justify-self: anchor-center;
1051
+ align-self: anchor-center;
1052
+ width: 22px;
1053
+ height: 22px;
1054
+ background: #ffffff;
1055
+ border: 2px solid #cccccc;
1056
+ border-radius: 50%;
1057
+ font-weight: 700;
1058
+ font-size: 13px;
1059
+ line-height: 1;
1060
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
1061
+ }
1062
+ .cell-count.green {
1063
+ color: #2e7d32;
1064
+ border-color: #4bbb4a;
1065
+ }
1066
+ .cell-count.red {
1067
+ color: #b71c1c;
1068
+ border-color: #ff4444;
1069
+ }
1070
+ .cell-count.black {
1071
+ color: #333333;
1072
+ border-color: #4e5055;
1073
+ }
1074
+ `
1075
+ ];
1076
+ __decorate([
1077
+ state(),
1078
+ __metadata("design:type", Object)
1079
+ ], BuildingInspectionGridDetail.prototype, "project", void 0);
1080
+ __decorate([
1081
+ state(),
1082
+ __metadata("design:type", Object)
1083
+ ], BuildingInspectionGridDetail.prototype, "buildingInspections", void 0);
1084
+ __decorate([
1085
+ state(),
1086
+ __metadata("design:type", Object)
1087
+ ], BuildingInspectionGridDetail.prototype, "cellToInspections", void 0);
1088
+ __decorate([
1089
+ state(),
1090
+ __metadata("design:type", Object)
1091
+ ], BuildingInspectionGridDetail.prototype, "buildingInspectionSummaryOfProject", void 0);
1092
+ __decorate([
1093
+ state(),
1094
+ __metadata("design:type", Object)
1095
+ ], BuildingInspectionGridDetail.prototype, "buildingInspectionSummaryOfBuildingLevel", void 0);
1096
+ __decorate([
1097
+ state(),
1098
+ __metadata("design:type", Object)
1099
+ ], BuildingInspectionGridDetail.prototype, "selectedBuilding", void 0);
1100
+ __decorate([
1101
+ state(),
1102
+ __metadata("design:type", Object)
1103
+ ], BuildingInspectionGridDetail.prototype, "selectedLevel", void 0);
1104
+ __decorate([
1105
+ state(),
1106
+ __metadata("design:type", Object)
1107
+ ], BuildingInspectionGridDetail.prototype, "selectedInspection", void 0);
1108
+ __decorate([
1109
+ state(),
1110
+ __metadata("design:type", String)
1111
+ ], BuildingInspectionGridDetail.prototype, "cell", void 0);
1112
+ __decorate([
1113
+ state(),
1114
+ __metadata("design:type", Object)
1115
+ ], BuildingInspectionGridDetail.prototype, "listLayer", void 0);
1116
+ __decorate([
1117
+ query('md-filled-select[building]'),
1118
+ __metadata("design:type", Object)
1119
+ ], BuildingInspectionGridDetail.prototype, "htmlSelectBuilding", void 0);
1120
+ __decorate([
1121
+ query('md-filled-select[level]'),
1122
+ __metadata("design:type", Object)
1123
+ ], BuildingInspectionGridDetail.prototype, "htmlSelectLevel", void 0);
1124
+ __decorate([
1125
+ query('div[drawing]'),
1126
+ __metadata("design:type", HTMLDivElement)
1127
+ ], BuildingInspectionGridDetail.prototype, "drawingContainer", void 0);
1128
+ BuildingInspectionGridDetail = __decorate([
1129
+ customElement('building-inspection-grid-detail')
1130
+ ], BuildingInspectionGridDetail);
1131
+ export { BuildingInspectionGridDetail };
1132
+ //# sourceMappingURL=building-inspection-grid-detail.js.map