@dssp/project 1.0.0-alpha.8 → 1.0.0-alpha.80

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 (149) hide show
  1. package/dist-client/index.d.ts +1 -0
  2. package/dist-client/index.js +1 -1
  3. package/dist-client/index.js.map +1 -1
  4. package/dist-client/pages/lib/chatbot-widget.d.ts +53 -0
  5. package/dist-client/pages/lib/chatbot-widget.js +631 -0
  6. package/dist-client/pages/lib/chatbot-widget.js.map +1 -0
  7. package/dist-client/pages/lib/select2-component.d.ts +1 -1
  8. package/dist-client/pages/lib/select2-component.js +35 -35
  9. package/dist-client/pages/lib/select2-component.js.map +1 -1
  10. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  11. package/dist-client/pages/project/component/pagenation.js +142 -0
  12. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  13. package/dist-client/pages/project/component/project-update-header.js +26 -3
  14. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  15. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.d.ts +1 -0
  16. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +308 -0
  17. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  18. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.d.ts +1 -0
  19. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +356 -0
  20. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  21. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.d.ts +1 -0
  22. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +681 -0
  23. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  24. package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +32 -0
  25. package/dist-client/pages/project/popup/checklist/task-checklist-view.js +620 -0
  26. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  27. package/dist-client/pages/project/popup/popup-plan-export.js +8 -2
  28. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -1
  29. package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
  30. package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
  31. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  32. package/dist-client/pages/project/project-completed-list.d.ts +5 -0
  33. package/dist-client/pages/project/project-completed-list.js +32 -3
  34. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  35. package/dist-client/pages/project/project-detail.d.ts +6 -0
  36. package/dist-client/pages/project/project-detail.js +222 -89
  37. package/dist-client/pages/project/project-detail.js.map +1 -1
  38. package/dist-client/pages/project/project-list.d.ts +57 -0
  39. package/dist-client/pages/project/project-list.js +80 -9
  40. package/dist-client/pages/project/project-list.js.map +1 -1
  41. package/dist-client/pages/project/project-plan-management.js +3 -1
  42. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  43. package/dist-client/pages/project/project-setting-list.d.ts +7 -0
  44. package/dist-client/pages/project/project-setting-list.js +61 -7
  45. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  46. package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
  47. package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
  48. package/dist-client/pages/project/project-task-list.js.map +1 -0
  49. package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -4
  50. package/dist-client/pages/project/project-task.js +688 -0
  51. package/dist-client/pages/project/project-task.js.map +1 -0
  52. package/dist-client/pages/project/project-update.d.ts +34 -0
  53. package/dist-client/pages/project/project-update.js +505 -35
  54. package/dist-client/pages/project/project-update.js.map +1 -1
  55. package/dist-client/pages/resource/construction-type-management.js +14 -0
  56. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  57. package/dist-client/pages/resource/resource-list-page.d.ts +1 -2
  58. package/dist-client/pages/resource/resource-list-page.js +1 -2
  59. package/dist-client/pages/resource/resource-list-page.js.map +1 -1
  60. package/dist-client/pages/task/task-list-page.d.ts +1 -2
  61. package/dist-client/pages/task/task-list-page.js +1 -2
  62. package/dist-client/pages/task/task-list-page.js.map +1 -1
  63. package/dist-client/pages/task-resource/task-resource-list-page.d.ts +1 -2
  64. package/dist-client/pages/task-resource/task-resource-list-page.js +1 -2
  65. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -1
  66. package/dist-client/route.d.ts +1 -1
  67. package/dist-client/route.js +4 -4
  68. package/dist-client/route.js.map +1 -1
  69. package/dist-client/tsconfig.tsbuildinfo +1 -1
  70. package/dist-server/controllers/parse-excel.js.map +1 -1
  71. package/dist-server/migrations/1723861466414-seed-codes.js +1 -1
  72. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
  73. package/dist-server/service/construction-type/construction-type-query.d.ts +2 -2
  74. package/dist-server/service/construction-type/construction-type-query.js +5 -10
  75. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  76. package/dist-server/service/construction-type/construction-type-type.d.ts +1 -0
  77. package/dist-server/service/construction-type/construction-type-type.js +4 -0
  78. package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
  79. package/dist-server/service/construction-type/construction-type.d.ts +1 -0
  80. package/dist-server/service/construction-type/construction-type.js +5 -0
  81. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  82. package/dist-server/service/index.d.ts +2 -2
  83. package/dist-server/service/index.js +5 -2
  84. package/dist-server/service/index.js.map +1 -1
  85. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.d.ts +2 -2
  86. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +5 -10
  87. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
  88. package/dist-server/service/manager/manager-query.d.ts +1 -1
  89. package/dist-server/service/manager/manager-query.js +2 -6
  90. package/dist-server/service/manager/manager-query.js.map +1 -1
  91. package/dist-server/service/project/issue-project-code.d.ts +7 -0
  92. package/dist-server/service/project/issue-project-code.js +27 -0
  93. package/dist-server/service/project/issue-project-code.js.map +1 -0
  94. package/dist-server/service/project/project-mutation.d.ts +2 -0
  95. package/dist-server/service/project/project-mutation.js +98 -9
  96. package/dist-server/service/project/project-mutation.js.map +1 -1
  97. package/dist-server/service/project/project-query.d.ts +13 -2
  98. package/dist-server/service/project/project-query.js +138 -13
  99. package/dist-server/service/project/project-query.js.map +1 -1
  100. package/dist-server/service/project/project-type.d.ts +8 -1
  101. package/dist-server/service/project/project-type.js +27 -1
  102. package/dist-server/service/project/project-type.js.map +1 -1
  103. package/dist-server/service/project/project.d.ts +22 -0
  104. package/dist-server/service/project/project.js +80 -2
  105. package/dist-server/service/project/project.js.map +1 -1
  106. package/dist-server/service/resource/resource-mutation.js +5 -6
  107. package/dist-server/service/resource/resource-mutation.js.map +1 -1
  108. package/dist-server/service/resource/resource-query.d.ts +2 -2
  109. package/dist-server/service/resource/resource-query.js +5 -10
  110. package/dist-server/service/resource/resource-query.js.map +1 -1
  111. package/dist-server/service/task/task-query.d.ts +2 -0
  112. package/dist-server/service/task/task-query.js +11 -0
  113. package/dist-server/service/task/task-query.js.map +1 -1
  114. package/dist-server/service/task/task.d.ts +2 -0
  115. package/dist-server/service/task/task.js +6 -0
  116. package/dist-server/service/task/task.js.map +1 -1
  117. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  118. package/dist-server/service/task-checklist-binding/index.js +9 -0
  119. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  120. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  121. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +186 -0
  122. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  123. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  124. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  125. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  126. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  127. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  128. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  129. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  130. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  131. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  132. package/dist-server/service/task-resource/task-resource-query.d.ts +2 -2
  133. package/dist-server/service/task-resource/task-resource-query.js +4 -9
  134. package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
  135. package/dist-server/service/worker-type/worker-type-query.d.ts +2 -2
  136. package/dist-server/service/worker-type/worker-type-query.js +5 -10
  137. package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
  138. package/dist-server/tsconfig.tsbuildinfo +1 -1
  139. package/package.json +15 -13
  140. package/things-factory.config.js +3 -3
  141. package/translations/en.json +10 -9
  142. package/translations/ja.json +15 -1
  143. package/translations/ko.json +3 -0
  144. package/translations/ms.json +15 -1
  145. package/translations/zh.json +15 -1
  146. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
  147. package/dist-client/pages/project/project-schedule-list.js.map +0 -1
  148. package/dist-client/pages/project/project-schedule.js +0 -407
  149. package/dist-client/pages/project/project-schedule.js.map +0 -1
