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

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 +2 -2
  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
@@ -1,4 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/fab/fab.js';
2
3
  import '@material/web/icon/icon.js';
3
4
  import gql from 'graphql-tag';
4
5
  import { client } from '@operato/graphql';
@@ -12,6 +13,8 @@ import { connect } from 'pwa-helpers/connect-mixin.js';
12
13
  import { openPopup } from '@operato/layout';
13
14
  import './comment-list-popup';
14
15
  import './attachment-list-popup';
16
+ import '../../stt/speech-to-text';
17
+ import { parseSpeechCommand } from '../../stt/stt-utils';
15
18
  let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
16
19
  constructor() {
17
20
  super(...arguments);
@@ -25,9 +28,55 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
25
28
  overallSupervisoryEmails: []
26
29
  };
27
30
  this.status = BuildingInspectionStatus.WAIT;
31
+ this.isListening = false;
32
+ this._onToggleSTT = () => {
33
+ const stt = this.renderRoot.querySelector('#stt');
34
+ if (!this.isListening) {
35
+ stt === null || stt === void 0 ? void 0 : stt.startListening();
36
+ }
37
+ else {
38
+ stt === null || stt === void 0 ? void 0 : stt.stopListening();
39
+ }
40
+ // isListening은 stt-status 이벤트에서 갱신됨
41
+ };
42
+ }
43
+ firstUpdated() {
44
+ const stt = this.renderRoot.querySelector('#stt');
45
+ if (stt) {
46
+ stt.addEventListener('stt-result', (e) => {
47
+ var _a, _b;
48
+ const text = e.detail.finalTranscript;
49
+ const parsed = parseSpeechCommand(text, ((_b = (_a = this.checklist) === null || _a === void 0 ? void 0 : _a.checklistItems) === null || _b === void 0 ? void 0 : _b.length) || 20);
50
+ this._applySpeechCommand(parsed);
51
+ });
52
+ stt.addEventListener('stt-status', (e) => {
53
+ // 음성 인식 상태에 따라 버튼 상태 갱신
54
+ const status = e.detail.status;
55
+ if (status && status.includes('Listening'))
56
+ this.isListening = true;
57
+ if (status && (status.includes('종료') || status.includes('Stopped')))
58
+ this.isListening = false;
59
+ this.requestUpdate();
60
+ });
61
+ }
62
+ }
63
+ /**
64
+ * 음성 명령 해석 결과를 체크리스트에 반영
65
+ */
66
+ _applySpeechCommand(parsed) {
67
+ // 합격/불합격 처리 예시 (시공자 기준)
68
+ if (parsed.rowIds && parsed.isPass !== null) {
69
+ this.checklist.checklistItems = this.checklist.checklistItems.map((item, idx) => parsed.rowIds.includes(idx + 1) ? Object.assign(Object.assign({}, item), { constructionConfirmStatus: parsed.isPass ? 'T' : 'F' }) : item);
70
+ this.requestUpdate();
71
+ }
72
+ // 조치사항 처리 예시
73
+ if (parsed.rowIds && parsed.actionText) {
74
+ this.checklist.checklistItems = this.checklist.checklistItems.map((item, idx) => parsed.rowIds.includes(idx + 1) ? Object.assign(Object.assign({}, item), { action: parsed.actionText }) : item);
75
+ this.requestUpdate();
76
+ }
28
77
  }
29
78
  render() {
30
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
79
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
31
80
  const today = this._getDate(new Date());
32
81
  // 시공자 스탭 여부
33
82
  const isConstructorStep = this.status == BuildingInspectionStatus.WAIT ||
@@ -73,199 +122,205 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
73
122
  });
74
123
  const processedItems = this.drawChecklistItems(((_j = this.checklist) === null || _j === void 0 ? void 0 : _j.checklistItems) || []);
