@dssp/project 1.0.0-alpha.5 → 1.0.0-alpha.51

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 (114) 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/lib/waether.d.ts +2 -1
  11. package/dist-client/pages/lib/waether.js +7 -3
  12. package/dist-client/pages/lib/waether.js.map +1 -1
  13. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  14. package/dist-client/pages/project/component/pagenation.js +142 -0
  15. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  16. package/dist-client/pages/project/component/project-update-header.js +26 -3
  17. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  18. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.d.ts +1 -0
  19. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +309 -0
  20. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  21. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.d.ts +1 -0
  22. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +357 -0
  23. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  24. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.d.ts +1 -0
  25. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +681 -0
  26. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  27. package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +32 -0
  28. package/dist-client/pages/project/popup/checklist/task-checklist-view.js +621 -0
  29. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  30. package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
  31. package/dist-client/pages/project/popup/popup-plan-export.js +242 -0
  32. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
  33. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +3 -0
  34. package/dist-client/pages/project/popup/popup-plan-upload.js +130 -4
  35. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -1
  36. package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
  37. package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
  38. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  39. package/dist-client/pages/project/project-completed-list.d.ts +5 -0
  40. package/dist-client/pages/project/project-completed-list.js +32 -3
  41. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  42. package/dist-client/pages/project/project-detail.d.ts +2 -1
  43. package/dist-client/pages/project/project-detail.js +316 -97
  44. package/dist-client/pages/project/project-detail.js.map +1 -1
  45. package/dist-client/pages/project/project-list.d.ts +53 -0
  46. package/dist-client/pages/project/project-list.js +72 -3
  47. package/dist-client/pages/project/project-list.js.map +1 -1
  48. package/dist-client/pages/project/project-plan-management.js +29 -13
  49. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  50. package/dist-client/pages/project/project-setting-list.d.ts +5 -0
  51. package/dist-client/pages/project/project-setting-list.js +32 -3
  52. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  53. package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
  54. package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
  55. package/dist-client/pages/project/project-task-list.js.map +1 -0
  56. package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -4
  57. package/dist-client/pages/project/project-task.js +686 -0
  58. package/dist-client/pages/project/project-task.js.map +1 -0
  59. package/dist-client/pages/project/project-update.d.ts +1 -0
  60. package/dist-client/pages/project/project-update.js +346 -42
  61. package/dist-client/pages/project/project-update.js.map +1 -1
  62. package/dist-client/route.d.ts +1 -1
  63. package/dist-client/route.js +4 -4
  64. package/dist-client/route.js.map +1 -1
  65. package/dist-client/tsconfig.tsbuildinfo +1 -1
  66. package/dist-server/controllers/parse-excel.js.map +1 -1
  67. package/dist-server/service/index.d.ts +2 -2
  68. package/dist-server/service/index.js +5 -2
  69. package/dist-server/service/index.js.map +1 -1
  70. package/dist-server/service/project/project-mutation.d.ts +1 -0
  71. package/dist-server/service/project/project-mutation.js +107 -4
  72. package/dist-server/service/project/project-mutation.js.map +1 -1
  73. package/dist-server/service/project/project-query.d.ts +3 -0
  74. package/dist-server/service/project/project-query.js +52 -0
  75. package/dist-server/service/project/project-query.js.map +1 -1
  76. package/dist-server/service/project/project-type.d.ts +6 -0
  77. package/dist-server/service/project/project-type.js +24 -2
  78. package/dist-server/service/project/project-type.js.map +1 -1
  79. package/dist-server/service/project/project.d.ts +14 -1
  80. package/dist-server/service/project/project.js +49 -2
  81. package/dist-server/service/project/project.js.map +1 -1
  82. package/dist-server/service/task/task-query.d.ts +2 -0
  83. package/dist-server/service/task/task-query.js +11 -0
  84. package/dist-server/service/task/task-query.js.map +1 -1
  85. package/dist-server/service/task/task.d.ts +2 -0
  86. package/dist-server/service/task/task.js +6 -0
  87. package/dist-server/service/task/task.js.map +1 -1
  88. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  89. package/dist-server/service/task-checklist-binding/index.js +9 -0
  90. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  91. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  92. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +186 -0
  93. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  94. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  95. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  96. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  97. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  98. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  99. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  100. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  101. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  102. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  103. package/dist-server/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +15 -12
  105. package/things-factory.config.js +3 -3
  106. package/translations/en.json +10 -9
  107. package/translations/ja.json +15 -1
  108. package/translations/ko.json +3 -0
  109. package/translations/ms.json +15 -1
  110. package/translations/zh.json +15 -1
  111. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
  112. package/dist-client/pages/project/project-schedule-list.js.map +0 -1
  113. package/dist-client/pages/project/project-schedule.js +0 -407
  114. package/dist-client/pages/project/project-schedule.js.map +0 -1
@@ -9,6 +9,7 @@ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
9
9
  import { client } from '@operato/graphql';
10
10
  import { notify } from '@operato/layout';
11
11
  import gql from 'graphql-tag';
12
+ import { SITE_TYPE_DISPLAY } from './project-list';
12
13
  import '../lib/select2-component';
13
14
  import './component/project-update-header';
14
15
  let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
@@ -16,6 +17,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
16
17
  super(...arguments);
17
18
  this.defaultProject = {
18
19
  name: '',
20
+ documentNaming: '',
19
21
  buildingComplex: {
20
22
  address: '',
21
23
  area: 0,
@@ -41,7 +43,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
41
43
  };
42
44
  }
43
45
  render() {
44
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30;
46
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50;
45
47
  return html `
46
48
  <project-update-header .projectId=${this.project.id || ''} title="프로젝트 정보 관리" @custom-click=${this._saveProject}>
47
49
  </project-update-header>
@@ -61,6 +63,25 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
61
63
  ></md-outlined-text-field>
62
64
  </span>
63
65
  </div>
66
+ <div row>
67
+ <span>프로젝트 문서 네이밍</span>
68
+ <span>
69
+ <md-outlined-text-field
70
+ type="text"
71
+ name="documentNaming"
72
+ project
73
+ .value=${this.project.documentNaming || ''}
74
+ @input=${this._onInputChange}
75
+ placeholder="프로젝트 문서 네이밍"
76
+ ></md-outlined-text-field>
77
+ </span>
78
+ </div>
79
+ <div row>
80
+ <span></span>
81
+ <span>
82
+ <div document-preview>📄 문서 생성 예시: <br />${this.project.documentNaming} 검측 제01-00001호</div>
83
+ </span>
84
+ </div>
64
85
  <div row>
65
86
  <span>프로젝트 주소</span>
66
87
  <span>
@@ -100,7 +121,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
100
121
  </span>
101
122
  </div>
102
123
  <div row>
103
- <span>면적</span>
124
+ <span>연 면적</span>
104
125
  <span align-end
105
126
  ><md-outlined-text-field
106
127
  type="text"
@@ -109,10 +130,56 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
109
130
  building-complex
110
131
  .value=${((_l = (_k = (_j = this.project) === null || _j === void 0 ? void 0 : _j.buildingComplex) === null || _k === void 0 ? void 0 : _k.area) === null || _l === void 0 ? void 0 : _l.toString()) || ''}
111
132
  @input=${this._onInputChange}
133
+ suffix-text="㎡"
112
134
  ></md-outlined-text-field>
113
- ㎡</span
114
- >
135
+ </span>
115
136
  </div>
137
+
138
+ <div row>
139
+ <span>건폐율</span>
140
+ <span align-end>
141
+ <md-outlined-text-field
142
+ type="text"
143
+ name="coverageRatio"
144
+ numeric
145
+ building-complex
146
+ .value=${((_p = (_o = (_m = this.project) === null || _m === void 0 ? void 0 : _m.buildingComplex) === null || _o === void 0 ? void 0 : _o.coverageRatio) === null || _p === void 0 ? void 0 : _p.toString()) || ''}
147
+ @input=${this._onInputChange}
148
+ suffix-text="%"
149
+ ></md-outlined-text-field>
150
+ </span>
151
+ </div>
152
+ <div row>
153
+ <span>용적률</span>
154
+ <span align-end>
155
+ <md-outlined-text-field
156
+ type="text"
157
+ name="floorAreaRatio"
158
+ numeric
159
+ building-complex
160
+ .value=${((_s = (_r = (_q = this.project) === null || _q === void 0 ? void 0 : _q.buildingComplex) === null || _r === void 0 ? void 0 : _r.floorAreaRatio) === null || _s === void 0 ? void 0 : _s.toString()) || ''}
161
+ @input=${this._onInputChange}
162
+ suffix-text="%"
163
+ ></md-outlined-text-field>
164
+ </span>
165
+ </div>
166
+
167
+ <div row>
168
+ <span>현장유형</span>
169
+ <span
170
+ ><md-filled-select name="siteType" building-complex @change=${this._onInputChange}>
171
+ ${Object.entries(SITE_TYPE_DISPLAY).map(([key, display]) => {
172
+ var _a, _b;
173
+ return html `
174
+ <md-select-option ?selected=${((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.siteType) === key} .value=${key}>
175
+ <div slot="headline">${display}</div>
176
+ </md-select-option>
177
+ `;
178
+ })}
179
+ </md-filled-select>
180
+ </span>
181
+ </div>
182
+
116
183
  <div row>
117
184
  <span>착공일정 ~ 준공일정</span>
118
185
  <span
@@ -142,7 +209,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
142
209
  type="text"
143
210
  name="clientCompany"
144
211
  building-complex
145
- .value=${((_o = (_m = this.project) === null || _m === void 0 ? void 0 : _m.buildingComplex) === null || _o === void 0 ? void 0 : _o.clientCompany) || ''}
212
+ .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.clientCompany) || ''}
146
213
  @input=${this._onInputChange}
147
214
  ></md-outlined-text-field>
148
215
  </span>
@@ -154,7 +221,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
154
221
  type="text"
155
222
  name="constructionCompany"
156
223
  building-complex
157
- .value=${((_q = (_p = this.project) === null || _p === void 0 ? void 0 : _p.buildingComplex) === null || _q === void 0 ? void 0 : _q.constructionCompany) || ''}
224
+ .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionCompany) || ''}
158
225
  @input=${this._onInputChange}
159
226
  ></md-outlined-text-field>
160
227
  </span>
@@ -166,7 +233,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
166
233
  type="text"
167
234
  name="designCompany"
168
235
  building-complex
169
- .value=${((_s = (_r = this.project) === null || _r === void 0 ? void 0 : _r.buildingComplex) === null || _s === void 0 ? void 0 : _s.designCompany) || ''}
236
+ .value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.buildingComplex) === null || _y === void 0 ? void 0 : _y.designCompany) || ''}
170
237
  @input=${this._onInputChange}
171
238
  ></md-outlined-text-field>
172
239
  </span>
@@ -178,7 +245,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
178
245
  type="text"
179
246
  name="supervisoryCompany"
180
247
  building-complex
181
- .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.supervisoryCompany) || ''}
248
+ .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.supervisoryCompany) || ''}
182
249
  @input=${this._onInputChange}
183
250
  ></md-outlined-text-field>
184
251
  </span>
@@ -190,17 +257,30 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
190
257
  type="text"
191
258
  name="constructionType"
192
259
  building-complex
193
- .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionType) || ''}
260
+ .value=${((_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionType) || ''}
194
261
  @input=${this._onInputChange}
195
262
  ></md-outlined-text-field>
196
263
  </span>
197
264
  </div>
265
+ <div row>
266
+ <span>구조 유형</span>
267
+ <span
268
+ ><md-outlined-text-field
269
+ type="text"
270
+ name="structureType"
271
+ building-complex
272
+ .value=${((_4 = (_3 = this.project) === null || _3 === void 0 ? void 0 : _3.buildingComplex) === null || _4 === void 0 ? void 0 : _4.structureType) || ''}
273
+ @input=${this._onInputChange}
274
+ ></md-outlined-text-field>
275
+ </span>
276
+ </div>
277
+
198
278
  <div row>
199
279
  <span>대표사진 업로드</span>
200
280
  <span>
201
281
  <ox-input-image
202
282
  name="mainPhoto"
203
- value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.mainPhoto) === null || _y === void 0 ? void 0 : _y.fullpath) || ''}
283
+ value=${((_6 = (_5 = this.project) === null || _5 === void 0 ? void 0 : _5.mainPhoto) === null || _6 === void 0 ? void 0 : _6.fullpath) || ''}
204
284
  @change=${this.onCreateAttachment.bind(this)}
205
285
  ></ox-input-image>
206
286
  </span>
@@ -212,7 +292,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
212
292
  name="drawing"
213
293
  label=" "
214
294
  description="IFC 업로드"
215
- .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.drawing) || ''}
295
+ .value=${((_8 = (_7 = this.project) === null || _7 === void 0 ? void 0 : _7.buildingComplex) === null || _8 === void 0 ? void 0 : _8.drawing) || ''}
216
296
  @change=${this.onCreateAttachment.bind(this)}
217
297
  ></ox-input-file>
218
298
  </span>
@@ -225,8 +305,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
225
305
  name="constructionCost"
226
306
  numeric
227
307
  building-complex
228
- .value=${((_3 = (_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionCost) === null || _3 === void 0 ? void 0 : _3.toString()) || ''}
308
+ .value=${((_11 = (_10 = (_9 = this.project) === null || _9 === void 0 ? void 0 : _9.buildingComplex) === null || _10 === void 0 ? void 0 : _10.constructionCost) === null || _11 === void 0 ? void 0 : _11.toString()) || ''}
309
+ @input=${this._onInputChange}
310
+ suffix-text="원"
311
+ ></md-outlined-text-field>
312
+ </span>
313
+ </div>
314
+ <div row>
315
+ <span>투입 인력</span>
316
+ <span
317
+ ><md-outlined-text-field
318
+ type="text"
319
+ name="workerCount"
320
+ numeric
321
+ building-complex
322
+ .value=${((_14 = (_13 = (_12 = this.project) === null || _12 === void 0 ? void 0 : _12.buildingComplex) === null || _13 === void 0 ? void 0 : _13.workerCount) === null || _14 === void 0 ? void 0 : _14.toString()) || ''}
229
323
  @input=${this._onInputChange}
324
+ suffix-text="명"
230
325
  ></md-outlined-text-field>
231
326
  </span>
232
327
  </div>
@@ -237,7 +332,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
237
332
  type="textarea"
238
333
  name="etc"
239
334
  building-complex
240
- .value=${((_5 = (_4 = this.project) === null || _4 === void 0 ? void 0 : _4.buildingComplex) === null || _5 === void 0 ? void 0 : _5.etc) || ''}
335
+ .value=${((_16 = (_15 = this.project) === null || _15 === void 0 ? void 0 : _15.buildingComplex) === null || _16 === void 0 ? void 0 : _16.etc) || ''}
241
336
  @input=${this._onInputChange}
242
337
  ></md-outlined-text-field>
243
338
  </span>
@@ -249,7 +344,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
249
344
  placeholder="총괄 시공 관리자 리스트"
250
345
  name="overallConstructorEmails"
251
346
  .options=${this.overallConstructorList}
252
- .selectedValues=${((_7 = (_6 = this.project) === null || _6 === void 0 ? void 0 : _6.buildingComplex) === null || _7 === void 0 ? void 0 : _7.overallConstructorEmails) || []}
347
+ .selectedValues=${((_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.overallConstructorEmails) || []}
253
348
  @selection-changed=${this._handleSelectionChange}
254
349
  ></select2-component>
255
350
  </span>
@@ -261,7 +356,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
261
356
  placeholder="공종별 시공 관리자 리스트"
262
357
  name="taskConstructorEmails"
263
358
  .options=${this.taskConstructorList}
264
- .selectedValues=${((_9 = (_8 = this.project) === null || _8 === void 0 ? void 0 : _8.buildingComplex) === null || _9 === void 0 ? void 0 : _9.taskConstructorEmails) || []}
359
+ .selectedValues=${((_20 = (_19 = this.project) === null || _19 === void 0 ? void 0 : _19.buildingComplex) === null || _20 === void 0 ? void 0 : _20.taskConstructorEmails) || []}
265
360
  @selection-changed=${this._handleSelectionChange}
266
361
  ></select2-component>
267
362
  </span>
@@ -273,7 +368,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
273
368
  placeholder="총괄 감리 책임자 리스트"
274
369
  name="overallSupervisoryEmails"
275
370
  .options=${this.overallSupervisoryList}
276
- .selectedValues=${((_11 = (_10 = this.project) === null || _10 === void 0 ? void 0 : _10.buildingComplex) === null || _11 === void 0 ? void 0 : _11.overallSupervisoryEmails) || []}
371
+ .selectedValues=${((_22 = (_21 = this.project) === null || _21 === void 0 ? void 0 : _21.buildingComplex) === null || _22 === void 0 ? void 0 : _22.overallSupervisoryEmails) || []}
277
372
  @selection-changed=${this._handleSelectionChange}
278
373
  ></select2-component>
279
374
  </span>
@@ -285,7 +380,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
285
380
  placeholder="공종별 감리 책임자 리스트"
286
381
  name="taskSupervisoryEmails"
287
382
  .options=${this.taskSupervisoryList}
288
- .selectedValues=${((_13 = (_12 = this.project) === null || _12 === void 0 ? void 0 : _12.buildingComplex) === null || _13 === void 0 ? void 0 : _13.taskSupervisoryEmails) || []}
383
+ .selectedValues=${((_24 = (_23 = this.project) === null || _23 === void 0 ? void 0 : _23.buildingComplex) === null || _24 === void 0 ? void 0 : _24.taskSupervisoryEmails) || []}
289
384
  @selection-changed=${this._handleSelectionChange}
290
385
  ></select2-component
291
386
  ></span>
@@ -303,7 +398,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
303
398
  numeric
304
399
  building-complex
305
400
  name="householdCount"
306
- .value=${((_16 = (_15 = (_14 = this.project) === null || _14 === void 0 ? void 0 : _14.buildingComplex) === null || _15 === void 0 ? void 0 : _15.householdCount) === null || _16 === void 0 ? void 0 : _16.toString()) || ''}
401
+ .value=${((_27 = (_26 = (_25 = this.project) === null || _25 === void 0 ? void 0 : _25.buildingComplex) === null || _26 === void 0 ? void 0 : _26.householdCount) === null || _27 === void 0 ? void 0 : _27.toString()) || ''}
307
402
  @input=${this._onInputChange}
308
403
  ></md-outlined-text-field>
309
404
  </span>
@@ -316,7 +411,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
316
411
  numeric
317
412
  building-complex
318
413
  name="buildingCount"
319
- value=${((_19 = (_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.buildingCount) === null || _19 === void 0 ? void 0 : _19.toString()) || ''}
414
+ value=${((_30 = (_29 = (_28 = this.project) === null || _28 === void 0 ? void 0 : _28.buildingComplex) === null || _29 === void 0 ? void 0 : _29.buildingCount) === null || _30 === void 0 ? void 0 : _30.toString()) || ''}
320
415
  @input=${this._onInputChange}
321
416
  ></md-outlined-text-field>
322
417
  <md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>
@@ -325,8 +420,8 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
325
420
  <hr />
326
421
  <div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>
327
422
  <div separate-container>
328
- ${(_22 = (_21 = (_20 = this.project) === null || _20 === void 0 ? void 0 : _20.buildingComplex) === null || _21 === void 0 ? void 0 : _21.buildings) === null || _22 === void 0 ? void 0 : _22.map((building, idx) => {
329
- var _a;
423
+ ${(_33 = (_32 = (_31 = this.project) === null || _31 === void 0 ? void 0 : _31.buildingComplex) === null || _32 === void 0 ? void 0 : _32.buildings) === null || _33 === void 0 ? void 0 : _33.map((building, idx) => {
424
+ var _a, _b;
330
425
  return html `
331
426
  <div>
332
427
  <span>
@@ -339,7 +434,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
339
434
  placeholder="ooo동"
340
435
  ></md-outlined-text-field>
341
436
  </span>
342
- <span>
437
+ <span floor-row>
343
438
  <span floor-title>층수</span>
344
439
  <md-outlined-text-field
345
440
  type="text"
@@ -351,6 +446,31 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
351
446
  placeholder="oo"
352
447
  ></md-outlined-text-field>
353
448
  </span>
449
+
450
+ <div basement-container>
451
+ <div
452
+ basement-checkbox
453
+ name="hasBasement"
454
+ ?checked=${(building === null || building === void 0 ? void 0 : building.hasBasement) || false}
455
+ @click=${() => this._toggleBasement(idx)}
456
+ >
457
+ <md-icon>format_bold</md-icon>
458
+ </div>
459
+ ${(building === null || building === void 0 ? void 0 : building.hasBasement)
460
+ ? html `
461
+ <md-outlined-text-field
462
+ basement-floor
463
+ type="text"
464
+ numeric
465
+ building
466
+ name="basementFloorCount"
467
+ .value=${((_b = building === null || building === void 0 ? void 0 : building.basementFloorCount) === null || _b === void 0 ? void 0 : _b.toString()) || ''}
468
+ @input=${e => this._onInputChange(e, idx)}
469
+ placeholder="지하층수"
470
+ ></md-outlined-text-field>
471
+ `
472
+ : ''}
473
+ </div>
354
474
  </div>
355
475
  `;
356
476
  })}
@@ -368,7 +488,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
368
488
  numeric
369
489
  project
370
490
  name="totalProgress"
371
- .value=${((_23 = this.project.totalProgress) === null || _23 === void 0 ? void 0 : _23.toString()) || ''}
491
+ .value=${((_34 = this.project.totalProgress) === null || _34 === void 0 ? void 0 : _34.toString()) || ''}
372
492
  @input=${this._onInputChange}
373
493
  suffix-text="%"
374
494
  ></md-outlined-text-field>
@@ -382,7 +502,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
382
502
  numeric
383
503
  project
384
504
  name="inspPassRate"
385
- .value=${((_24 = this.project.inspPassRate) === null || _24 === void 0 ? void 0 : _24.toString()) || ''}
505
+ .value=${((_35 = this.project.inspPassRate) === null || _35 === void 0 ? void 0 : _35.toString()) || ''}
386
506
  @input=${this._onInputChange}
387
507
  suffix-text="%"
388
508
  ></md-outlined-text-field>
@@ -398,7 +518,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
398
518
  numeric
399
519
  project
400
520
  name="weeklyProgress"
401
- .value=${((_25 = this.project.weeklyProgress) === null || _25 === void 0 ? void 0 : _25.toString()) || ''}
521
+ .value=${((_36 = this.project.weeklyProgress) === null || _36 === void 0 ? void 0 : _36.toString()) || ''}
402
522
  @input=${this._onInputChange}
403
523
  suffix-text="%"
404
524
  ></md-outlined-text-field>
@@ -412,7 +532,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
412
532
  numeric
413
533
  project
414
534
  name="robotProgressRate"
415
- .value=${((_26 = this.project.robotProgressRate) === null || _26 === void 0 ? void 0 : _26.toString()) || ''}
535
+ .value=${((_37 = this.project.robotProgressRate) === null || _37 === void 0 ? void 0 : _37.toString()) || ''}
416
536
  @input=${this._onInputChange}
417
537
  suffix-text="%"
418
538
  ></md-outlined-text-field>
@@ -428,7 +548,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
428
548
  numeric
429
549
  project
430
550
  name="kpi"
431
- .value=${((_27 = this.project.kpi) === null || _27 === void 0 ? void 0 : _27.toString()) || ''}
551
+ .value=${((_38 = this.project.kpi) === null || _38 === void 0 ? void 0 : _38.toString()) || ''}
432
552
  @input=${this._onInputChange}
433
553
  suffix-text="%"
434
554
  ></md-outlined-text-field>
@@ -442,7 +562,72 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
442
562
  numeric
443
563
  project
444
564
  name="structuralSafetyRate"
445
- .value=${((_28 = this.project.structuralSafetyRate) === null || _28 === void 0 ? void 0 : _28.toString()) || ''}
565
+ .value=${((_39 = this.project.structuralSafetyRate) === null || _39 === void 0 ? void 0 : _39.toString()) || ''}
566
+ @input=${this._onInputChange}
567
+ suffix-text="%"
568
+ ></md-outlined-text-field>
569
+ </span>
570
+ </div>
571
+ </div>
572
+
573
+ <div row separate-container>
574
+ <div>
575
+ <span>로봇 작업 대수</span>
576
+ <span
577
+ ><md-outlined-text-field
578
+ type="text"
579
+ numeric
580
+ project
581
+ name="robotCount"
582
+ .value=${((_40 = this.project.robotCount) === null || _40 === void 0 ? void 0 : _40.toString()) || ''}
583
+ @input=${this._onInputChange}
584
+ ></md-outlined-text-field>
585
+ </span>
586
+ </div>
587
+ </div>
588
+
589
+ <hr />
590
+
591
+ <div row separate-container>
592
+ <div>
593
+ <span>설계 변경 횟수</span>
594
+ <span
595
+ ><md-outlined-text-field
596
+ type="text"
597
+ numeric
598
+ building-complex
599
+ name="designChangeCount"
600
+ .value=${((_42 = (_41 = this.project.buildingComplex) === null || _41 === void 0 ? void 0 : _41.designChangeCount) === null || _42 === void 0 ? void 0 : _42.toString()) || ''}
601
+ @input=${this._onInputChange}
602
+ ></md-outlined-text-field>
603
+ </span>
604
+ </div>
605
+ <div>
606
+ <span>계획 공정률</span>
607
+ <span
608
+ ><md-outlined-text-field
609
+ type="text"
610
+ numeric
611
+ building-complex
612
+ name="plannedProgress"
613
+ .value=${((_44 = (_43 = this.project.buildingComplex) === null || _43 === void 0 ? void 0 : _43.plannedProgress) === null || _44 === void 0 ? void 0 : _44.toString()) || ''}
614
+ @input=${this._onInputChange}
615
+ suffix-text="%"
616
+ ></md-outlined-text-field>
617
+ </span>
618
+ </div>
619
+ </div>
620
+
621
+ <div row separate-container>
622
+ <div>
623
+ <span>실제 공정률</span>
624
+ <span
625
+ ><md-outlined-text-field
626
+ type="text"
627
+ numeric
628
+ building-complex
629
+ name="actualProgress"
630
+ .value=${((_46 = (_45 = this.project.buildingComplex) === null || _45 === void 0 ? void 0 : _45.actualProgress) === null || _46 === void 0 ? void 0 : _46.toString()) || ''}
446
631
  @input=${this._onInputChange}
447
632
  suffix-text="%"
448
633
  ></md-outlined-text-field>
@@ -460,7 +645,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
460
645
  type="textarea"
461
646
  name="notice"
462
647
  building-complex
463
- .value=${((_30 = (_29 = this.project) === null || _29 === void 0 ? void 0 : _29.buildingComplex) === null || _30 === void 0 ? void 0 : _30.notice) || ''}
648
+ .value=${((_48 = (_47 = this.project) === null || _47 === void 0 ? void 0 : _47.buildingComplex) === null || _48 === void 0 ? void 0 : _48.notice) || ''}
649
+ @input=${this._onInputChange}
650
+ ></md-outlined-text-field>
651
+ </span>
652
+ </div>
653
+ </div>
654
+
655
+ <div>
656
+ <h3>Virtual Tour Link</h3>
657
+ <div>
658
+ <span></span>
659
+ <span>
660
+ <md-outlined-text-field
661
+ type="text"
662
+ name="virtualTourLink"
663
+ building-complex
664
+ .value=${((_50 = (_49 = this.project) === null || _49 === void 0 ? void 0 : _49.buildingComplex) === null || _50 === void 0 ? void 0 : _50.virtualTourLink) || ''}
464
665
  @input=${this._onInputChange}
465
666
  ></md-outlined-text-field>
466
667
  </span>
@@ -485,6 +686,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
485
686
  project(id: $id) {
486
687
  id
487
688
  name
689
+ documentNaming
488
690
  startDate
489
691
  endDate
490
692
  mainPhoto {
@@ -496,12 +698,21 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
496
698
  inspPassRate
497
699
  robotProgressRate
498
700
  structuralSafetyRate
701
+ robotCount
499
702
  buildingComplex {
500
703
  id
501
704
  address
705
+ siteType
502
706
  latitude
503
707
  longitude
504
708
  area
709
+ coverageRatio
710
+ floorAreaRatio
711
+ structureType
712
+ workerCount
713
+ designChangeCount
714
+ plannedProgress
715
+ actualProgress
505
716
  clientCompany
506
717
  constructionCompany
507
718
  supervisoryCompany
@@ -520,10 +731,13 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
520
731
  taskConstructorEmails
521
732
  overallSupervisoryEmails
522
733
  taskSupervisoryEmails
734
+ virtualTourLink
523
735
  buildings {
524
736
  id
525
737
  name
526
738
  floorCount
739
+ hasBasement
740
+ basementFloorCount
527
741
  }
528
742
  }
529
743
  }
@@ -626,6 +840,10 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
626
840
  }
627
841
  if (target.hasAttribute('project')) {
628
842
  this.project[target.name] = inputVal;
843
+ // documentNaming 필드가 변경되면 실시간으로 미리보기 업데이트
844
+ if (target.name === 'documentNaming') {
845
+ this.requestUpdate();
846
+ }
629
847
  }
630
848
  else if (target.hasAttribute('building-complex')) {
631
849
  this.project.buildingComplex[target.name] = inputVal;
@@ -650,6 +868,16 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
650
868
  const selectedValues = e.detail.selectedValues;
651
869
  this.project.buildingComplex[name] = selectedValues;
652
870
  }
871
+ _toggleBasement(idx) {
872
+ const building = this.project.buildingComplex.buildings[idx];
873
+ building.hasBasement = !building.hasBasement;
874
+ // 층 수가 0이거나 체크 해제시 지하층수 초기화 (플레이스 홀더 나오게 하기 위함)
875
+ if (building.basementFloorCount == 0 || !building.hasBasement) {
876
+ building.basementFloorCount = undefined;
877
+ }
878
+ this.project.buildingComplex.buildings[idx]['hasBasement'] = building.hasBasement;
879
+ this.requestUpdate();
880
+ }
653
881
  };
654
882
  ProjectUpdate.styles = [
655
883
  css `
@@ -670,7 +898,7 @@ ProjectUpdate.styles = [
670
898
  width: 100%;
671
899
 
672
900
  --md-outlined-text-field-container-shape: 5px;
673
- --md-outlined-text-field-outline-color: rgba(51,51,51,.20);
901
+ --md-outlined-text-field-outline-color: rgba(51, 51, 51, 0.2);
674
902
  --md-outlined-text-field-focus-outline-color: #1f7fd9;
675
903
  --md-outlined-text-field-focus-outline-width: 1px;
676
904
  --md-sys-color-primary: #586878;
@@ -681,11 +909,18 @@ ProjectUpdate.styles = [
681
909
  --md-outlined-field-trailing-space: var(--spacing-medium, 8px);
682
910
  }
683
911
  select2-component {
684
- width:100%;
912
+ width: 100%;
913
+ }
914
+ md-filled-select {
915
+ width: 100%;
916
+ --md-filled-select-text-field-container-color: transparent;
917
+ --md-filled-select-text-field-active-indicator-color: #999;
918
+ --md-filled-select-text-field-input-text-size: 14px;
919
+ --md-filled-select-text-field-input-text-line-height: 6px;
685
920
  }
686
- input[type="date"] {
687
- border:1px solid rgba(51,51,51,.20);
688
- padding:var(--spacing-small, 4px) var(--spacing-medium, 8px);
921
+ input[type='date'] {
922
+ border: 1px solid rgba(51, 51, 51, 0.2);
923
+ padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
689
924
  border-radius: 5px;
690
925
  }
691
926
  md-outlined-text-field[type='textarea'] {
@@ -707,7 +942,7 @@ ProjectUpdate.styles = [
707
942
  div[body] {
708
943
  display: flex;
709
944
  margin: var(--spacing-large, 12px);
710
- margin-top:0;
945
+ margin-top: 0;
711
946
  gap: var(--spacing-medium, 8px);
712
947
 
713
948
  & > div {
@@ -754,6 +989,18 @@ ProjectUpdate.styles = [
754
989
  flex: 0.55;
755
990
  }
756
991
 
992
+ div[document-preview] {
993
+ width: 100%;
994
+ font-size: 12px;
995
+ color: #2e79be;
996
+ font-weight: 500;
997
+ background-color: #f8f9fa;
998
+ padding: 8px 12px;
999
+ border-radius: 4px;
1000
+ border-left: 3px solid #2e79be;
1001
+ margin-top: 4px;
1002
+ }
1003
+
757
1004
  div[detail-info] {
758
1005
  flex: 0.45;
759
1006
  padding: 0px;
@@ -780,7 +1027,7 @@ ProjectUpdate.styles = [
780
1027
  --md-elevated-button-label-text-size: 16px;
781
1028
  }
782
1029
  hr {
783
- border: 1px rgba(51,51,51,.1) dashed;
1030
+ border: 1px rgba(51, 51, 51, 0.1) dashed;
784
1031
  width: 100%;
785
1032
  margin-bottom: var(--spacing-tiny, 2px);
786
1033
  }
@@ -790,14 +1037,14 @@ ProjectUpdate.styles = [
790
1037
  margin-left: var(--spacing-small, 4px);
791
1038
  margin-bottom: var(--spacing-small, 4px);
792
1039
  }
793
-
1040
+
794
1041
  md-outlined-button {
795
1042
  min-height: 30px;
796
1043
  padding: 0 var(--spacing-large, 12px);
797
1044
  box-shadow: 1px 1px 1px #0000001a;
798
1045
  --md-outlined-button-label-text-color: #586878;
799
1046
  --md-outlined-button-label-text-weight: bold;
800
- --md-sys-color-outline: rgba(51,51,51,.20);
1047
+ --md-sys-color-outline: rgba(51, 51, 51, 0.2);
801
1048
  }
802
1049
 
803
1050
  div[row] {
@@ -812,14 +1059,22 @@ ProjectUpdate.styles = [
812
1059
  div[separate-container] {
813
1060
  display: grid;
814
1061
  grid-template-columns: repeat(2, 1fr);
815
- gap: var(--spacing-medium, 8px);
1062
+ gap: 8px 30px;
1063
+ margin-left: 15px;
816
1064
 
817
1065
  md-outlined-text-field {
818
- width: 70px;
1066
+ width: 80px;
819
1067
  }
820
1068
 
821
1069
  & > div {
822
1070
  display: flex;
1071
+ gap: 15px;
1072
+
1073
+ span[floor-row] {
1074
+ display: inline-flex;
1075
+ align-items: center;
1076
+ margin-left: 5px;
1077
+ }
823
1078
 
824
1079
  span[floor-title] {
825
1080
  min-width: 33px;
@@ -827,7 +1082,7 @@ ProjectUpdate.styles = [
827
1082
  }
828
1083
  span:first-child {
829
1084
  flex: 0.4;
830
- justify-content: end;
1085
+ justify-content: flex-start;
831
1086
  display: flex;
832
1087
  }
833
1088
  span:last-child {
@@ -837,13 +1092,62 @@ ProjectUpdate.styles = [
837
1092
  padding-left: var(--spacing-medium, 8px);
838
1093
  }
839
1094
  }
1095
+
1096
+ div[basement-container] {
1097
+ display: flex;
1098
+ align-items: center;
1099
+ gap: 4px;
1100
+
1101
+ div[basement-checkbox] {
1102
+ display: flex;
1103
+ align-items: center;
1104
+ cursor: pointer;
1105
+
1106
+ md-icon {
1107
+ --md-icon-size: 25px;
1108
+ color: #808080;
1109
+ transition: opacity 0.2s ease;
1110
+ }
1111
+
1112
+ &[disabled] {
1113
+ cursor: not-allowed;
1114
+ opacity: 0.4;
1115
+
1116
+ md-icon {
1117
+ color: #cccccc;
1118
+ }
1119
+ }
1120
+
1121
+ &[checked] md-icon {
1122
+ background-color: #2e79be;
1123
+ color: white;
1124
+ border-radius: 3px;
1125
+ }
1126
+ }
1127
+
1128
+ md-outlined-text-field[basement-floor] {
1129
+ width: 70px;
1130
+ margin-left: var(--spacing-small, 4px);
1131
+ opacity: 1;
1132
+ transition: opacity 0.2s ease;
1133
+
1134
+ &[disabled] {
1135
+ opacity: 0.4;
1136
+ pointer-events: none;
1137
+ }
1138
+ }
1139
+ }
840
1140
  }
841
1141
 
842
1142
  &[project] {
843
1143
  div[separate-container] {
1144
+ margin-left: 15px;
1145
+
844
1146
  & > div {
1147
+ align-items: center;
1148
+
845
1149
  span:first-child {
846
- flex: 0.6;
1150
+ flex: 0.4;
847
1151
  min-width: 100px;
848
1152
  }
849
1153
  span:last-child {