@dssp/project 1.0.0-alpha.0 → 1.0.0-alpha.14

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 (259) hide show
  1. package/dist-client/pages/lib/select2-component.js +1 -1
  2. package/dist-client/pages/lib/select2-component.js.map +1 -1
  3. package/dist-client/pages/lib/waether.d.ts +2 -1
  4. package/dist-client/pages/lib/waether.js +7 -3
  5. package/dist-client/pages/lib/waether.js.map +1 -1
  6. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  7. package/dist-client/pages/project/popup/checklist/attachment-list-popup.d.ts +1 -0
  8. package/dist-client/pages/project/popup/checklist/attachment-list-popup.js +309 -0
  9. package/dist-client/pages/project/popup/checklist/attachment-list-popup.js.map +1 -0
  10. package/dist-client/pages/project/popup/checklist/comment-list-popup.d.ts +1 -0
  11. package/dist-client/pages/project/popup/checklist/comment-list-popup.js +357 -0
  12. package/dist-client/pages/project/popup/checklist/comment-list-popup.js.map +1 -0
  13. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.d.ts +2 -0
  14. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js +684 -0
  15. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js.map +1 -0
  16. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.d.ts +37 -0
  17. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js +627 -0
  18. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js.map +1 -0
  19. package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
  20. package/dist-client/pages/project/popup/popup-plan-export.js +236 -0
  21. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
  22. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +3 -0
  23. package/dist-client/pages/project/popup/popup-plan-upload.js +130 -4
  24. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -1
  25. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -1
  26. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +1 -1
  27. package/dist-client/pages/project/project-completed-list.js +0 -1
  28. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  29. package/dist-client/pages/project/project-detail.d.ts +2 -1
  30. package/dist-client/pages/project/project-detail.js +269 -80
  31. package/dist-client/pages/project/project-detail.js.map +1 -1
  32. package/dist-client/pages/project/project-list.d.ts +12 -0
  33. package/dist-client/pages/project/project-list.js +15 -8
  34. package/dist-client/pages/project/project-list.js.map +1 -1
  35. package/dist-client/pages/project/project-plan-management.js +29 -13
  36. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  37. package/dist-client/pages/project/project-schedule-list.js.map +1 -1
  38. package/dist-client/pages/project/project-schedule.d.ts +2 -0
  39. package/dist-client/pages/project/project-schedule.js +16 -1
  40. package/dist-client/pages/project/project-schedule.js.map +1 -1
  41. package/dist-client/pages/project/project-setting-list.js +25 -24
  42. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  43. package/dist-client/pages/project/project-update.d.ts +1 -0
  44. package/dist-client/pages/project/project-update.js +128 -17
  45. package/dist-client/pages/project/project-update.js.map +1 -1
  46. package/dist-client/pages/resource/construction-detail-type-popup.js.map +1 -1
  47. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  48. package/dist-client/pages/resource/inspection-drawing-type-management.js.map +1 -1
  49. package/dist-client/pages/resource/inspection-part-popup.js.map +1 -1
  50. package/dist-client/pages/resource/resource-importer.js.map +1 -1
  51. package/dist-client/pages/resource/resource-list-page.js.map +1 -1
  52. package/dist-client/pages/resource/worker-type-management.js.map +1 -1
  53. package/dist-client/pages/task/task-importer.js.map +1 -1
  54. package/dist-client/pages/task/task-list-page.js.map +1 -1
  55. package/dist-client/pages/task-resource/task-resource-importer.js.map +1 -1
  56. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -1
  57. package/dist-client/route.js.map +1 -1
  58. package/dist-client/tsconfig.tsbuildinfo +1 -1
  59. package/dist-server/controllers/export-tasks.js +1 -2
  60. package/dist-server/controllers/export-tasks.js.map +1 -1
  61. package/dist-server/controllers/import-task.js +1 -2
  62. package/dist-server/controllers/import-task.js.map +1 -1
  63. package/dist-server/controllers/parse-excel.d.ts +0 -2
  64. package/dist-server/controllers/parse-excel.js +1 -2
  65. package/dist-server/controllers/parse-excel.js.map +1 -1
  66. package/dist-server/middlewares/index.js +1 -2
  67. package/dist-server/middlewares/index.js.map +1 -1
  68. package/dist-server/migrations/1723861466413-seed-roles.js.map +1 -1
  69. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
  70. package/dist-server/migrations/1723861476419-seed-resources.js.map +1 -1
  71. package/dist-server/migrations/1723861478420-seed-/bsample-project.js.map +1 -1
  72. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js.map +1 -1
  73. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js +2 -2
  74. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js.map +1 -1
  75. package/dist-server/service/construction-detail-type/construction-detail-type-query.js +2 -2
  76. package/dist-server/service/construction-detail-type/construction-detail-type-query.js.map +1 -1
  77. package/dist-server/service/construction-detail-type/construction-detail-type-type.js +4 -4
  78. package/dist-server/service/construction-detail-type/construction-detail-type-type.js.map +1 -1
  79. package/dist-server/service/construction-detail-type/construction-detail-type.js +2 -2
  80. package/dist-server/service/construction-detail-type/construction-detail-type.js.map +1 -1
  81. package/dist-server/service/construction-type/construction-type-mutation.js +2 -2
  82. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -1
  83. package/dist-server/service/construction-type/construction-type-query.js +2 -2
  84. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  85. package/dist-server/service/construction-type/construction-type-type.js +4 -4
  86. package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
  87. package/dist-server/service/construction-type/construction-type.js +2 -2
  88. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  89. package/dist-server/service/index.d.ts +1 -0
  90. package/dist-server/service/index.js +1 -0
  91. package/dist-server/service/index.js.map +1 -1
  92. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js +2 -2
  93. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js.map +1 -1
  94. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +2 -2
  95. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
  96. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js +4 -4
  97. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js.map +1 -1
  98. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js +2 -2
  99. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js.map +1 -1
  100. package/dist-server/service/inspection-part/inspection-part-mutation.js +2 -2
  101. package/dist-server/service/inspection-part/inspection-part-mutation.js.map +1 -1
  102. package/dist-server/service/inspection-part/inspection-part-query.js +2 -2
  103. package/dist-server/service/inspection-part/inspection-part-query.js.map +1 -1
  104. package/dist-server/service/inspection-part/inspection-part-type.js +4 -4
  105. package/dist-server/service/inspection-part/inspection-part-type.js.map +1 -1
  106. package/dist-server/service/inspection-part/inspection-part.js +2 -2
  107. package/dist-server/service/inspection-part/inspection-part.js.map +1 -1
  108. package/dist-server/service/manager/index.d.ts +2 -0
  109. package/dist-server/service/manager/index.js +3 -1
  110. package/dist-server/service/manager/index.js.map +1 -1
  111. package/dist-server/service/manager/manager-mutation.js +2 -2
  112. package/dist-server/service/manager/manager-mutation.js.map +1 -1
  113. package/dist-server/service/manager/manager-query.js +3 -3
  114. package/dist-server/service/manager/manager-query.js.map +1 -1
  115. package/dist-server/service/manager/manager-type.js +4 -4
  116. package/dist-server/service/manager/manager-type.js.map +1 -1
  117. package/dist-server/service/manager/manager.js +2 -2
  118. package/dist-server/service/manager/manager.js.map +1 -1
  119. package/dist-server/service/project/project-mutation.d.ts +1 -0
  120. package/dist-server/service/project/project-mutation.js +109 -15
  121. package/dist-server/service/project/project-mutation.js.map +1 -1
  122. package/dist-server/service/project/project-query.d.ts +1 -0
  123. package/dist-server/service/project/project-query.js +14 -3
  124. package/dist-server/service/project/project-query.js.map +1 -1
  125. package/dist-server/service/project/project-type.d.ts +1 -0
  126. package/dist-server/service/project/project-type.js +13 -9
  127. package/dist-server/service/project/project-type.js.map +1 -1
  128. package/dist-server/service/project/project.d.ts +6 -0
  129. package/dist-server/service/project/project.js +15 -4
  130. package/dist-server/service/project/project.js.map +1 -1
  131. package/dist-server/service/resource/resource-mutation.js +2 -2
  132. package/dist-server/service/resource/resource-mutation.js.map +1 -1
  133. package/dist-server/service/resource/resource-query.js +2 -2
  134. package/dist-server/service/resource/resource-query.js.map +1 -1
  135. package/dist-server/service/resource/resource-type.js +6 -6
  136. package/dist-server/service/resource/resource-type.js.map +1 -1
  137. package/dist-server/service/resource/resource.js +3 -3
  138. package/dist-server/service/resource/resource.js.map +1 -1
  139. package/dist-server/service/task/task-mutation.js +2 -2
  140. package/dist-server/service/task/task-mutation.js.map +1 -1
  141. package/dist-server/service/task/task-query.js +4 -4
  142. package/dist-server/service/task/task-query.js.map +1 -1
  143. package/dist-server/service/task/task-type.js +10 -10
  144. package/dist-server/service/task/task-type.js.map +1 -1
  145. package/dist-server/service/task/task.js +7 -8
  146. package/dist-server/service/task/task.js.map +1 -1
  147. package/dist-server/service/task-resource/task-resource-mutation.js +2 -2
  148. package/dist-server/service/task-resource/task-resource-mutation.js.map +1 -1
  149. package/dist-server/service/task-resource/task-resource-query.js +2 -2
  150. package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
  151. package/dist-server/service/task-resource/task-resource-type.js +6 -6
  152. package/dist-server/service/task-resource/task-resource-type.js.map +1 -1
  153. package/dist-server/service/task-resource/task-resource.js +2 -2
  154. package/dist-server/service/task-resource/task-resource.js.map +1 -1
  155. package/dist-server/service/worker-type/worker-type-mutation.js +2 -2
  156. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -1
  157. package/dist-server/service/worker-type/worker-type-query.js +2 -2
  158. package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
  159. package/dist-server/service/worker-type/worker-type-type.js +4 -4
  160. package/dist-server/service/worker-type/worker-type-type.js.map +1 -1
  161. package/dist-server/service/worker-type/worker-type.js +2 -2
  162. package/dist-server/service/worker-type/worker-type.js.map +1 -1
  163. package/dist-server/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +13 -11
  165. package/client/bootstrap.ts +0 -0
  166. package/client/index.ts +0 -0
  167. package/client/pages/lib/select2-component.ts +0 -175
  168. package/client/pages/lib/waether.ts +0 -159
  169. package/client/pages/project/component/project-update-header.ts +0 -88
  170. package/client/pages/project/popup/popup-plan-upload.ts +0 -138
  171. package/client/pages/project/popup/popup-project-create.ts +0 -147
  172. package/client/pages/project/popup/popup-schedule-upload.ts +0 -102
  173. package/client/pages/project/project-completed-list.ts +0 -281
  174. package/client/pages/project/project-detail.ts +0 -738
  175. package/client/pages/project/project-list.ts +0 -418
  176. package/client/pages/project/project-plan-management.ts +0 -476
  177. package/client/pages/project/project-schedule-list.ts +0 -294
  178. package/client/pages/project/project-schedule.ts +0 -393
  179. package/client/pages/project/project-setting-list.ts +0 -393
  180. package/client/pages/project/project-update.ts +0 -876
  181. package/client/pages/resource/construction-detail-type-popup.ts +0 -201
  182. package/client/pages/resource/construction-type-management.ts +0 -212
  183. package/client/pages/resource/inspection-drawing-type-management.ts +0 -245
  184. package/client/pages/resource/inspection-part-popup.ts +0 -201
  185. package/client/pages/resource/resource-importer.ts +0 -97
  186. package/client/pages/resource/resource-list-page.ts +0 -356
  187. package/client/pages/resource/worker-type-management.ts +0 -192
  188. package/client/pages/task/task-importer.ts +0 -94
  189. package/client/pages/task/task-list-page.ts +0 -340
  190. package/client/pages/task-resource/task-resource-importer.ts +0 -97
  191. package/client/pages/task-resource/task-resource-list-page.ts +0 -356
  192. package/client/route.ts +0 -55
  193. package/client/tsconfig.json +0 -11
  194. package/server/controllers/export-tasks.ts +0 -40
  195. package/server/controllers/import-task.ts +0 -134
  196. package/server/controllers/index.ts +0 -0
  197. package/server/controllers/parse-excel.ts +0 -86
  198. package/server/controllers/types.ts +0 -20
  199. package/server/index.ts +0 -4
  200. package/server/middlewares/index.ts +0 -3
  201. package/server/migrations/1723861466413-seed-roles.ts +0 -128
  202. package/server/migrations/1723861466414-seed-codes.ts +0 -157
  203. package/server/migrations/1723861476419-seed-resources.ts +0 -62
  204. package/server/migrations/1723861478420-seed-/bsample-project.ts +0 -87
  205. package/server/migrations/1723861478421-seed-/bsample-tasks.ts +0 -194
  206. package/server/migrations/index.ts +0 -9
  207. package/server/routes.ts +0 -108
  208. package/server/service/construction-detail-type/construction-detail-type-mutation.ts +0 -57
  209. package/server/service/construction-detail-type/construction-detail-type-query.ts +0 -31
  210. package/server/service/construction-detail-type/construction-detail-type-type.ts +0 -26
  211. package/server/service/construction-detail-type/construction-detail-type.ts +0 -52
  212. package/server/service/construction-detail-type/index.ts +0 -6
  213. package/server/service/construction-type/construction-type-mutation.ts +0 -66
  214. package/server/service/construction-type/construction-type-query.ts +0 -56
  215. package/server/service/construction-type/construction-type-type.ts +0 -26
  216. package/server/service/construction-type/construction-type.ts +0 -74
  217. package/server/service/construction-type/index.ts +0 -6
  218. package/server/service/index.ts +0 -56
  219. package/server/service/inspection-drawing-type/index.ts +0 -6
  220. package/server/service/inspection-drawing-type/inspection-drawing-type-mutation.ts +0 -69
  221. package/server/service/inspection-drawing-type/inspection-drawing-type-query.ts +0 -55
  222. package/server/service/inspection-drawing-type/inspection-drawing-type-type.ts +0 -23
  223. package/server/service/inspection-drawing-type/inspection-drawing-type.ts +0 -68
  224. package/server/service/inspection-part/index.ts +0 -6
  225. package/server/service/inspection-part/inspection-part-mutation.ts +0 -52
  226. package/server/service/inspection-part/inspection-part-query.ts +0 -41
  227. package/server/service/inspection-part/inspection-part-type.ts +0 -26
  228. package/server/service/inspection-part/inspection-part.ts +0 -51
  229. package/server/service/manager/index.ts +0 -6
  230. package/server/service/manager/manager-mutation.ts +0 -42
  231. package/server/service/manager/manager-query.ts +0 -28
  232. package/server/service/manager/manager-type.ts +0 -40
  233. package/server/service/manager/manager.ts +0 -29
  234. package/server/service/project/index.ts +0 -6
  235. package/server/service/project/project-mutation.ts +0 -255
  236. package/server/service/project/project-query.ts +0 -105
  237. package/server/service/project/project-type.ts +0 -72
  238. package/server/service/project/project.ts +0 -134
  239. package/server/service/resource/index.ts +0 -7
  240. package/server/service/resource/resource-mutation.ts +0 -137
  241. package/server/service/resource/resource-query.ts +0 -50
  242. package/server/service/resource/resource-type.ts +0 -41
  243. package/server/service/resource/resource.ts +0 -82
  244. package/server/service/task/index.ts +0 -6
  245. package/server/service/task/task-mutation.ts +0 -135
  246. package/server/service/task/task-query.ts +0 -169
  247. package/server/service/task/task-type.ts +0 -75
  248. package/server/service/task/task.ts +0 -130
  249. package/server/service/task-resource/index.ts +0 -7
  250. package/server/service/task-resource/task-resource-mutation.ts +0 -140
  251. package/server/service/task-resource/task-resource-query.ts +0 -36
  252. package/server/service/task-resource/task-resource-type.ts +0 -41
  253. package/server/service/task-resource/task-resource.ts +0 -51
  254. package/server/service/worker-type/index.ts +0 -6
  255. package/server/service/worker-type/worker-type-mutation.ts +0 -66
  256. package/server/service/worker-type/worker-type-query.ts +0 -47
  257. package/server/service/worker-type/worker-type-type.ts +0 -26
  258. package/server/service/worker-type/worker-type.ts +0 -68
  259. package/server/tsconfig.json +0 -10