@@ -0,0 +1,688 @@
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/filled-button.js';
6
+ import '@material/web/button/outlined-button.js';
7
+ import { PageView } from '@operato/shell';
8
+ import { css, html } from 'lit';
9
+ import { customElement, query, state } from 'lit/decorators.js';
10
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
11
+ import { client } from '@operato/graphql';
12
+ import { i18next } from '@operato/i18n';
13
+ import { notify, openPopup } from '@operato/layout';
14
+ import gql from 'graphql-tag';
15
+ import { ScrollbarStyles } from '@operato/styles';
16
+ import { verifyBiometric } from '@things-factory/auth-base/dist-client';
17
+ import { BuildingInspectionStatus } from './popup/checklist/task-checklist-view';
18
+ import '@operato/gantt/ox-gantt.js';
19
+ import './popup/popup-task-upload';
20
+ import './popup/checklist/task-checklist-create-popup';
21
+ import './popup/checklist/task-checklist-view';
22
+ const TaskFragment = gql `
23
+ fragment TaskFragment on Task {
24
+ type
25
+ title: name
26
+ id: code
27
+ duration
28
+ startDate
29
+ endDate
30
+ dependsOn
31
+ progress
32
+ style
33
+ taskChecklistBinding {
34
+ id
35
+ status
36
+ }
37
+ resources {
38
+ type
39
+ allocated
40
+ }
41
+ }
42
+ `;
43
+ let ProjectTask = class ProjectTask extends ScopedElementsMixin(PageView) {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.defaultProject = {
47
+ name: '',
48
+ buildingComplex: {
49
+ address: '',
50
+ area: 0,
51
+ constructionCompany: '',
52
+ clientCompany: '',
53
+ supervisoryCompany: '',
54
+ designCompany: '',
55
+ constructionType: '',
56
+ buildings: []
57
+ }
58
+ };
59
+ this.projectId = '';
60
+ this.project = Object.assign({}, this.defaultProject);
61
+ this.selectedBuildingIdx = 0;
62
+ this.constructionTypeList = [];
63
+ this.selectedChecklist = {};
64
+ this.selectedConstructionTypeId = '';
65
+ this.fromDate = '2024-01-01';
66
+ this.toDate = '2026-12-31';
67
+ this.selectedFromDate = '';
68
+ this.selectedToDate = '';
69
+ this.timeScale = 'week-day';
70
+ this.extendGridLines = false;
71
+ this.columnConfigProvider = function () {
72
+ return [
73
+ { name: 'title', label: i18next.t('label.gantt-task-title') || 'title', visible: true, width: 150, order: 1 },
74
+ {
75
+ name: 'startDate',
76
+ label: i18next.t('label.gantt-task-start-date') || 'start date',
77
+ visible: true,
78
+ width: 100,
79
+ order: 2
80
+ },
81
+ {
82
+ name: 'resources',
83
+ label: i18next.t('label.gantt-task-resources') || 'resources',
84
+ visible: true,
85
+ width: 100,
86
+ order: 3
87
+ },
88
+ {
89
+ name: 'duration',
90
+ label: i18next.t('label.gantt-task-duration') || 'duration',
91
+ visible: true,
92
+ width: 30,
93
+ order: 4
94
+ }
95
+ ];
96
+ };
97
+ }
98
+ get context() {
99
+ var _a;
100
+ return {
101
+ title: ((_a = this.project) === null || _a === void 0 ? void 0 : _a.name) ? `공정표 - ${this.project.name}` : '공정표'
102
+ };
103
+ }
104
+ render() {
105
+ var _a;
106
+ return html `
107
+ <div header>
108
+ <h2>
109
+ <md-icon slot="icon" back @click=${() => history.back()}>arrow_back</md-icon>
110
+ ${this.project.name}
111
+ </h2>
112
+ <div button-container>
113
+ <md-elevated-button @click=${this._openUploadSchedulePopup}>
114
+ <md-icon slot="icon">event_note</md-icon>공정표 관리
115
+ </md-elevated-button>
116
+ </div>
117
+ </div>
118
+
119
+ <div body>
120
+ <ox-gantt
121
+ from-date=${new Date(this.fromDate).toISOString().split('T')[0]}
122
+ to-date=${new Date(this.toDate).toISOString().split('T')[0]}
123
+ .timeScale=${this.timeScale}
124
+ .tasks=${this.tasks}
125
+ @date-range-selected=${this.onRangeSelected}
126
+ @task-clicked=${(e) => {
127
+ console.log('task-clicked', e.detail);
128
+ }}
129
+ ?extend-grid-lines=${this.extendGridLines}
130
+ .columnConfigProvider=${this.columnConfigProvider}
131
+ .colorProvider=${task => {
132
+ return task.style || 'gray';
133
+ }}
134
+ >
135
+ </ox-gantt>
136
+ <div select-container>
137
+ <div date>
138
+ <span name>기간선택</span>
139
+ <div @change=${() => this.onChangePeriodRange()}>
140
+ <input type="date" name="startDate" project .value=${this.project.startDate || ''} max="9999-12-31" />
141
+ ~
142
+ <input type="date" name="endDate" project .value=${this.project.endDate || ''} max="9999-12-31" />
143
+ </div>
144
+ </div>
145
+ <div construction-list-container>
146
+ ${(_a = this.constructionTypeList) === null || _a === void 0 ? void 0 : _a.map((constructionType) => {
147
+ var _a, _b, _c;
148
+ return html ` <md-outlined-button
149
+ id=${constructionType.id}
150
+ ?selected=${this.selectedConstructionTypeId === constructionType.id}
151
+ ?pass=${((_a = constructionType.taskChecklistBinding) === null || _a === void 0 ? void 0 : _a.status) === BuildingInspectionStatus.PASS}
152
+ ?fail=${((_b = constructionType.taskChecklistBinding) === null || _b === void 0 ? void 0 : _b.status) === BuildingInspectionStatus.FAIL}
153
+ @click=${() => this.onClickTaskChecklist(constructionType)}
154
+ >
155
+ <div icon-container>
156
+ ${this._getIconHtmlByStatus((_c = constructionType.taskChecklistBinding) === null || _c === void 0 ? void 0 : _c.status)} ${constructionType.title}
157
+ </div>
158
+ </md-outlined-button>`;
159
+ })}
160
+ </div>
161
+ </div>
162
+ </div>
163
+ `;
164
+ }
165
+ async pageInitialized(lifecycle) { }
166
+ async pageUpdated(changes, lifecycle) {
167
+ if (this.active) {
168
+ this.projectId = lifecycle.resourceId || '';
169
+ await this.initProject(this.projectId);
170
+ }
171
+ }
172
+ async initProject(projectId = '') {
173
+ var _a, _b;
174
+ const response = await client.query({
175
+ query: gql `
176
+ query Project($id: String!, $sortings: [Sorting!]) {
177
+ project(id: $id) {
178
+ id
179
+ name
180
+ startDate
181
+ endDate
182
+ rootTasks {
183
+ ...TaskFragment
184
+ children(sortings: $sortings) {
185
+ ...TaskFragment
186
+ children(sortings: $sortings) {
187
+ ...TaskFragment
188
+ }
189
+ }
190
+ }
191
+ scheduleTable {
192
+ id
193
+ name
194
+ }
195
+ buildingComplex {
196
+ id
197
+ planXScale
198
+ planYScale
199
+ taskConstructorEmails
200
+ overallConstructorEmails
201
+ taskSupervisoryEmails
202
+ overallSupervisoryEmails
203
+ buildings {
204
+ id
205
+ name
206
+ drawing {
207
+ id
208
+ name
209
+ }
210
+ buildingLevels {
211
+ id
212
+ floor
213
+ mainDrawing {
214
+ id
215
+ name
216
+ }
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+
223
+ ${TaskFragment}
224
+ `,
225
+ variables: {
226
+ id: projectId,
227
+ sortings: [{ name: 'startDate' }]
228
+ }
229
+ });
230
+ this.project = (_a = response.data) === null || _a === void 0 ? void 0 : _a.project;
231
+ this.tasks = (_b = response.data) === null || _b === void 0 ? void 0 : _b.project.rootTasks;
232
+ if (this.project) {
233
+ this.fromDate = this.project.startDate || '2024-01-01'; /* TODO default: start date of this year - 3 */
234
+ this.toDate = this.project.endDate || '2026-12-31'; /* TODO defaule: end date of this year + 3 */
235
+ }
236
+ this.updateContext();
237
+ }
238
+ onChangePeriodRange() {
239
+ this.fromDate = this.inputStartDate.value;
240
+ this.toDate = this.inputEndDate.value;
241
+ }
242
+ onRangeSelected(event) {
243
+ var _a, _b;
244
+ if (event) {
245
+ this.selectedFromDate = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.start;
246
+ this.selectedToDate = (_b = event.detail) === null || _b === void 0 ? void 0 : _b.end;
247
+ }
248
+ const selectedFromDate = new Date(this.selectedFromDate + 'T00:00:00.000Z');
249
+ const selectedToDate = new Date(this.selectedToDate + 'T23:59:59.000Z');
250
+ this.constructionTypeList = this.tasks.filter(constuction => {
251
+ const constuctionStartDate = new Date(constuction.startDate);
252
+ const constuctionEndDate = new Date(constuction.endDate);
253
+ return constuctionStartDate <= selectedToDate && constuctionEndDate >= selectedFromDate;
254
+ });
255
+ }
256
+ _openUploadSchedulePopup() {
257
+ var _a;
258
+ openPopup(html `<popup-task-upload
259
+ .projectId=${this.projectId}
260
+ .scheduleTable=${(_a = this.project) === null || _a === void 0 ? void 0 : _a.scheduleTable}
261
+ @uploaded=${() => this.initProject(this.projectId)}
262
+ ></popup-task-upload>`, { backdrop: true, size: 'medium', title: '공정표 업로드' });
263
+ }
264
+ async onClickTaskChecklist(constructionType) {
265
+ // 선택된 공종 설정
266
+ this.selectedConstructionTypeId = constructionType.id;
267
+ // 체크리스트가 있으면 수정 모드, 없으면 생성 모드
268
+ if (constructionType.taskChecklistBinding) {
269
+ const taskChecklistBinding = await this._getTaskChecklistBindingById(constructionType.taskChecklistBinding.id);
270
+ this.selectedChecklist = Object.assign(Object.assign({}, taskChecklistBinding.checklist), { status: taskChecklistBinding.status });
271
+ this._openUpdateTaskChecklistPopup(constructionType);
272
+ }
273
+ else {
274
+ this._openCreateChecklistPopup(constructionType);
275
+ }
276
+ }
277
+ _openCreateChecklistPopup(constructionType) {
278
+ openPopup(html `<task-checklist-create-popup
279
+ .projectId=${this.projectId}
280
+ .taskCode=${constructionType.id}
281
+ @requestRefresh="${async () => {
282
+ await this.initProject(this.projectId);
283
+ this.onRangeSelected(null);
284
+ }}"
285
+ ></task-checklist-create-popup>`, {
286
+ backdrop: true,
287
+ size: 'large',
288
+ title: `체크리스트 생성`
289
+ });
290
+ }
291
+ _openUpdateTaskChecklistPopup(constructionType) {
292
+ var _a;
293
+ openPopup(html `
294
+ <div style="overflow-y: auto; height: 100%;">
295
+ <task-checklist-view
296
+ .mode=${"EDITOR" /* ChecklistMode.EDITOR */}
297
+ .status=${this.selectedChecklist.status}
298
+ .checklist=${this.selectedChecklist || {}}
299
+ .buildingComplex=${((_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) || {}}
300
+ ></task-checklist-view>
301
+
302
+ <div style="text-align: right; margin-right: 20px; margin-bottom: 15px">
303
+ <md-elevated-button
304
+ ?disabled=${this.selectedChecklist.status == BuildingInspectionStatus.PASS}
305
+ @click=${this._onClickModifyChecklist.bind(this)}
306
+ >
307
+ <md-icon slot="icon">assignment</md-icon>등록
308
+ </md-elevated-button>
309
+ </div>
310
+ </div>
311
+ `, { backdrop: true, size: 'large', title: constructionType.title });
312
+ }
313
+ _onClickModifyChecklist() {
314
+ this.validateChecklist(this.selectedChecklist);
315
+ }
316
+ async validateChecklist(checklist) {
317
+ var _a, _b;
318
+ try {
319
+ const result = await verifyBiometric();
320
+ if (result.verified) {
321
+ console.log('Verification successful. Proceeding with sensitive action.');
322
+ }
323
+ else {
324
+ notify({ message: 'Verification failed:' + result.message });
325
+ return;
326
+ }
327
+ }
328
+ catch (error) {
329
+ notify({ message: 'Error during biometric verification:' + error });
330
+ return;
331
+ }
332
+ const response = await client.mutate({
333
+ mutation: gql `
334
+ mutation UpdateTaskChecklist($taskChecklist: UpdateTaskChecklistSubmitType!) {
335
+ updateTaskChecklist(taskChecklist: $taskChecklist)
336
+ }
337
+ `,
338
+ variables: {
339
+ taskChecklist: {
340
+ checklistId: checklist.id,
341
+ checklist: {
342
+ id: checklist.id,
343
+ overallConstructorSignature: checklist.overallConstructorSignature,
344
+ taskConstructorSignature: checklist.taskConstructorSignature,
345
+ overallSupervisorySignature: checklist.overallSupervisorySignature,
346
+ taskSupervisorySignature: checklist.taskSupervisorySignature
347
+ },
348
+ checklistItem: checklist.checklistItems.map(item => ({
349
+ id: item.id,
350
+ constructionConfirmStatus: item.constructionConfirmStatus,
351
+ supervisoryConfirmStatus: item.supervisoryConfirmStatus
352
+ }))
353
+ }
354
+ }
355
+ });
356
+ if (!response.errors) {
357
+ notify({ message: '검측 요청서를 등록하였습니다.' });
358
+ await this.initProject(this.projectId);
359
+ this.onRangeSelected(null);
360
+ history.back();
361
+ }
362
+ else {
363
+ notify({ message: ((_b = (_a = response.errors) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) || '검측 요청서 등록에 실패하였습니다.', level: 'error' });
364
+ }
365
+ }
366
+ _getIconHtmlByStatus(status) {
367
+ if (!status)
368
+ return '';
369
+ if (status == BuildingInspectionStatus.WAIT || status == BuildingInspectionStatus.OVERALL_WAIT) {
370
+ return html `<md-icon request>frame_inspect</md-icon>`;
371
+ }
372
+ if (status == BuildingInspectionStatus.REQUEST || status == BuildingInspectionStatus.OVERALL_REQUEST) {
373
+ return html `<md-icon request>exclamation</md-icon>`;
374
+ }
375
+ if (status == BuildingInspectionStatus.PASS) {
376
+ return html `<md-icon pass>check</md-icon>`;
377
+ }
378
+ return html `<md-icon fail>close</md-icon>`;
379
+ }
380
+ async _getTaskChecklistBindingById(id) {
381
+ var _a;
382
+ const response = await client.query({
383
+ query: gql `
384
+ query TaskChecklistBinding($id: String!) {
385
+ taskChecklistBinding(id: $id) {
386
+ id
387
+ status
388
+
389
+ checklist {
390
+ id
391
+ name
392
+ constructionType
393
+ constructionDetailType
394
+ location
395
+ inspectionParts
396
+ documentNo
397
+ constructionInspectionDate
398
+ supervisorInspectionDate
399
+ overallConstructorSignature
400
+ taskConstructorSignature
401
+ overallSupervisorySignature
402
+ taskSupervisorySignature
403
+
404
+ checklistItems {
405
+ id
406
+ name
407
+ sequence
408
+ mainType
409
+ detailType
410
+ inspctionCriteria
411
+ constructionConfirmStatus
412
+ supervisoryConfirmStatus
413
+ checklistItemCommentCount
414
+ checklistItemAttachmentCount
415
+ }
416
+ }
417
+
418
+ manager {
419
+ userId
420
+ name
421
+ }
422
+ }
423
+ }
424
+ `,
425
+ variables: { id }
426
+ });
427
+ if (response.errors)
428
+ return;
429
+ return ((_a = response.data) === null || _a === void 0 ? void 0 : _a.taskChecklistBinding) || {};
430
+ }
431
+ };
432
+ ProjectTask.styles = [
433
+ ScrollbarStyles,
434
+ css `
435
+ :host {
436
+ display: flex;
437
+ flex-direction: column;
438
+
439
+ color: #4e5055;
440
+
441
+ width: 100%;
442
+ background-color: var(--md-sys-color-background, #f6f6f6);
443
+ overflow-y: auto;
444
+
445
+ --grid-record-emphasized-background-color: red;
446
+ --grid-record-emphasized-color: yellow;
447
+ }
448
+
449
+ *[bold] {
450
+ font-weight: bold;
451
+ }
452
+
453
+ div[header] {
454
+ display: flex;
455
+ margin: 0px var(--spacing-large, 12px);
456
+
457
+ h2 {
458
+ display: flex;
459
+ gap: 7px;
460
+ flex: 0.5;
461
+ color: #3f71a0;
462
+ font-size: 18px;
463
+
464
+ md-icon[back] {
465
+ background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);
466
+ color: white;
467
+ padding: 8px;
468
+ border-radius: 50%;
469
+ cursor: pointer;
470
+ box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);
471
+ width: 14px;
472
+ height: 14px;
473
+ --md-icon-size: 20px;
474
+ }
475
+
476
+ md-icon[back]:hover {
477
+ background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);
478
+ box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);
479
+ }
480
+ }
481
+
482
+ div[button-container] {
483
+ display: flex;
484
+ align-items: center;
485
+ justify-content: end;
486
+ flex: 0.5;
487
+
488
+ md-elevated-button {
489
+ margin: 0px;
490
+ margin-left: var(--spacing-small, 4px);
491
+
492
+ --md-elevated-button-container-height: 32px;
493
+ --md-elevated-button-label-text-size: 16px;
494
+ --md-elevated-button-container-color: #0595e5;
495
+
496
+ --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
497
+ --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
498
+ --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
499
+ --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
500
+ --md-elevated-button-icon-color: var(--md-sys-color-on-primary);
501
+ --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
502
+ --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
503
+ --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
504
+ }
505
+ }
506
+ }
507
+
508
+ div[body] {
509
+ flex: 1;
510
+
511
+ display: flex;
512
+ flex-direction: column;
513
+ margin: var(--spacing-large, 12px);
514
+ margin-top: 0;
515
+ gap: var(--spacing-medium, 8px);
516
+ overflow: hidden;
517
+
518
+ h3 {
519
+ color: #2e79be;
520
+ font-size: 16px;
521
+ margin: 0px;
522
+ }
523
+
524
+ & > div {
525
+ display: flex;
526
+ border-radius: 5px;
527
+ }
528
+
529
+ ox-gantt {
530
+ flex: 1;
531
+ box-sizing: border-box;
532
+ overflow: hidden;
533
+
534
+ background-color: var(--md-sys-color-primary-container);
535
+ color: var(--md-sys-color-on-primary-container);
536
+ }
537
+
538
+ div[select-container] {
539
+ gap: var(--spacing-medium, 8px);
540
+
541
+ div[date] {
542
+ display: flex;
543
+ align-items: center;
544
+ justify-content: space-between;
545
+ background-color: #2ea4df1a;
546
+ border: 1px solid #2ea4df33;
547
+ border-radius: 5px;
548
+ gap: var(--spacing-medium, 8px);
549
+ padding: 12px 36px 12px 15px;
550
+
551
+ span[name] {
552
+ font-size: 16px;
553
+ font-weight: bold;
554
+ }
555
+
556
+ input[type='date'] {
557
+ border: 1px solid rgba(51, 51, 51, 0.2);
558
+ padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
559
+ border-radius: 5px;
560
+ }
561
+ }
562
+
563
+ div[construction-list-container] {
564
+ flex: 1;
565
+ display: flex;
566
+ border-radius: 5px;
567
+ border: 1px solid #cccccc80;
568
+ background-color: #fff;
569
+ padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);
570
+ gap: var(--spacing-medium, 8px);
571
+ overflow-x: auto;
572
+
573
+ md-outlined-button {
574
+ --md-outlined-button-container-height: 30px;
575
+ --md-outlined-button-trailing-space: var(--spacing-medium, 8px);
576
+ --md-outlined-button-leading-space: var(--spacing-medium, 8px);
577
+ --md-outlined-button-label-text-color: #586878;
578
+ --md-sys-color-outline: rgba(51, 51, 51, 0.2);
579
+ box-shadow: 1px 1px 1px #0000001a;
580
+ padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);
581
+ font-weight: 700;
582
+
583
+ &[selected] {
584
+ --md-outlined-button-label-text-color: #0595e5 !important;
585
+ --md-sys-color-outline: #0595e5 !important;
586
+ background-color: #0595e51a !important;
587
+ }
588
+
589
+ &[pass] {
590
+ --md-outlined-button-label-text-color: #4bbb4a;
591
+ --md-sys-color-outline: #4bbb4a;
592
+ background-color: #4bbb4a1a;
593
+ }
594
+ &[fail] {
595
+ --md-outlined-button-label-text-color: #ff4444;
596
+ --md-sys-color-outline: #ff4444;
597
+ background-color: #ff44441a;
598
+ }
599
+ }
600
+
601
+ div[icon-container] {
602
+ display: flex;
603
+ align-items: center;
604
+ gap: 4px;
605
+
606
+ md-icon[request],
607
+ md-icon[pass],
608
+ md-icon[fail] {
609
+ width: 16px;
610
+ height: 16px;
611
+ margin-right: 4px;
612
+ border-radius: 3px;
613
+ font-size: 14px;
614
+ font-weight: 700;
615
+ color: #fff;
616
+ }
617
+ md-icon[request] {
618
+ background-color: #4e5055;
619
+ }
620
+ md-icon[pass] {
621
+ background-color: #4bbb4a;
622
+ }
623
+ md-icon[fail] {
624
+ background-color: #ff4444;
625
+ }
626
+ }
627
+ }
628
+ }
629
+ }
630
+ `
631
+ ];
632
+ __decorate([
633
+ state(),
634
+ __metadata("design:type", String)
635
+ ], ProjectTask.prototype, "projectId", void 0);
636
+ __decorate([
637
+ state(),
638
+ __metadata("design:type", Object)
639
+ ], ProjectTask.prototype, "project", void 0);
640
+ __decorate([
641
+ state(),
642
+ __metadata("design:type", Number)
643
+ ], ProjectTask.prototype, "selectedBuildingIdx", void 0);
644
+ __decorate([
645
+ state(),
646
+ __metadata("design:type", Object)
647
+ ], ProjectTask.prototype, "tasks", void 0);
648
+ __decorate([
649
+ state(),
650
+ __metadata("design:type", Object)
651
+ ], ProjectTask.prototype, "constructionTypeList", void 0);
652
+ __decorate([
653
+ state(),
654
+ __metadata("design:type", Object)
655
+ ], ProjectTask.prototype, "selectedChecklist", void 0);
656
+ __decorate([
657
+ state(),
658
+ __metadata("design:type", String)
659
+ ], ProjectTask.prototype, "selectedConstructionTypeId", void 0);
660
+ __decorate([
661
+ state(),
662
+ __metadata("design:type", Object)
663
+ ], ProjectTask.prototype, "fromDate", void 0);
664
+ __decorate([
665
+ state(),
666
+ __metadata("design:type", Object)
667
+ ], ProjectTask.prototype, "toDate", void 0);
668
+ __decorate([
669
+ state(),
670
+ __metadata("design:type", Object)
671
+ ], ProjectTask.prototype, "selectedFromDate", void 0);
672
+ __decorate([
673
+ state(),
674
+ __metadata("design:type", Object)
675
+ ], ProjectTask.prototype, "selectedToDate", void 0);
676
+ __decorate([
677
+ query('input[name="startDate"]'),
678
+ __metadata("design:type", HTMLInputElement)
679
+ ], ProjectTask.prototype, "inputStartDate", void 0);
680
+ __decorate([
681
+ query('input[name="endDate"]'),
682
+ __metadata("design:type", HTMLInputElement)
683
+ ], ProjectTask.prototype, "inputEndDate", void 0);
684
+ ProjectTask = __decorate([
685
+ customElement('project-task')
686
+ ], ProjectTask);
687
+ export { ProjectTask };
688
+ //# sourceMappingURL=project-task.js.map