75
124
  return html `
76
- <div wrapper>
77
- <div name bold>${this.checklist.name}</div>
125
+ <speech-to-text id="stt"></speech-to-text>
126
+ <div title-row>
127
+ <div name>${this.checklist.name}</div>
128
+ <md-fab
129
+ class="stt-fab"
130
+ ?active=${this.isListening}
131
+ @click=${this._onToggleSTT}
132
+ ?disabled=${false}
133
+ style="position:absolute;top:0;right:0;z-index:10;"
134
+ .label=${this.isListening ? '음성 인식 중지' : '음성 인식 시작'}
135
+ >
136
+ <md-icon slot="icon">mic</md-icon>
137
+ </md-fab>
138
+ </div>
139
+ <table header>
140
+ <tr>
141
+ <th>공종</th>
142
+ <td>${this.checklist.constructionType}</td>
143
+ <th>문서 번호</th>
144
+ <td>${this.checklist.documentNo}</td>
145
+ </tr>
146
+ <tr>
147
+ <th>세부 공종</th>
148
+ <td>${this.checklist.constructionDetailType}</td>
149
+ <th>위치 및 부위</th>
150
+ <td>${this.checklist.location}</td>
151
+ </tr>
152
+ <tr>
153
+ <th>검측 부위</th>
154
+ <td>${((_l = (_k = this.checklist) === null || _k === void 0 ? void 0 : _k.inspectionParts) === null || _l === void 0 ? void 0 : _l.join(', ')) || ''}</td>
155
+ <th>검측 상태</th>
156
+ <td>${BUILDING_INSPECTION_STATUS_DISPLAY[this.status]}</td>
157
+ </tr>
158
+ </table>
78
159
 
79
- <table header>
160
+ <table body>
161
+ <thead>
80
162
  <tr>
81
- <th>공종</th>
82
- <td>${this.checklist.constructionType}</td>
83
- <th>문서 번호</th>
84
- <td>${this.checklist.documentNo}</td>
163
+ <th colspan="2" rowspan="3" type>구분</th>
164
+ <th rowspan="3" inspection-name>검사항목</th>
165
+ <th rowspan="3" criteria>검사기준</th>
166
+ <th colspan="4" result>검사결과</th>
167
+ <th rowspan="3" small>첨부자료</th>
168
+ <th rowspan="3" small>조치사항</th>
85
169
  </tr>
86
170
  <tr>
87
- <th>세부 공종</th>
88
- <td>${this.checklist.constructionDetailType}</td>
89
- <th>위치 및 부위</th>
90
- <td>${this.checklist.location}</td>
171
+ <th colspan="2">시공자</th>
172
+ <th colspan="2">감리자</th>
91
173
  </tr>
92
174
  <tr>
93
- <th>검측 부위</th>
94
- <td>${((_l = (_k = this.checklist) === null || _k === void 0 ? void 0 : _k.inspectionParts) === null || _l === void 0 ? void 0 : _l.join(', ')) || ''}</td>
95
- <th>검측 상태</th>
96
- <td>${BUILDING_INSPECTION_STATUS_DISPLAY[(_o = (_m = this.checklist) === null || _m === void 0 ? void 0 : _m.buildingInspection) === null || _o === void 0 ? void 0 : _o.status]}</td>
175
+ <th>적합</th>
176
+ <th>부적합</th>
177
+ <th>적합</th>
178
+ <th>부적합</th>
97
179
  </tr>
98
- </table>
99
-
100
- <table body>
101
- <thead>
102
- <tr>
103
- <th colspan="2" rowspan="3" type>구분</th>
104
- <th rowspan="3" inspection-name>검사항목</th>
105
- <th rowspan="3" criteria>검사기준</th>
106
- <th colspan="4" result>검사결과</th>
107
- <th rowspan="3" small>첨부자료</th>
108
- <th rowspan="3" small>조치사항</th>
109
- </tr>
110
- <tr>
111
- <th colspan="2">시공자</th>
112
- <th colspan="2">감리자</th>
113
- </tr>
114
- <tr>
115
- <th>적합</th>
116
- <th>부적합</th>
117
- <th>적합</th>
118
- <th>부적합</th>
119
- </tr>
120
- </thead>
121
- <tbody>
122
- ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {
180
+ </thead>
181
+ <tbody>
182
+ ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {
123
183
  return html ` <tr>