@@ -1,294 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
-
3
- import { PageView } from '@operato/shell'
4
- import { css, html } from 'lit'
5
- import { customElement, state } from 'lit/decorators.js'
6
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
7
- import { client } from '@operato/graphql'
8
- import gql from 'graphql-tag'
9
- import { Project } from './project-list'
10
-
11
- @customElement('project-schedule-list')
12
- export class ProjectScheduleListPage extends ScopedElementsMixin(PageView) {
13
- static styles = [
14
- css`
15
- :host {
16
- display: flex;
17
- flex-direction: column;
18
- overflow-y: auto;
19
-
20
- width: 100%;
21
- height: 100%;
22
- background-color: #f7f7f7;
23
-
24
- --grid-record-emphasized-background-color: red;
25
- --grid-record-emphasized-color: yellow;
26
- }
27
-
28
- div[header] {
29
- display: flex;
30
- height: 100px;
31
- align-items: center;
32
- background-color: #2ea4df1a;
33
- border: 1px solid #2ea4df33;
34
- margin: 15px 23px;
35
- font-size: 18px;
36
- padding: 7px;
37
- border-radius: 5px;
38
-
39
- md-filled-text-field[type='search'] {
40
- margin-left: 5px;
41
- margin-right: 26px;
42
-
43
- --md-filled-text-field-container-shape: 0px;
44
- --md-sys-color-primary: #006a6a;
45
- --md-sys-color-surface-container-highest: transparent;
46
- --md-filled-text-field-label-text-color: #999999;
47
- --md-filled-text-field-input-text-color: #4e5055;
48
- }
49
-
50
- md-elevated-button[add-project] {
51
- font-weight: bold;
52
- font-size: 16px;
53
- margin-left: 17px;
54
- padding: 13px 20px;
55
-
56
- --md-sys-color-surface-container-low: #24be7b;
57
- --md-sys-color-primary: #ffffff;
58
- --md-elevated-button-container-shape: 7px;
59
- }
60
- }
61
-
62
- div[body] {
63
- div[project-container] {
64
- height: 140px;
65
- margin: 17px 23px;
66
- background-color: #ffffff;
67
- border: 1px solid #cccccc80;
68
- border-radius: 5px;
69
-
70
- & > a {
71
- display: flex;
72
- width: 100%;
73
- height: 100%;
74
- text-decoration: none;
75
- color: #000;
76
- }
77
-
78
- img[project-img] {
79
- width: 285px;
80
- background-color: #cccccc80;
81
- }
82
- img[project-img][no-image] {
83
- object-fit: contain;
84
- opacity: 0.5;
85
- }
86
-
87
- span[project-info] {
88
- flex: 0.45;
89
- padding: 6px 15px;
90
- font-size: 16px;
91
-
92
- white-space: nowrap;
93
- overflow: hidden;
94
- text-overflow: ellipsis;
95
-
96
- div[name] {
97
- color: #2e79be;
98
- font-weight: bold;
99
- font-size: 19px;
100
- margin-bottom: 2px;
101
- }
102
- }
103
-
104
- span[project-state] {
105
- flex: 0.55;
106
- padding: 10px 20px;
107
-
108
- & > div {
109
- margin-bottom: 3px;
110
- }
111
-
112
- div[progress] {
113
- position: relative;
114
-
115
- md-linear-progress {
116
- --md-linear-progress-track-height: 18px;
117
- --md-linear-progress-active-indicator-height: 18px;
118
- --md-linear-progress-track-shape: 5px;
119
- --md-sys-color-primary: #0595e51a;
120
- --md-sys-color-surface-container-highest: #0595e533;
121
- }
122
-
123
- span {
124
- position: absolute;
125
- top: 0;
126
- left: 12px;
127
- font-size: 12px;
128
- font-weight: bold;
129
- color: #2e79be;
130
-
131
- &:last-child {
132
- left: unset;
133
- right: 12px;
134
- }
135
- }
136
- }
137
- }
138
- }
139
- }
140
- `
141
- ]
142
-
143
- get context() {
144
- return {
145
- title: '진행중 프로젝트'
146
- }
147
- }
148
-
149
- @state() private projectName: string = ''
150
- @state() private projectList: Project[] = []
151
- @state() private projectCount: number = 0
152
-
153
- render() {
154
- return html`
155
- <div header>
156
- <label>프로젝트 이름</label>
157
- <md-filled-text-field
158
- name="projectName"
159
- type="search"
160
- label="프로젝트 이름"
161
- .value=${this.projectName}
162
- @input=${this._onInputChange}
163
- @keypress=${this._onKeypress}
164
- >
165
- <md-icon slot="leading-icon">search</md-icon>
166
- </md-filled-text-field>
167
-
168
- <strong>총 ${this.projectCount}개</strong>
169
- </div>
170
-
171
- <div body>
172
- ${this.projectList?.map((project: Project) => {
173
- return html`
174
- <div project-container>
175
- <a href=${`project-schedule/${project.id}`}>
176
- <img
177
- ?no-image=${!project.mainPhoto?.fullpath}
178
- project-img
179
- src=${project.mainPhoto?.fullpath || '/assets/images/no-image.png'}
180
- />
181
-
182
- <span project-info>
183
- <div name>${project.name}</div>
184
- <div content>${project.buildingComplex.address}</div>
185
- <div content>면적: ${project.buildingComplex?.area?.toLocaleString() || ''}㎡</div>
186
- <div content>착공~준공: ${project.startDate}~${project.endDate}</div>
187
- <div content>발주처: <strong>${project.buildingComplex.clientCompany}</strong></div>
188
- </span>
189
-
190
- <span project-state>
191
- <div progress>
192
- <md-linear-progress buffer="100" max="100" value=${project.totalProgress || 0}> </md-linear-progress>
193
- <span>전체</span>
194
- <span>${project.totalProgress || 0}%</span>
195
- </div>
196
- <div progress>
197
- <md-linear-progress buffer="100" max="100" value=${project.weeklyProgress || 0}> </md-linear-progress>
198
- <span>주간</span>
199
- <span>${project.weeklyProgress || 0}%</span>
200
- </div>
201
- <div progress>
202
- <md-linear-progress buffer="100" max="100" value=${project.kpi || 0}> </md-linear-progress>
203
- <span>KPI</span>
204
- <span>${project.kpi || 0}%</span>
205
- </div>
206
- <div progress>
207
- <md-linear-progress buffer="100" max="100" value=${project.inspPassRate || 0}> </md-linear-progress>
208
- <span>Inspection Passing Rate</span>
209
- <span>${project.inspPassRate || 0}%</span>
210
- </div>
211
- <div progress>
212
- <md-linear-progress buffer="100" max="100" value=${project.robotProgressRate || 0}> </md-linear-progress>
213
- <span>Robot Progress</span>
214
- <span>${project.robotProgressRate || 0}%</span>
215
- </div>
216
- <div progress>
217
- <md-linear-progress buffer="100" max="100" value=${project.structuralSafetyRate || 0}> </md-linear-progress>
218
- <span>Structural safety</span>
219
- <span>${project.structuralSafetyRate || 0}%</span>
220
- </div>
221
- </span>
222
- </a>
223
- </div>
224
- `
225
- })}
226
- </div>
227
- `
228
- }
229
-
230
- async pageUpdated(changes: any, lifecycle: any) {
231
- if (this.active) {
232
- this.getProjectList()
233
- }
234
- }
235
-
236
- async getProjectList() {
237
- const response = await client.query({
238
- query: gql`
239
- query Projects($filters: [Filter!]) {
240
- projects(filters: $filters) {
241
- items {
242
- id
243
- name
244
- startDate
245
- endDate
246
- mainPhoto {
247
- fullpath
248
- }
249
- totalProgress
250
- weeklyProgress
251
- kpi
252
- inspPassRate
253
- robotProgressRate
254
- structuralSafetyRate
255
- buildingComplex {
256
- address
257
- area
258
- clientCompany
259
- }
260
- }
261
- total
262
- }
263
- }
264
- `,
265
- variables: {
266
- filters: this.projectName
267
- ? [
268
- {
269
- name: 'name',
270
- operator: 'search',
271
- value: `%${this.projectName}%`
272
- }
273
- ]
274
- : []
275
- }
276
- })
277
-
278
- this.projectList = response.data.projects?.items || []
279
- this.projectCount = response.data.projects?.total || 0
280
- }
281
-
282
- // Input 요소의 값이 변경될 때 호출되는 콜백 함수
283
- private _onInputChange(event: InputEvent) {
284
- const target = event.target as HTMLInputElement
285
- this[target.name] = target.value
286
- }
287
-
288
- // 검색창에서 엔터입력시 검색
289
- private _onKeypress(event: KeyboardEvent) {
290
- if (event.code === 'Enter') {
291
- this.getProjectList()
292
- }
293
- }
294
- }
@@ -1,393 +0,0 @@
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
-
7
- import { PageView } from '@operato/shell'
8
- import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'
9
- import { css, html } from 'lit'
10
- import { customElement, query, state } from 'lit/decorators.js'
11
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
12
- import { client } from '@operato/graphql'
13
- import { i18next } from '@operato/i18n'
14
- import { openPopup } from '@operato/layout'
15
- import gql from 'graphql-tag'
16
- import { Project } from './project-list'
17
- import { keyed } from 'lit/directives/keyed.js'
18
- import { ScrollbarStyles } from '@operato/styles'
19
- import '@operato/gantt/ox-gantt.js'
20
- import './popup/popup-schedule-upload'
21
-
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
- resources {
34
- type
35
- allocated
36
- }
37
- }
38
- `
39
-
40
- @customElement('project-schedule')
41
- export class ProjectSchedule extends ScopedElementsMixin(PageView) {
42
- static styles = [
43
- ScrollbarStyles,
44
- css`
45
- :host {
46
- display: flex;
47
- flex-direction: column;
48
-
49
- color: #4e5055;
50
-
51
- width: 100%;
52
- background-color: var(--md-sys-color-background, #f6f6f6);
53
- overflow-y: auto;
54
-
55
- --grid-record-emphasized-background-color: red;
56
- --grid-record-emphasized-color: yellow;
57
- }
58
-
59
- *[bold] {
60
- font-weight: bold;
61
- }
62
-
63
- div[header] {
64
- display: flex;
65
- margin: 0px var(--spacing-large, 12px);
66
-
67
- h2 {
68
- flex: 0.5;
69
- color: #3f71a0;
70
- font-size:18px;
71
- }
72
-
73
- div[button-container] {
74
- display: flex;
75
- align-items: center;
76
- justify-content: end;
77
- flex: 0.5;
78
-
79
- md-elevated-button {
80
- margin: 0px margin-left: var(--spacing-small, 4px);
81
-
82
- --md-elevated-button-container-height: 32px;
83
- --md-elevated-button-label-text-size: 16px;
84
- --md-elevated-button-container-color: #0595e5;
85
-
86
- --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
87
- --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
88
- --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
89
- --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
90
- --md-elevated-button-icon-color: var(--md-sys-color-on-primary);
91
- --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
92
- --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
93
- --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
94
- }
95
- }
96
- }
97
-
98
- div[body] {
99
- flex: 1;
100
-
101
- display: flex;
102
- flex-direction: column;
103
- margin: var(--spacing-large, 12px);
104
- margin-top:0;
105
- gap: var(--spacing-medium, 8px);
106
- overflow: hidden;
107
-
108
- h3 {
109
- color: #2e79be;
110
- font-size: 16px;
111
- margin: 0px;
112
- }
113
-
114
- & > div {
115
- display: flex;
116
- border-radius: 5px;
117
- }
118
-
119
- ox-gantt {
120
- flex: 1;
121
- box-sizing: border-box;
122
- overflow: hidden;
123
-
124
- background-color: var(--md-sys-color-primary-container);
125
- color: var(--md-sys-color-on-primary-container);
126
- }
127
-
128
- div[select-container] {
129
- gap: var(--spacing-medium, 8px);
130
-
131
- div[date] {
132
- display: flex;
133
- align-items: center;
134
- justify-content: space-between;
135
- background-color: #2ea4df1a;
136
- border: 1px solid #2ea4df33;
137
- border-radius: 5px;
138
- gap: var(--spacing-medium, 8px);
139
- padding: 12px 36px 12px 15px;
140
-
141
- span[name] {
142
- font-size: 16px;
143
- font-weight: bold;
144
- }
145
-
146
- input[type="date"] {
147
- border:1px solid rgba(51,51,51,.20);
148
- padding:var(--spacing-small, 4px) var(--spacing-medium, 8px);
149
- border-radius: 5px;
150
- }
151
- }
152
-
153
- div[construction-list-container] {
154
- flex: 1;
155
- display: flex;
156
- border-radius: 5px;
157
- border: 1px solid #cccccc80;
158
- background-color: #fff;
159
- padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);
160
- gap: var(--spacing-medium, 8px);
161
- overflow-x: auto;
162
-
163
- md-outlined-button {
164
- --md-outlined-button-container-height: 30px;
165
- --md-outlined-button-trailing-space: var(--spacing-medium, 8px);
166
- --md-outlined-button-leading-space: var(--spacing-medium, 8px);
167
- --md-outlined-button-label-text-color: #586878;
168
- --md-sys-color-outline: rgba(51,51,51,.20);
169
- box-shadow: 1px 1px 1px #0000001a;
170
- padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);
171
- font-weight: 700;
172
- }
173
- }
174
- }
175
- }
176
- `
177
- ]
178
-
179
- get context() {
180
- return {
181
- title: '공정표'
182
- }
183
- }
184
-
185
- private defaultProject = {
186
- name: '',
187
- buildingComplex: {
188
- address: '',
189
- area: 0,
190
- constructionCompany: '',
191
- clientCompany: '',
192
- supervisoryCompany: '',
193
- designCompany: '',
194
- constructionType: '',
195
- buildings: []
196
- }
197
- }
198
- @state() projectId: string = ''
199
- @state() project: Project = { ...this.defaultProject }
200
- @state() selectedBuildingIdx: number = 0
201
- @state() tasks
202
- @state() constructionTypeList = []
203
-
204
- @state() private fromDate = '2024-01-01'
205
- @state() private toDate = '2026-12-31'
206
-
207
- @query('input[name="startDate"]') inputStartDate!: HTMLInputElement
208
- @query('input[name="endDate"]') inputEndDate!: HTMLInputElement
209
-
210
- private timeScale = 'week-day'
211
- private extendGridLines = false
212
-
213
- private columnConfigProvider = function () {
214
- return [
215
- { name: 'title', label: i18next.t('label.gantt-task-title') || 'title', visible: true, width: 150, order: 1 },
216
- {
217
- name: 'startDate',
218
- label: i18next.t('label.gantt-task-start-date') || 'start date',
219
- visible: true,
220
- width: 100,
221
- order: 2
222
- },
223
- {
224
- name: 'resources',
225
- label: i18next.t('label.gantt-task-resources') || 'resources',
226
- visible: true,
227
- width: 100,
228
- order: 3
229
- },
230
- {
231
- name: 'duration',
232
- label: i18next.t('label.gantt-task-duration') || 'duration',
233
- visible: true,
234
- width: 30,
235
- order: 4
236
- }
237
- ]
238
- }
239
-
240
- render() {
241
- return html`
242
- <div header>
243
- <h2>${this.project.name}</h2>
244
- <div button-container>
245
- <md-elevated-button @click=${this._openUploadSchedulePopup}>
246
- <md-icon slot="icon">event_note</md-icon>공정표 관리
247
- </md-elevated-button>
248
- </div>
249
- </div>
250
-
251
- <div body>
252
- <ox-gantt
253
- from-date=${new Date(this.fromDate).toISOString().split('T')[0]}
254
- to-date=${new Date(this.toDate).toISOString().split('T')[0]}
255
- .timeScale=${this.timeScale}
256
- .tasks=${this.tasks}
257
- @date-range-selected=${this.onRangeSelected}
258
- @task-clicked=${(e: CustomEvent) => {
259
- console.log('task-clicked', e.detail)
260
- }}
261
- ?extend-grid-lines=${this.extendGridLines}
262
- .columnConfigProvider=${this.columnConfigProvider}
263
- .colorProvider=${task => {
264
- return task.style || 'gray'
265
- }}
266
- >
267
- </ox-gantt>
268
- <div select-container>
269
- <div date>
270
- <span name>기간선택</span>
271
- <div @change=${() => this.onChangePeriodRange()}>
272
- <input type="date" name="startDate" project .value=${this.project.startDate || ''} max="9999-12-31" />
273
- ~
274
- <input type="date" name="endDate" project .value=${this.project.endDate || ''} max="9999-12-31" />
275
- </div>
276
- </div>
277
- <div construction-list-container>
278
- ${this.constructionTypeList?.map(
279
- (constructionType: any) =>
280
- html` <md-outlined-button id=${constructionType.id}>${constructionType.title}</md-outlined-button>`
281
- )}
282
- </div>
283
- </div>
284
- </div>
285
- `
286
- }
287
-
288
- async pageInitialized(lifecycle: PageLifecycle) {}
289
-
290
- async pageUpdated(changes: any, lifecycle: PageLifecycle) {
291
- if (this.active) {
292
- this.projectId = lifecycle.resourceId || ''
293
- await this.initProject(this.projectId)
294
- }
295
- }
296
-
297
- async initProject(projectId: string = '') {
298
- const response = await client.query({
299
- query: gql`
300
- query Project($id: String!, $sortings: [Sorting!]) {
301
- project(id: $id) {
302
- id
303
- name
304
- startDate
305
- endDate
306
- rootTasks {
307
- ...TaskFragment
308
- children(sortings: $sortings) {
309
- ...TaskFragment
310
- children(sortings: $sortings) {
311
- ...TaskFragment
312
- }
313
- }
314
- }
315
- scheduleTable {
316
- id
317
- name
318
- }
319
- buildingComplex {
320
- id
321
- planXScale
322
- planYScale
323
- buildings {
324
- id
325
- name
326
- drawing {
327
- id
328
- name
329
- }
330
- buildingLevels {
331
- id
332
- floor
333
- mainDrawing {
334
- id
335
- name
336
- }
337
- }
338
- }
339
- }
340
- }
341
- }
342
-
343
- ${TaskFragment}
344
- `,
345
- variables: {
346
- id: projectId,
347
- sortings: [{ name: 'startDate' }]
348
- }
349
- })
350
-
351
- this.project = response.data?.project
352
- this.tasks = response.data?.project.rootTasks
353
-
354
- if (this.project) {
355
- this.fromDate = this.project.startDate || '2024-01-01' /* TODO default: start date of this year - 3 */
356
- this.toDate = this.project.endDate || '2026-12-31' /* TODO defaule: end date of this year + 3 */
357
- }
358
-
359
- console.log('init project : ', this.project)
360
- }
361
-
362
- onChangePeriodRange() {
363
- this.fromDate = this.inputStartDate.value
364
- this.toDate = this.inputEndDate.value
365
- }
366
-
367
- onRangeSelected(e: CustomEvent) {
368
- const selectedFromDate = new Date(e.detail.start + 'T00:00:00.000Z')
369
- const selectedToDate = new Date(e.detail.end + 'T23:59:59.000Z')
370
-
371
- this.constructionTypeList = this.tasks.filter(constuction => {
372
- const constuctionStartDate = new Date(constuction.startDate)
373
- const constuctionEndDate = new Date(constuction.endDate)
374
-
375
- return constuctionStartDate <= selectedToDate && constuctionEndDate >= selectedFromDate
376
- })
377
- }
378
-
379
- private _openUploadSchedulePopup() {
380
- openPopup(
381
- html`<popup-schedule-upload
382
- .projectId=${this.projectId}
383
- .scheduleTable=${this.project?.scheduleTable}
384
- @uploaded=${() => this.initProject(this.projectId)}
385
- ></popup-schedule-upload>`,
386
- {
387
- backdrop: true,
388
- size: 'medium',
389
- title: `공정표 업로드`
390
- }
391
- )
392
- }
393
- }