@dssp/supervision 1.0.0-alpha.2 → 1.0.0-alpha.21

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