124
- ${showMainTypeCell
184
+ ${showMainTypeCell
125
185
  ? html `<td main-type bold rowspan="${mainTypeRowspan}">${CHECKLIST_MAIN_TYPE_LIST[item.mainType]}</td>`
126
186
  : ''}
127
- ${showDetailTypeCell ? html ` <td bold rowspan="${detailTypeRowspan}">${item.detailType}</td> ` : ''}
128
-
129
- <td>${idx + 1}. ${item.name}</td>
130
- <td>${item.inspctionCriteria}</td>
131
- <td radio>
132
- <md-radio
133
- item-id=${item.id}
134
- item-name="constructionConfirmStatus"
135
- name=${'radio-construction-' + item.id}
136
- value="T"
137
- .checked=${item.constructionConfirmStatus === 'T'}
138
- ?disabled=${!isConstructorStep || !havePermissionByStatus}
139
- @change=${this._onChangeConfirmStatus}
140
- ></md-radio>
141
- </td>
142
- <td radio>
143
- <md-radio
144
- item-id=${item.id}
145
- item-name="constructionConfirmStatus"
146
- name=${'radio-construction-' + item.id}
147
- value="F"
148
- .checked=${item.constructionConfirmStatus === 'F'}
149
- ?disabled=${!isConstructorStep || !havePermissionByStatus}
150
- @change=${this._onChangeConfirmStatus}
151
- ></md-radio>
152
- </td>
153
- <td radio>
154
- <md-radio
155
- item-id=${item.id}
156
- item-name="supervisoryConfirmStatus"
157
- name=${'radio-supervisory-' + item.id}
158
- value="T"
159
- .checked=${item.supervisoryConfirmStatus === 'T'}
160
- ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
161
- @change=${this._onChangeConfirmStatus}
162
- ></md-radio>
163
- </td>
164
- <td radio>
165
- <md-radio
166
- item-id=${item.id}
167
- item-name="supervisoryConfirmStatus"
168
- name=${'radio-supervisory-' + item.id}
169
- value="F"
170
- .checked=${item.supervisoryConfirmStatus === 'F'}
171
- ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
172
- @change=${this._onChangeConfirmStatus}
173
- ></md-radio>
174
- </td>
175
- <td
176
- attachment
177
- ?disabled=${this.status == BuildingInspectionStatus.PASS}
178
- @click=${() => this._onClickAttachment(item.id)}
179
- >
180
- <md-icon slot="icon">attach_file</md-icon>
181
- <span>${(item === null || item === void 0 ? void 0 : item.checklistItemAttachmentCount) || ''}</span>
182
- </td>
183
- <td
184
- comment
185
- ?disabled=${this.status == BuildingInspectionStatus.PASS}
186
- @click=${() => this._onClickComment(item.id)}
187
- >
188
- <md-icon slot="icon">chat</md-icon>
189
- <span>${(item === null || item === void 0 ? void 0 : item.checklistItemCommentCount) || ''}</span>
190
- </td>
191
- </tr>`;
192
- })}
193
- </tbody>
194
- </table>
187
+ ${showDetailTypeCell ? html ` <td bold rowspan="${detailTypeRowspan}">${item.detailType}</td> ` : ''}
195
188
 
196
- <table tail>
197
- <tbody>
198
- <tr first>
199
- <th rowspan="2">시공자 점검일</th>
200
- <td rowspan="2">
201
- ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.constructionInspectionDate)}
189
+ <td>${idx + 1}. ${item.name}</td>
190
+ <td>${item.inspctionCriteria}</td>
191
+ <td radio>
192
+ <md-radio
193
+ item-id=${item.id}
194
+ item-name="constructionConfirmStatus"
195
+ name=${'radio-construction-' + item.id}
196
+ value="T"
197
+ .checked=${item.constructionConfirmStatus === 'T'}
198
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
199
+ @change=${this._onChangeConfirmStatus}
200
+ ></md-radio>
202
201
  </td>
203
- <th>공종별 시공 관리자</th>
204
- <td>
205
- <span sign-text>(인)</span>
206
- <ox-input-signature
207
- .value=${this.checklist.taskConstructorSignature}
208
- name="taskConstructorSignature"
209
- @change=${this._onChangeSignature}
210
- ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||
211
- !isTaskConstructor}
212
- >
213
- </ox-input-signature>
202
+ <td radio>
203
+ <md-radio
204
+ item-id=${item.id}
205
+ item-name="constructionConfirmStatus"
206
+ name=${'radio-construction-' + item.id}
207
+ value="F"
208
+ .checked=${item.constructionConfirmStatus === 'F'}
209
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
210
+ @change=${this._onChangeConfirmStatus}
211
+ ></md-radio>
214
212
  </td>
215
- </tr>
216
- <tr>
217
- <th>총괄 시공 책임자</th>
218
- <td>
219
- <span sign-text>(인)</span>
220
- <ox-input-signature
221
- .value=${this.checklist.overallConstructorSignature}
222
- name="overallConstructorSignature"
223
- @change=${this._onChangeSignature}
224
- ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}
225
- >
226
- </ox-input-signature>
213
+ <td radio>
214
+ <md-radio
215
+ item-id=${item.id}
216
+ item-name="supervisoryConfirmStatus"
217
+ name=${'radio-supervisory-' + item.id}
218
+ value="T"
219
+ .checked=${item.supervisoryConfirmStatus === 'T'}
220
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
221
+ @change=${this._onChangeConfirmStatus}
222
+ ></md-radio>
227
223
  </td>
228
- </tr>
229
- <tr>
230
- <th rowspan="2">감리자 점검일</th>
231
- <td rowspan="2">
232
- ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.supervisorInspectionDate)}
224
+ <td radio>
225
+ <md-radio
226
+ item-id=${item.id}
227
+ item-name="supervisoryConfirmStatus"
228
+ name=${'radio-supervisory-' + item.id}
229
+ value="F"
230
+ .checked=${item.supervisoryConfirmStatus === 'F'}
231
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
232
+ @change=${this._onChangeConfirmStatus}
233
+ ></md-radio>
233
234
  </td>
234
- <th>공종별 감리 책임자</th>
235
- <td>
236
- <span sign-text>(인)</span>
237
- <ox-input-signature
238
- .value=${this.checklist.taskSupervisorySignature}
239
- name="taskSupervisorySignature"
240
- @change=${this._onChangeSignature}
241
- ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}
242
- >
243
- </ox-input-signature>
235
+ <td
236
+ attachment
237
+ ?disabled=${this.status == BuildingInspectionStatus.PASS}
238
+ @click=${() => this._onClickAttachment(item.id)}
239
+ >
240
+ <md-icon slot="icon">attach_file</md-icon>
241
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemAttachmentCount) || ''}</span>
244
242
  </td>
245
- </tr>
246
- <tr>
247
- <th>총괄 감리 책임자</th>
248
- <td>
249
- <span sign-text>(인)</span>
250
- <ox-input-signature
251
- .value=${this.checklist.overallSupervisorySignature}
252
- name="overallSupervisorySignature"
253
- @change=${this._onChangeSignature}
254
- ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}
255
- >
256
- </ox-input-signature>
243
+ <td comment ?disabled=${this.status == BuildingInspectionStatus.PASS} @click=${() => this._onClickComment(item.id)}>
244
+ <md-icon slot="icon">chat</md-icon>
245
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemCommentCount) || ''}</span>
257
246
  </td>
258
- </tr>
259
- </tbody>
260
- </table>
247
+ </tr>`;
248
+ })}
249
+ </tbody>
250
+ </table>
251
+
252
+ <table tail>
253
+ <tbody>
254
+ <tr first>
255
+ <th rowspan="2">시공자 점검일</th>
256
+ <td rowspan="2">
257
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.constructionInspectionDate)}
258
+ </td>
259
+ <th>공종별 시공 관리자</th>
260
+ <td>
261
+ <span sign-text>(인)</span>
262
+ <ox-input-signature
263
+ .value=${this.checklist.taskConstructorSignature}
264
+ name="taskConstructorSignature"
265
+ @change=${this._onChangeSignature}
266
+ ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||
267
+ !isTaskConstructor}
268
+ >
269
+ </ox-input-signature>
270
+ </td>
271
+ </tr>
272
+ <tr>
273
+ <th>총괄 시공 책임자</th>
274
+ <td>
275
+ <span sign-text>(인)</span>
276
+ <ox-input-signature
277
+ .value=${this.checklist.overallConstructorSignature}
278
+ name="overallConstructorSignature"
279
+ @change=${this._onChangeSignature}
280
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}
281
+ >
282
+ </ox-input-signature>
283
+ </td>
284
+ </tr>
285
+ <tr>
286
+ <th rowspan="2">감리자 점검일</th>
287
+ <td rowspan="2">
288
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.supervisorInspectionDate)}
289
+ </td>
290
+ <th>공종별 감리 책임자</th>
291
+ <td>
292
+ <span sign-text>(인)</span>
293
+ <ox-input-signature
294
+ .value=${this.checklist.taskSupervisorySignature}
295
+ name="taskSupervisorySignature"
296
+ @change=${this._onChangeSignature}
297
+ ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}
298
+ >
299
+ </ox-input-signature>
300
+ </td>
301
+ </tr>
302
+ <tr>
303
+ <th>총괄 감리 책임자</th>
304
+ <td>
305
+ <span sign-text>(인)</span>
306
+ <ox-input-signature
307
+ .value=${this.checklist.overallSupervisorySignature}
308
+ name="overallSupervisorySignature"
309
+ @change=${this._onChangeSignature}
310
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}
311
+ >
312
+ </ox-input-signature>
313
+ </td>
314
+ </tr>
315
+ </tbody>
316
+ </table>
261
317
 
