@dssp/project 0.0.2 → 0.0.6

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 (196) hide show
  1. package/client/pages/checklist/checklist-importer.ts +6 -8
  2. package/client/pages/checklist/checklist-list-page.ts +10 -25
  3. package/client/pages/project/popup/popup-plan-upload.ts +138 -0
  4. package/client/pages/project/{project-create-popup.ts → popup/popup-project-create.ts} +2 -3
  5. package/client/pages/project/project-detail.ts +11 -11
  6. package/client/pages/project/project-list.ts +17 -10
  7. package/client/pages/project/project-plan-management.ts +117 -39
  8. package/client/pages/project/project-schedule-list.ts +2 -0
  9. package/client/pages/project/project-schedule.ts +296 -7
  10. package/client/pages/project/project-setting-list.ts +10 -6
  11. package/client/pages/project/project-update.ts +5 -2
  12. package/client/pages/resource/construction-type-management.ts +211 -0
  13. package/client/pages/resource/manager-management.ts +202 -0
  14. package/client/pages/resource/worker-type-management.ts +226 -0
  15. package/client/pages/task/task-importer.ts +6 -8
  16. package/client/pages/task/task-list-page.ts +10 -25
  17. package/client/route.ts +8 -4
  18. package/dist-client/pages/checklist/checklist-importer.d.ts +1 -0
  19. package/dist-client/pages/checklist/checklist-importer.js +3 -2
  20. package/dist-client/pages/checklist/checklist-importer.js.map +1 -1
  21. package/dist-client/pages/checklist/checklist-list-page.d.ts +1 -0
  22. package/dist-client/pages/checklist/checklist-list-page.js +8 -16
  23. package/dist-client/pages/checklist/checklist-list-page.js.map +1 -1
  24. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +10 -0
  25. package/dist-client/pages/project/popup/popup-plan-upload.js +139 -0
  26. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -0
  27. package/dist-client/pages/project/{project-create-popup.d.ts → popup/popup-project-create.d.ts} +1 -3
  28. package/dist-client/pages/project/{project-create-popup.js → popup/popup-project-create.js} +9 -10
  29. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -0
  30. package/dist-client/pages/project/project-detail.d.ts +5 -4
  31. package/dist-client/pages/project/project-detail.js +9 -10
  32. package/dist-client/pages/project/project-detail.js.map +1 -1
  33. package/dist-client/pages/project/project-list.d.ts +12 -2
  34. package/dist-client/pages/project/project-list.js +11 -14
  35. package/dist-client/pages/project/project-list.js.map +1 -1
  36. package/dist-client/pages/project/project-plan-management.d.ts +9 -4
  37. package/dist-client/pages/project/project-plan-management.js +105 -35
  38. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  39. package/dist-client/pages/project/project-schedule-list.d.ts +1 -0
  40. package/dist-client/pages/project/project-schedule-list.js +1 -0
  41. package/dist-client/pages/project/project-schedule-list.js.map +1 -1
  42. package/dist-client/pages/project/project-schedule.d.ts +10 -3
  43. package/dist-client/pages/project/project-schedule.js +294 -7
  44. package/dist-client/pages/project/project-schedule.js.map +1 -1
  45. package/dist-client/pages/project/project-setting-list.d.ts +3 -2
  46. package/dist-client/pages/project/project-setting-list.js +9 -6
  47. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  48. package/dist-client/pages/project/project-update.d.ts +3 -2
  49. package/dist-client/pages/project/project-update.js +4 -2
  50. package/dist-client/pages/project/project-update.js.map +1 -1
  51. package/dist-client/pages/resource/construction-type-management.d.ts +22 -0
  52. package/dist-client/pages/resource/construction-type-management.js +208 -0
  53. package/dist-client/pages/resource/construction-type-management.js.map +1 -0
  54. package/dist-client/pages/resource/manager-management.d.ts +31 -0
  55. package/dist-client/pages/resource/manager-management.js +196 -0
  56. package/dist-client/pages/resource/manager-management.js.map +1 -0
  57. package/dist-client/pages/resource/worker-type-management.d.ts +28 -0
  58. package/dist-client/pages/resource/worker-type-management.js +222 -0
  59. package/dist-client/pages/resource/worker-type-management.js.map +1 -0
  60. package/dist-client/pages/task/task-importer.d.ts +1 -0
  61. package/dist-client/pages/task/task-importer.js +3 -2
  62. package/dist-client/pages/task/task-importer.js.map +1 -1
  63. package/dist-client/pages/task/task-list-page.d.ts +1 -0
  64. package/dist-client/pages/task/task-list-page.js +8 -16
  65. package/dist-client/pages/task/task-list-page.js.map +1 -1
  66. package/dist-client/route.d.ts +1 -1
  67. package/dist-client/route.js +7 -4
  68. package/dist-client/route.js.map +1 -1
  69. package/dist-client/tsconfig.tsbuildinfo +1 -1
  70. package/dist-server/controllers/index.d.ts +0 -0
  71. package/dist-server/controllers/project-to-excel.d.ts +7 -0
  72. package/dist-server/index.d.ts +2 -0
  73. package/dist-server/middlewares/index.d.ts +1 -0
  74. package/dist-server/routes.d.ts +1 -0
  75. package/dist-server/service/check-item/check-item-mutation.d.ts +10 -0
  76. package/dist-server/service/check-item/check-item-query.d.ts +11 -0
  77. package/dist-server/service/check-item/check-item-type.d.ts +18 -0
  78. package/dist-server/service/check-item/check-item.d.ts +18 -0
  79. package/dist-server/service/check-item/index.d.ts +5 -0
  80. package/dist-server/service/checklist/checklist-mutation.d.ts +10 -0
  81. package/dist-server/service/checklist/checklist-query.d.ts +11 -0
  82. package/dist-server/service/checklist/checklist-type.d.ts +18 -0
  83. package/dist-server/service/checklist/checklist.d.ts +26 -0
  84. package/dist-server/service/checklist/index.d.ts +5 -0
  85. package/dist-server/service/construction-type/construction-type-mutation.d.ts +6 -0
  86. package/dist-server/service/construction-type/construction-type-mutation.js +64 -0
  87. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -0
  88. package/dist-server/service/construction-type/construction-type-query.d.ts +11 -0
  89. package/dist-server/service/construction-type/construction-type-query.js +78 -0
  90. package/dist-server/service/construction-type/construction-type-query.js.map +1 -0
  91. package/dist-server/service/construction-type/construction-type-type.d.ts +11 -0
  92. package/dist-server/service/construction-type/construction-type-type.js +43 -0
  93. package/dist-server/service/construction-type/construction-type-type.js.map +1 -0
  94. package/dist-server/service/construction-type/construction-type.d.ts +16 -0
  95. package/dist-server/service/construction-type/construction-type.js +77 -0
  96. package/dist-server/service/construction-type/construction-type.js.map +1 -0
  97. package/dist-server/service/construction-type/index.d.ts +5 -0
  98. package/dist-server/service/construction-type/index.js +9 -0
  99. package/dist-server/service/construction-type/index.js.map +1 -0
  100. package/dist-server/service/index.d.ts +12 -0
  101. package/dist-server/service/index.js +12 -4
  102. package/dist-server/service/index.js.map +1 -1
  103. package/dist-server/service/manager/index.d.ts +5 -0
  104. package/dist-server/service/manager/index.js +9 -0
  105. package/dist-server/service/manager/index.js.map +1 -0
  106. package/dist-server/service/manager/manager-mutation.d.ts +5 -0
  107. package/dist-server/service/manager/manager-mutation.js +39 -0
  108. package/dist-server/service/manager/manager-mutation.js.map +1 -0
  109. package/dist-server/service/manager/manager-query.d.ts +4 -0
  110. package/dist-server/service/manager/manager-query.js +39 -0
  111. package/dist-server/service/manager/manager-query.js.map +1 -0
  112. package/dist-server/service/manager/manager-type.d.ts +15 -0
  113. package/dist-server/service/manager/manager-type.js +62 -0
  114. package/dist-server/service/manager/manager-type.js.map +1 -0
  115. package/dist-server/service/manager/manager.d.ts +8 -0
  116. package/dist-server/service/manager/manager.js +41 -0
  117. package/dist-server/service/manager/manager.js.map +1 -0
  118. package/dist-server/service/project/index.d.ts +7 -0
  119. package/dist-server/service/project/project-mutation.d.ts +9 -0
  120. package/dist-server/service/project/project-mutation.js +61 -55
  121. package/dist-server/service/project/project-mutation.js.map +1 -1
  122. package/dist-server/service/project/project-query.d.ts +16 -0
  123. package/dist-server/service/project/project-query.js +3 -3
  124. package/dist-server/service/project/project-query.js.map +1 -1
  125. package/dist-server/service/project/project-type.d.ts +29 -0
  126. package/dist-server/service/project/project-type.js +1 -2
  127. package/dist-server/service/project/project-type.js.map +1 -1
  128. package/dist-server/service/project/project.d.ts +35 -0
  129. package/dist-server/service/project/project.js +1 -2
  130. package/dist-server/service/project/project.js.map +1 -1
  131. package/dist-server/service/task/index.d.ts +5 -0
  132. package/dist-server/service/task/task-mutation.d.ts +10 -0
  133. package/dist-server/service/task/task-query.d.ts +11 -0
  134. package/dist-server/service/task/task-type.d.ts +18 -0
  135. package/dist-server/service/task/task.d.ts +25 -0
  136. package/dist-server/service/worker-type/index.d.ts +5 -0
  137. package/dist-server/service/worker-type/index.js +9 -0
  138. package/dist-server/service/worker-type/index.js.map +1 -0
  139. package/dist-server/service/worker-type/worker-type-mutation.d.ts +6 -0
  140. package/dist-server/service/worker-type/worker-type-mutation.js +64 -0
  141. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -0
  142. package/dist-server/service/worker-type/worker-type-query.d.ts +11 -0
  143. package/dist-server/service/{resource/resource-query.js → worker-type/worker-type-query.js} +31 -39
  144. package/dist-server/service/worker-type/worker-type-query.js.map +1 -0
  145. package/dist-server/service/worker-type/worker-type-type.d.ts +11 -0
  146. package/dist-server/service/worker-type/worker-type-type.js +43 -0
  147. package/dist-server/service/worker-type/worker-type-type.js.map +1 -0
  148. package/dist-server/service/worker-type/worker-type.d.ts +16 -0
  149. package/dist-server/service/{resource/resource.js → worker-type/worker-type.js} +35 -20
  150. package/dist-server/service/worker-type/worker-type.js.map +1 -0
  151. package/dist-server/tsconfig.tsbuildinfo +1 -1
  152. package/package.json +3 -3
  153. package/server/service/construction-type/construction-type-mutation.ts +66 -0
  154. package/server/service/construction-type/construction-type-query.ts +47 -0
  155. package/server/service/construction-type/construction-type-type.ts +26 -0
  156. package/server/service/{resource/resource.ts → construction-type/construction-type.ts} +18 -6
  157. package/server/service/construction-type/index.ts +6 -0
  158. package/server/service/index.ts +12 -4
  159. package/server/service/manager/index.ts +6 -0
  160. package/server/service/manager/manager-mutation.ts +42 -0
  161. package/server/service/manager/manager-query.ts +28 -0
  162. package/server/service/manager/manager-type.ts +40 -0
  163. package/server/service/manager/manager.ts +29 -0
  164. package/server/service/project/project-mutation.ts +101 -79
  165. package/server/service/project/project-query.ts +5 -8
  166. package/server/service/worker-type/index.ts +6 -0
  167. package/server/service/worker-type/worker-type-mutation.ts +66 -0
  168. package/server/service/worker-type/worker-type-query.ts +47 -0
  169. package/server/service/worker-type/worker-type-type.ts +26 -0
  170. package/server/service/worker-type/worker-type.ts +68 -0
  171. package/things-factory.config.js +3 -0
  172. package/client/pages/project/ox-progress-circle.ts +0 -133
  173. package/client/pages/resource/resource-importer.ts +0 -96
  174. package/client/pages/resource/resource-list-page.ts +0 -355
  175. package/dist-client/pages/project/ox-progress-circle.d.ts +0 -41
  176. package/dist-client/pages/project/ox-progress-circle.js +0 -182
  177. package/dist-client/pages/project/ox-progress-circle.js.map +0 -1
  178. package/dist-client/pages/project/project-create-popup.js.map +0 -1
  179. package/dist-client/pages/resource/resource-importer.d.ts +0 -9
  180. package/dist-client/pages/resource/resource-importer.js +0 -100
  181. package/dist-client/pages/resource/resource-importer.js.map +0 -1
  182. package/dist-client/pages/resource/resource-list-page.d.ts +0 -62
  183. package/dist-client/pages/resource/resource-list-page.js +0 -331
  184. package/dist-client/pages/resource/resource-list-page.js.map +0 -1
  185. package/dist-server/service/resource/index.js +0 -9
  186. package/dist-server/service/resource/index.js.map +0 -1
  187. package/dist-server/service/resource/resource-mutation.js +0 -129
  188. package/dist-server/service/resource/resource-mutation.js.map +0 -1
  189. package/dist-server/service/resource/resource-query.js.map +0 -1
  190. package/dist-server/service/resource/resource-type.js +0 -69
  191. package/dist-server/service/resource/resource-type.js.map +0 -1
  192. package/dist-server/service/resource/resource.js.map +0 -1
  193. package/server/service/resource/index.ts +0 -6
  194. package/server/service/resource/resource-mutation.ts +0 -139
  195. package/server/service/resource/resource-query.ts +0 -56
  196. package/server/service/resource/resource-type.ts +0 -49