262
- <div footer>
263
- <div>
264
- - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는
265
- 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함
266
- </div>
267
- <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>
318
+ <div footer>
319
+ <div>
320
+ - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는
321
+ 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함
268
322
  </div>
323
+ <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>
269
324
  </div>
270
325
  `;
271
326
  }
@@ -330,26 +385,20 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
330
385
  <comment-list-popup
331
386
  .checklistItemId=${checklistItemId}
332
387
  .status=${this.status}
388
+ .mode=${this.mode}
333
389
  @change-comment=${this._refreshItem.bind(this)}
334
390
  ></comment-list-popup>
335
- `, {
336
- backdrop: true,
337
- size: 'medium',
338
- title: '조치 사항'
339
- });
391
+ `, { backdrop: true, size: 'medium', title: '조치 사항' });
340
392
  }
341
393
  _onClickAttachment(checklistItemId) {
342
394
  openPopup(html `
343
395
  <attachment-list-popup
344
396
  .checklistItemId=${checklistItemId}
345
397
  .status=${this.status}
398
+ .mode=${this.mode}
346
399
  @change-attachment=${this._refreshItem.bind(this)}
347
400
  ></attachment-list-popup>
348
- `, {
349
- backdrop: true,
350
- size: 'medium',
351
- title: '첨부 자료'
352
- });
401
+ `, { backdrop: true, size: 'medium', title: '첨부 자료' });
353
402
  }
354
403
  async _refreshItem(e) {
355
404
  var _a;
@@ -536,6 +585,60 @@ ChecklistView.styles = [
536
585
  text-indent: -9px;
537
586
  padding-left: var(--spacing-medium, 8px);
538
587
  }
588
+
589
+ .stt-float-btns {
590
+ position: absolute;
591
+ top: 0;
592
+ right: 0;
593
+ display: flex;
594
+ gap: 8px;
595
+ z-index: 10;
596
+ }
597
+ .stt-float-btns button {
598
+ background: #fff;
599
+ border: 1px solid #ccc;
600
+ border-radius: 50%;
601
+ width: 38px;
602
+ height: 38px;
603
+ font-size: 18px;
604
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
605
+ cursor: pointer;
606
+ transition: background 0.2s;
607
+ outline: none;
608
+ }
609
+ .stt-float-btns button:hover {
610
+ background: #f2f2f2;
611
+ }
612
+ div[title-row] {
613
+ position: relative;
614
+ display: flex;
615
+ align-items: center;
616
+ justify-content: center;
617
+ margin-bottom: 8px;
618
+ }
619
+ div[name] {
620
+ color: #586878;
621
+ font-size: 24px;
622
+ font-weight: bold;
623
+ flex: 1;
624
+ text-align: center;
625
+ }
626
+
627
+ @keyframes pulse {
628
+ 0% {
629
+ filter: drop-shadow(0 0 0 #d32f2f);
630
+ }
631
+ 70% {
632
+ filter: drop-shadow(0 0 8px #d32f2f);
633
+ }
634
+ 100% {
635
+ filter: drop-shadow(0 0 0 #d32f2f);
636
+ }
637
+ }
638
+ .stt-fab[active] md-icon {
639
+ color: #d32f2f;
640
+ animation: pulse 1s infinite;
641
+ }
539
642
  `
540
643
  ];
541
644
  __decorate([