@@ -1,3 +1,5 @@
1
+ import '@material/web/icon/icon.js'
2
+
1
3
  import { PageView } from '@operato/shell'
2
4
  import { css, html } from 'lit'
3
5
  import { customElement, state } from 'lit/decorators.js'
@@ -1,3 +1,9 @@
1
+ import '@material/web/icon/icon.js'
2
+ import '@material/web/button/elevated-button.js'
3
+ import '@material/web/textfield/outlined-text-field.js'
4
+ import '@material/web/button/filled-button.js'
5
+ import '@material/web/button/outlined-button.js'
6
+
1
7
  import { PageView } from '@operato/shell'
2
8
  import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'
3
9
  import { css, html } from 'lit'
@@ -8,10 +14,7 @@ import { notify } from '@operato/layout'
8
14
 
9
15
  import gql from 'graphql-tag'
10
16
  import { Building, Project } from './project-list'
11
- import '@material/web/button/elevated-button.js'
12
- import '@material/web/textfield/outlined-text-field.js'
13
- import '@material/web/button/filled-button.js'
14
- import '@material/web/button/outlined-button.js'
17
+ import '@operato/gantt/ox-gantt.js'
15
18
 
16
19
  @customElement('project-schedule')
17
20
  export class ProjectSchedule extends ScopedElementsMixin(PageView) {
@@ -93,6 +96,15 @@ export class ProjectSchedule extends ScopedElementsMixin(PageView) {
93
96
  div[chart] {
94
97
  flex: 0.7;
95
98
  background: #03a9f44d;
99
+
100
+ ox-gantt {
101
+ max-width: 91vw;
102
+ aspect-ratio: 3 / 1;
103
+ box-sizing: border-box;
104
+
105
+ background-color: var(--md-sys-color-primary-container);
106
+ color: var(--md-sys-color-on-primary-container);
107
+ }
96
108
  }
97
109
 
98
110
  div[table] {
@@ -154,6 +166,271 @@ export class ProjectSchedule extends ScopedElementsMixin(PageView) {
154
166
  @state() project: Project = { ...this.defaultProject }
155
167
  @state() selectedBuildingIdx: number = 0
156
168
 
169
+ private fromDate = '2022-12-27'
170
+ private toDate = '2024-12-31'
171
+ private timeScale = 'week-day'
172
+ private extendGridLines = false
173
+ private tasks = [
174
+ {
175
+ id: '1',
176
+ title: 'Design',
177
+ type: 'task',
178
+ // section: developmentSection,
179
+ startDate: '2023-01-01',
180
+ endDate: '2023-01-05',
181
+ progress: 60,
182
+ dependsOn: '',
183
+ length: '5d',
184
+ tags: ['active'],
185
+ children: []
186
+ },
187
+ {
188
+ id: '2',
189
+ title: 'Development',
190
+ type: 'milestone',
191
+ // section: developmentSection,
192
+ startDate: '2023-01-06',
193
+ endDate: '2023-01-06',
194
+ progress: 30,
195
+ dependsOn: '1',
196
+ length: '1d',
197
+ tags: ['milestone'],
198
+ children: []
199
+ },
200
+ {
201
+ id: '3',
202
+ title: 'Coding',
203
+ type: 'phase',
204
+ // section: developmentSection,
205
+ startDate: '2023-01-07',
206
+ endDate: '2023-01-15',
207
+ progress: 10,
208
+ dependsOn: '2',
209
+ length: '9d',
210
+ tags: ['critical'],
211
+ children: [
212
+ {
213
+ id: '3-1',
214
+ title: 'Coding-A',
215
+ type: 'task',
216
+ // section: developmentSection,
217
+ startDate: '2023-01-07',
218
+ endDate: '2023-01-10',
219
+ progress: 60,
220
+ dependsOn: '',
221
+ length: '4d',
222
+ tags: ['done'],
223
+ children: []
224
+ },
225
+ {
226
+ id: '3-2',
227
+ title: 'Coding-B',
228
+ type: 'task',
229
+ // section: developmentSection,
230
+ startDate: '2023-01-11',
231
+ endDate: '2023-01-15',
232
+ dependsOn: '3-1',
233
+ length: '5d',
234
+ tags: ['active'],
235
+ children: []
236
+ }
237
+ ]
238
+ },
239
+ {
240
+ id: '4',
241
+ title: 'Test',
242
+ type: 'milestone',
243
+ // section: developmentSection,
244
+ startDate: '2023-01-07',
245
+ endDate: '2023-01-10',
246
+ progress: 100,
247
+ dependsOn: '1',
248
+ length: '1d',
249
+ tags: ['done'],
250
+ children: []
251
+ },
252
+ {
253
+ id: '5',
254
+ title: 'Deploy',
255
+ type: 'milestone',
256
+ // section: developmentSection,
257
+ startDate: '2023-01-15',
258
+ endDate: '2023-01-21',
259
+ dependsOn: '4',
260
+ length: '1d',
261
+ tags: ['milestone'],
262
+ children: []
263
+ },
264
+ {
265
+ id: '6',
266
+ title: 'Publishing',
267
+ type: 'milestone',
268
+ // section: developmentSection,
269
+ startDate: '2023-01-11',
270
+ endDate: '2023-01-15',
271
+ dependsOn: '5',
272
+ length: '1d',
273
+ tags: ['milestone'],
274
+ children: []
275
+ },
276
+ {
277
+ id: '7',
278
+ title: 'Provisioning',
279
+ type: 'milestone',
280
+ // section: developmentSection,
281
+ startDate: '2023-01-12',
282
+ endDate: '2023-01-15',
283
+ dependsOn: '6',
284
+ length: '1d',
285
+ tags: ['milestone'],
286
+ children: []
287
+ },
288
+ {
289
+ id: '8',
290
+ title: 'Alpha Test',
291
+ type: 'milestone',
292
+ // section: testSection,
293
+ startDate: '2023-01-15',
294
+ endDate: '2023-01-17',
295
+ dependsOn: '7',
296
+ length: '1d',
297
+ tags: ['critical'],
298
+ children: []
299
+ },
300
+ {
301
+ id: '9',
302
+ title: 'Beta Task',
303
+ type: 'milestone',
304
+ // section: testSection,
305
+ startDate: '2023-01-15',
306
+ endDate: '2023-01-18',
307
+ dependsOn: '8',
308
+ length: '1d',
309
+ tags: ['active'],
310
+ children: []
311
+ },
312
+ {
313
+ id: '10',
314
+ title: 'Gamma Test',
315
+ type: 'milestone',
316
+ // section: testSection,
317
+ startDate: '2023-01-18',
318
+ endDate: '2023-01-19',
319
+ dependsOn: '9',
320
+ length: '1d',
321
+ tags: ['critical'],
322
+ children: []
323
+ },
324
+ {
325
+ id: '11',
326
+ title: 'Zeta Test',
327
+ type: 'milestone',
328
+ // section: testSection,
329
+ startDate: '2023-01-18',
330
+ endDate: '2023-01-22',
331
+ dependsOn: '9',
332
+ length: '1d',
333
+ tags: ['milestone'],
334
+ children: []
335
+ },
336
+ {
337
+ id: '12',
338
+ title: 'Release',
339
+ type: 'milestone',
340
+ // section: releaseSection,
341
+ startDate: '2023-01-18',
342
+ endDate: '2023-01-23',
343
+ dependsOn: '9',
344
+ length: '1d',
345
+ tags: ['milestone'],
346
+ children: []
347
+ },
348
+ {
349
+ id: '13',
350
+ title: 'Release',
351
+ type: 'milestone',
352
+ // section: releaseSection,
353
+ startDate: '2023-01-22',
354
+ endDate: '2023-01-27',
355
+ dependsOn: '12',
356
+ length: '1d',
357
+ tags: ['done'],
358
+ children: []
359
+ },
360
+ {
361
+ id: '14',
362
+ title: 'Release',
363
+ type: 'milestone',
364
+ // section: releaseSection,
365
+ startDate: '2023-01-27',
366
+ endDate: '2023-01-30',
367
+ dependsOn: '13',
368
+ length: '1d',
369
+ tags: ['milestone'],
370
+ children: []
371
+ },
372
+ {
373
+ id: '15',
374
+ title: 'Release',
375
+ type: 'milestone',
376
+ // section: releaseSection,
377
+ startDate: '2023-01-30',
378
+ endDate: '2023-01-31',
379
+ dependsOn: '14',
380
+ length: '1d',
381
+ tags: ['milestone'],
382
+ children: []
383
+ },
384
+ {
385
+ id: '16',
386
+ title: 'Release',
387
+ type: 'milestone',
388
+ // section: releaseSection,
389
+ startDate: '2023-01-31',
390
+ endDate: '2023-02-05',
391
+ dependsOn: '15',
392
+ length: '1d',
393
+ tags: ['active'],
394
+ children: []
395
+ },
396
+ {
397
+ id: '17',
398
+ title: 'Release',
399
+ type: 'milestone',
400
+ // section: releaseSection,
401
+ startDate: '2023-02-06',
402
+ endDate: '2023-02-07',
403
+ dependsOn: '16',
404
+ length: '1d',
405
+ tags: ['milestone'],
406
+ children: []
407
+ },
408
+ {
409
+ id: '18',
410
+ title: 'Release',
411
+ type: 'milestone',
412
+ // section: releaseSection,
413
+ startDate: '2023-02-08',
414
+ endDate: '2023-02-09',
415
+ dependsOn: '17',
416
+ length: '1d',
417
+ tags: ['critical'],
418
+ children: []
419
+ },
420
+ {
421
+ id: '19',
422
+ title: 'Release',
423
+ type: 'milestone',
424
+ // section: releaseSection,
425
+ startDate: '2023-02-10',
426
+ endDate: '2023-02-25',
427
+ dependsOn: '18',
428
+ length: '1d',
429
+ tags: ['milestone'],
430
+ children: []
431
+ }
432
+ ]
433
+
157
434
  render() {
158
435
  return html`
159
436
  <div header>
@@ -174,7 +451,20 @@ export class ProjectSchedule extends ScopedElementsMixin(PageView) {
174
451
  <div body>
175
452
  <div chart-container>
176
453
  <div chart>
177
- <table></table>
454
+ <ox-gantt
455
+ from-date=${new Date(this.fromDate).toISOString().split('T')[0]}
456
+ to-date=${new Date(this.toDate).toISOString().split('T')[0]}
457
+ .timeScale=${this.timeScale}
458
+ .tasks=${this.tasks}
459
+ @date-range-selected=${(e: CustomEvent) => {
460
+ console.log('date-range-selected', e.detail)
461
+ }}
462
+ @task-clicked=${(e: CustomEvent) => {
463
+ console.log('task-clicked', e.detail)
464
+ }}
465
+ ?extend-grid-lines=${this.extendGridLines}
466
+ >
467
+ </ox-gantt>
178
468
  </div>
179
469
  <div table>
180
470
  <table></table>
@@ -186,7 +476,7 @@ export class ProjectSchedule extends ScopedElementsMixin(PageView) {
186
476
  <div>
187
477
  <input type="date" name="startDate" project .value=${this.project.startDate || ''} max="9999-12-31" />
188
478
  ~
189
- <input type="date" name="startDate" project .value=${this.project.endDate || ''} max="9999-12-31" />
479
+ <input type="date" name="endDate" project .value=${this.project.endDate || ''} max="9999-12-31" />
190
480
  </div>
191
481
  </div>
192
482
  <div button></div>
@@ -241,7 +531,6 @@ export class ProjectSchedule extends ScopedElementsMixin(PageView) {
241
531
  })
242
532
 
243
533
  this.project = response.data?.project
244
- this.selectedBuildingIdx = 0
245
534
 
246
535
  console.log('init project : ', this.project)
247
536
  }
@@ -1,16 +1,18 @@
1
+ import '@material/web/icon/icon.js'
2
+ import '@material/web/button/elevated-button.js'
3
+ import '@material/web/button/outlined-button.js'
4
+ import '@material/web/progress/linear-progress.js'
5
+ import '@material/web/textfield/filled-text-field.js'
6
+
1
7
  import { PageView } from '@operato/shell'
2
8
  import { css, html } from 'lit'
3
9
  import { customElement, state } from 'lit/decorators.js'
4
10
  import { ScopedElementsMixin } from '@open-wc/scoped-elements'
5
11
  import { client } from '@operato/graphql'
6
12
  import { openPopup } from '@operato/layout'
7
- import '@material/web/button/elevated-button.js'
8
- import '@material/web/button/outlined-button.js'
9
- import '@material/web/progress/linear-progress.js'
10
- import '@material/web/textfield/filled-text-field.js'
11
13
 
12
14
  import gql from 'graphql-tag'
13
- import './project-create-popup'
15
+ import './popup/popup-project-create'
14
16
  import { Project } from './project-list'
15
17
 
16
18
  @customElement('project-setting-list')
@@ -80,9 +82,11 @@ export class ProjectSettingList extends ScopedElementsMixin(PageView) {
80
82
  background-color: #ffffff;
81
83
  border: 1px solid #cccccc80;
82
84
  border-radius: 5px;
85
+ align-items: center;
83
86
 
84
87
  img[project-img] {
85
88
  width: 285px;
89
+ aspect-ratio: 2;
86
90
  background-color: #cccccc80;
87
91
  }
88
92
 
@@ -276,7 +280,7 @@ export class ProjectSettingList extends ScopedElementsMixin(PageView) {
276
280
  }
277
281
 
278
282
  private _openCreateProjectPopup() {
279
- openPopup(html`<project-create-popup .refreshFn=${this.getProjectList.bind(this)}></project-create-popup>`, {
283
+ openPopup(html`<popup-project-create .refreshFn=${this.getProjectList.bind(this)}></popup-project-create>`, {
280
284
  backdrop: true,
281
285
  size: 'small',
282
286
  title: '신규 프로젝트 생성'
@@ -1,3 +1,7 @@
1
+ import '@material/web/icon/icon.js'
2
+ import '@material/web/button/elevated-button.js'
3
+ import '@material/web/textfield/outlined-text-field.js'
4
+
1
5
  import { PageView } from '@operato/shell'
2
6
  import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'
3
7
  import { css, html } from 'lit'
@@ -8,8 +12,6 @@ import { notify } from '@operato/layout'
8
12
 
9
13
  import gql from 'graphql-tag'
10
14
  import { Project } from './project-list'
11
- import '@material/web/button/elevated-button.js'
12
- import '@material/web/textfield/outlined-text-field.js'
13
15
 
14
16
  @customElement('project-update')
15
17
  export class ProjectUpdate extends ScopedElementsMixin(PageView) {
@@ -40,6 +42,7 @@ export class ProjectUpdate extends ScopedElementsMixin(PageView) {
40
42
  md-outlined-text-field[type='textarea'] {
41
43
  width: 100%;
42
44
  height: 130px;
45
+ resize: none;
43
46
  }
44
47
 
45
48
  ox-input-image {
@@ -0,0 +1,211 @@
1
+ import '@operato/data-grist'
2
+ import '@operato/context/ox-context-page-toolbar.js'
3
+
4
+ import { CommonGristStyles, ScrollbarStyles } from '@operato/styles'
5
+ import { PageView } from '@operato/shell'
6
+ import { css, html } from 'lit'
7
+ import { customElement, property, query } from 'lit/decorators.js'
8
+ import { DataGrist } from '@operato/data-grist'
9
+ import { client } from '@operato/graphql'
10
+ import { notify } from '@operato/layout'
11
+ import gql from 'graphql-tag'
12
+
13
+ @customElement('construction-type-management')
14
+ export class ConstructionTypeManagement extends PageView {
15
+ static styles = [
16
+ ScrollbarStyles,
17
+ CommonGristStyles,
18
+ css`
19
+ :host {
20
+ display: flex;
21
+ flex-direction: column;
22
+
23
+ width: 100%;
24
+
25
+ --grid-record-emphasized-background-color: red;
26
+ --grid-record-emphasized-color: yellow;
27
+ }
28
+
29
+ md-elevated-button {
30
+ margin: 0px 3px;
31
+
32
+ --md-elevated-button-container-height: 35px;
33
+ --md-elevated-button-label-text-size: 16px;
34
+ --md-elevated-button-container-color: #0595e5;
35
+
36
+ --md-elevated-button-label-text-color: #fff;
37
+ --md-elevated-button-hover-label-text-color: #fff;
38
+ --md-elevated-button-pressed-label-text-color: #fff;
39
+ --md-elevated-button-focus-label-text-color: #fff;
40
+ --md-elevated-button-icon-color: #fff;
41
+ --md-elevated-button-hover-icon-color: #fff;
42
+ --md-elevated-button-pressed-icon-color: #fff;
43
+ --md-elevated-button-focus-icon-color: #fff;
44
+
45
+ &[red] {
46
+ --md-elevated-button-container-color: #e15757;
47
+ }
48
+ }
49
+
50
+ div[button-container] {
51
+ padding: 0 5px 10px 0;
52
+ text-align: right;
53
+ }
54
+ `
55
+ ]
56
+
57
+ @property({ type: Object }) gristConfig: any
58
+ @query('ox-grist') private grist!: DataGrist
59
+
60
+ get context() {
61
+ return {
62
+ title: '공종 관리'
63
+ }
64
+ }
65
+
66
+ render() {
67
+ return html`
68
+ <ox-grist .mode=${'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>
69
+ <div button-container>
70
+ <md-elevated-button @click=${this._updateConstructionTypes.bind(this)}>
71
+ <md-icon slot="icon">save</md-icon>저장</md-elevated-button
72
+ >
73
+ <md-elevated-button red @click=${this._deleteConstructionTypes.bind(this)}>
74
+ <md-icon slot="icon">delete</md-icon>삭제</md-elevated-button
75
+ >
76
+ </div>
77
+ `
78
+ }
79
+
80
+ async pageInitialized(lifecycle: any) {
81
+ this.gristConfig = {
82
+ columns: [
83
+ { type: 'gutter', gutterName: 'sequence' },
84
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
85
+ {
86
+ type: 'string',
87
+ name: 'name',
88
+ header: '이름',
89
+ record: {
90
+ editable: true
91
+ },
92
+ width: 150
93
+ },
94
+ {
95
+ type: 'string',
96
+ name: 'description',
97
+ header: '설명',
98
+ record: {
99
+ editable: true
100
+ },
101
+ width: 200
102
+ },
103
+ {
104
+ type: 'datetime',
105
+ name: 'createdAt',
106
+ header: '생성 시간',
107
+ width: 200
108
+ },
109
+ {
110
+ type: 'datetime',
111
+ name: 'updatedAt',
112
+ header: '수정 시간',
113
+ width: 200
114
+ }
115
+ ],
116
+ rows: {
117
+ selectable: {
118
+ multiple: true
119
+ }
120
+ },
121
+ pagination: { infinite: true }
122
+ }
123
+ }
124
+
125
+ async fetchHandler() {
126
+ const response = await client.query({
127
+ query: gql`
128
+ query ConstructionTypes {
129
+ constructionTypes {
130
+ items {
131
+ id
132
+ name
133
+ description
134
+ createdAt
135
+ updatedAt
136
+ }
137
+ total
138
+ }
139
+ }
140
+ `
141
+ })
142
+
143
+ if (response.errors) return {}
144
+
145
+ return {
146
+ total: response.data.constructionTypes.total || 0,
147
+ records: response.data.constructionTypes.items || []
148
+ }
149
+ }
150
+
151
+ async _updateConstructionTypes() {
152
+ let patches = this.grist.dirtyRecords
153
+ if (patches && patches.length) {
154
+ patches = patches.map(patch => {
155
+ let patchField: any = patch.id ? { id: patch.id } : {}
156
+ const dirtyFields = patch.__dirtyfields__
157
+ for (let key in dirtyFields) {
158
+ patchField[key] = dirtyFields[key].after
159
+ }
160
+ patchField.cuFlag = patch.__dirty__
161
+
162
+ return patchField
163
+ })
164
+
165
+ const response = await client.mutate({
166
+ mutation: gql`
167
+ mutation UpdateMultipleConstructionType($patches: [ConstructionTypePatch!]!) {
168
+ updateMultipleConstructionType(patches: $patches) {
169
+ id
170
+ }
171
+ }
172
+ `,
173
+ variables: {
174
+ patches
175
+ }
176
+ })
177
+
178
+ if (!response.errors) {
179
+ this.grist.fetch()
180
+ notify({ message: '저장되었습니다.' })
181
+ } else {
182
+ notify({ message: '저장에 실패하였습니다.', level: 'error' })
183
+ }
184
+ }
185
+ }
186
+
187
+ async _deleteConstructionTypes() {
188
+ if (confirm('삭제하시겠습니까?')) {
189
+ const a = this.grist
190
+
191
+ const ids = this.grist.selected.map(record => record.id)
192
+ if (ids && ids.length > 0) {
193
+ const response = await client.mutate({
194
+ mutation: gql`
195
+ mutation DeleteConstructionTypes($ids: [String!]!) {
196
+ deleteConstructionTypes(ids: $ids)
197
+ }
198
+ `,
199
+ variables: {
200
+ ids
201
+ }
202
+ })
203
+
204
+ if (!response.errors) {
205
+ this.grist.fetch()
206
+ notify({ message: '삭제되었습니다.' })
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }