@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,738 +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/outlined-button.js'
5
-
6
- import { navigate, PageView } from '@operato/shell'
7
- import { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'
8
- import { css, html } from 'lit'
9
- import { customElement, state } from 'lit/decorators.js'
10
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
11
- import { client } from '@operato/graphql'
12
- import { ScrollbarStyles } from '@operato/styles'
13
-
14
- import gql from 'graphql-tag'
15
- import { BUILDING_INSPECTION_STATUS, BuildingInspection, BuildingInspectionStatus, Project } from './project-list'
16
- import _getWeather from '../lib/waether'
17
- import '@operato/chart/ox-progress-circle.js'
18
-
19
- export interface InspectionSummary {
20
- wait: number
21
- request: number
22
- pass: number
23
- fail: number
24
- }
25
-
26
- interface Weather {
27
- rain: number
28
- temperature: number
29
- humidity: number
30
- wind: string
31
- }
32
-
33
- @customElement('project-detail')
34
- export class ProjectDetail extends ScopedElementsMixin(PageView) {
35
- static styles = [
36
- ScrollbarStyles,
37
- css`
38
- :host {
39
- display: grid;
40
- grid-template-rows: 55px auto;
41
- color: #4e5055;
42
-
43
- width: 100%;
44
- background-color: var(--md-sys-color-background, #f6f6f6);
45
- overflow-y: auto;
46
-
47
- --grid-record-emphasized-background-color: red;
48
- --grid-record-emphasized-color: yellow;
49
- }
50
-
51
- md-outlined-button {
52
- --md-outlined-button-container-height: 30px;
53
- --md-outlined-button-trailing-space: var(--spacing-medium, 8px);
54
- --md-outlined-button-leading-space: var(--spacing-medium, 8px);
55
- --md-sys-color-outline: rgba(51,51,51,.20);
56
- }
57
-
58
- *[bold] {
59
- font-weight: bold;
60
- }
61
-
62
- div[header] {
63
- display: flex;
64
- margin: 0px var(--spacing-large, 12px);
65
-
66
- h2 {
67
- flex: 0.5;
68
- color: #3f71a0;
69
- font-size:18px;
70
- }
71
-
72
- div[button-container] {
73
- display: flex;
74
- align-items: center;
75
- justify-content: end;
76
- flex: 0.5;
77
-
78
- md-elevated-button {
79
- margin: 0 var(--spacing-small, 4px);
80
-
81
- --md-elevated-button-container-height: 32px;
82
- --md-elevated-button-label-text-size: 16px;
83
- --md-elevated-button-container-color: #0595e5;
84
-
85
- --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
86
- --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
87
- --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
88
- --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
89
- --md-elevated-button-icon-color: var(--md-sys-color-on-primary);
90
- --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
91
- --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
92
- --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
93
- }
94
- }
95
- }
96
-
97
- div[body] {
98
- display: flex;
99
- margin: var(--spacing-large, 12px);
100
- margin-top:0;
101
- gap: var(--spacing-medium, 8px);
102
-
103
- h3 {
104
- color: #2e79be;
105
- font-size: 16px;
106
- margin: 0px;
107
-
108
- a {
109
- text-decoration: none;
110
- color: #2e79be;
111
- }
112
- }
113
-
114
- & > div {
115
- display: flex;
116
- flex: 1;
117
- gap: var(--spacing-medium, 8px);
118
- flex-direction: column;
119
-
120
- & > div {
121
- display: flex;
122
- flex-direction: column;
123
- background-color: var(--md-sys-color-on-primary);
124
- border: 1px solid #cccccc80;
125
- gap: var(--spacing-medium, 8px);
126
- padding: var(--spacing-large, 12px);
127
- border-radius: 5px;
128
- }
129
-
130
- div[left-top] {
131
- div[content-1] {
132
- display: flex;
133
- align-items: center;
134
- gap: var(--spacing-medium, 8px);
135
- font-size: 14px;
136
-
137
- img {
138
- width: 42%;
139
- height: auto;
140
- aspect-ratio: 1920 / 1080;
141
- border: 1px solid #cccccc80;
142
- }
143
- img[no-image] {
144
- object-fit: contain;
145
- opacity: 0.5;
146
- }
147
- }
148
- div[content-2] {
149
- height: 65px;
150
- overflow-y: auto;
151
- font-size: 14px;
152
- }
153
- }
154
-
155
- div[left-bottom] {
156
- flex: 1;
157
-
158
- display: flex;
159
- flex-direction: column;
160
-
161
- [building-complex-img] {
162
- width: 100%;
163
- flex: 1;
164
- aspect-ratio: 2 / 1;
165
- }
166
-
167
- img {
168
- opacity: 0.5;
169
- }
170
-
171
- div[subject] {
172
- margin-bottom: var(--spacing-small, 4px);
173
- }
174
-
175
- div[building-container] {
176
- display: block;
177
-
178
- & > * {
179
- margin-right: var(--spacing-medium, 8px);
180
- margin-bottom: var(--spacing-medium, 8px);
181
- }
182
- md-outlined-button {
183
- --md-outlined-button-container-height: 30px;
184
- --md-outlined-button-trailing-space: var(--spacing-medium, 8px);
185
- --md-outlined-button-leading-space: var(--spacing-medium, 8px);
186
- --md-sys-color-outline: rgba(51,51,51,.20);
187
- }
188
- }
189
- }
190
-
191
- div[right-top] {
192
- div[state] {
193
- display: grid;
194
- grid-template-columns: 0.95fr 0.95fr 1.1fr;
195
- gap: var(--spacing-large, 12px);
196
-
197
- span[progress] {
198
- max-width: 150px;
199
- text-align: center;
200
- display: flex;
201
- justify-self: center;
202
- flex-direction: column;
203
- width: 100%;
204
-
205
- & > div {
206
- font-weight: bold;
207
- color: #2e79be;
208
- font-size: 12px;
209
- margin-top: var(--spacing-small, 4px);
210
- }
211
- & > div[week] {
212
- color: #06b5af;
213
- }
214
- }
215
- span[weather] {
216
- display: flex;
217
- flex-direction: column;
218
- gap: var(--spacing-small, 4px);
219
- margin-left: var(--spacing-medium, 8px);
220
- font-size:14px;
221
-
222
- & > div {
223
- display: flex;
224
- justify-content: space-between;
225
- --md-icon-size: 18px;
226
- margin-right: var(--spacing-small, 4px);
227
-
228
- & > span {
229
- display: flex;
230
- align-item:center;
231
- var(--spacing-tiny, 2px);
232
- }
233
- }
234
- }
235
- }
236
- div[inspection] {
237
- display: grid;
238
- grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr;
239
- margin-top: var(--spacing-small, 4px);
240
- background: #f6f6f6;
241
- border-radius: 7px;
242
- padding: var(--spacing-small, 4px) 0px;
243
-
244
- & > span {
245
- display: flex;
246
- flex-direction: column;
247
- align-items: center;
248
- justify-content: center;
249
-
250
- div[wait] {
251
- color: #4e5055;
252
- }
253
- div[request] {
254
- color: #2e79be;
255
- }
256
- div[pass] {
257
- color: #1bb401;
258
- }
259
- div[fail] {
260
- color: #ff4444;
261
- }
262
- }
263
- & > span[name] {
264
- flex-direction: row;
265
- text-align: right;
266
- gap: var(--spacing-medium, 8px);
267
- line-height:1.3;
268
-
269
- md-icon {
270
- width: 40px;
271
- height: 40px;
272
- border-radius: 7px;
273
- color: #fff;
274
- background: #f16154;
275
- }
276
- }
277
- }
278
- div[notice] {
279
- margin-top: var(--spacing-medium, 8px);
280
-
281
- div[name] {
282
- margin-left: 4px;
283
- }
284
- div[content] {
285
- background-color: #ebc8321a;
286
- border-radius: 10px;
287
- padding: var(--spacing-medium, 8px);
288
- font-size: 14px;
289
- margin-top: var(--spacing-small, 4px);
290
- }
291
- }
292
- }
293
-
294
- div[right-bottom] {
295
- flex: 1;
296
-
297
- display: flex;
298
- flex-direction: column;
299
-
300
- div[table-container] {
301
- flex: 1;
302
-
303
- overflow-y: auto;
304
- overflow-x: hidden;
305
- position: relative;
306
- }
307
-
308
- hr {
309
- position: sticky;
310
- margin: 0;
311
- top: 0px;
312
- border: 1px solid #3295f1;
313
- }
314
-
315
- table {
316
- width: 100%;
317
- border-collapse: collapse;
318
- table-layout: fixed;
319
- }
320
-
321
- thead {
322
- position: sticky;
323
- top: var(--spacing-tiny, 2px);
324
- background-color: #464651;
325
- color: var(--md-sys-color-on-primary);
326
- z-index: 1;
327
- }
328
-
329
- thead th {
330
- padding: var(--spacing-tiny, 2px) var(--spacing-small, 4px);
331
- font-size: 15px;
332
- text-wrap: pretty;
333
- }
334
-
335
- tbody td {
336
- border-bottom: 1px solid rgba(51,51,51,.20);
337
- padding: var(--spacing-small, 4px);
338
- text-align: center;
339
- white-space: nowrap;
340
- text-overflow: ellipsis;
341
- overflow: hidden;
342
- font-size: 13px;
343
- }
344
-
345
- md-elevated-button {
346
- margin: 0 var(--spacing-small, 4px);
347
-
348
- --md-elevated-button-container-height: 32px;
349
- --md-elevated-button-label-text-size: 16px;
350
- --md-elevated-button-container-color: #0595e5;
351
-
352
- --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
353
- --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
354
- --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
355
- --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
356
- --md-elevated-button-icon-color: var(--md-sys-color-on-primary);
357
- --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
358
- --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
359
- --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
360
-
361
- &[red] {
362
- --md-elevated-button-container-color: #e15757;
363
- }
364
- }
365
- }
366
- }
367
- }
368
- `
369
- ]
370
-
371
- get context() {
372
- return {
373
- title: '진행 중 프로젝트 상세 정보'
374
- }
375
- }
376
-
377
- private defaultProject = {
378
- name: '',
379
- buildingComplex: {
380
- address: '',
381
- area: 0,
382
- constructionCompany: '',
383
- clientCompany: '',
384
- supervisoryCompany: '',
385
- designCompany: '',
386
- constructionType: '',
387
- buildings: []
388
- }
389
- }
390
-
391
- @state() projectId: string = ''
392
- @state() project: Project = { ...this.defaultProject }
393
- @state() buildingInspections: BuildingInspection[] = []
394
- @state() inspectionSummary: InspectionSummary = {
395
- wait: 0,
396
- request: 0,
397
- pass: 0,
398
- fail: 0
399
- }
400
- @state() weather: Weather = {
401
- rain: 0,
402
- temperature: 0,
403
- humidity: 0,
404
- wind: ''
405
- }
406
-
407
- render() {
408
- return html`
409
- <div header>
410
- <h2>${this.project.name}</h2>
411
- <div button-container>
412
- <md-elevated-button href=${`project-update/${this.project.id}`}>
413
- <md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
414
- </md-elevated-button>
415
- <md-elevated-button href=${`project-plan-management/${this.project.id}`}>
416
- <md-icon slot="icon">description</md-icon>도면 관리
417
- </md-elevated-button>
418
- <md-elevated-button href=${`project-schedule/${this.project.id}`}>
419
- <md-icon slot="icon">event_note</md-icon>공정표 관리
420
- </md-elevated-button>
421
- </div>
422
- </div>
423
-
424
- <div body>
425
- <div>
426
- <div left-top>
427
- <h3>기본 정보</h3>
428
- <div content-1>
429
- <img
430
- ?no-image=${!this.project.mainPhoto?.fullpath}
431
- src=${this.project.mainPhoto?.fullpath || '/assets/images/no-image.png'}
432
- />
433
-
434
- <div>
435
- <div row>
436
- <span>- 면적 : </span>
437
- <span>${this.project.buildingComplex?.area?.toLocaleString()} ㎡</span>
438
- </div>
439
- <div row>
440
- <span>- 착공~준공 : </span>
441
- <span bold>${this.project.startDate}~${this.project.endDate}</span>
442
- </div>
443
- <div row>
444
- <span>- 발주처 : </span>
445
- <span>${this.project.buildingComplex?.clientCompany}</span>
446
- </div>
447
- <div row>
448
- <span>- 건설사 : </span>
449
- <span>${this.project.buildingComplex?.constructionCompany}</span>
450
- </div>
451
- <div row>
452
- <span>- 감리사 : </span>
453
- <span>${this.project.buildingComplex?.supervisoryCompany}</span>
454
- </div>
455
- <div row>
456
- <span>- 설계사 : </span>
457
- <span>${this.project.buildingComplex?.designCompany}</span>
458
- </div>
459
- </div>
460
- </div>
461
-
462
- <div content-2>
463
- <div row>
464
- <span>- 건설구분 : </span>
465
- <span>${this.project.buildingComplex?.constructionType}</span>
466
- </div>
467
- <div row>
468
- <span>- 공사금액 : </span>
469
- <span>${this.project.buildingComplex?.constructionCost?.toLocaleString()} 원</span>
470
- </div>
471
- <div row>
472
- <span>- 세대수 : </span>
473
- <span>${this.project.buildingComplex?.householdCount?.toLocaleString()}</span>
474
- </div>
475
- <div row>
476
- <span>- 기타 : </span>
477
- <span>${this.project.buildingComplex?.etc}</span>
478
- </div>
479
- </div>
480
- </div>
481
-
482
- <div left-bottom>
483
- <h3>조감도(BIM도면)</h3>
484
- ${this.project.buildingComplex?.drawing?.fullpath
485
- ? html`<div building-complex-img></div>`
486
- : html`<img building-complex-img src="/assets/images/img-building-complex-default.jpg" />`}
487
- <div>
488
- <div subject bold>개별 단지 상세정보 바로가기</div>
489
- <div building-container>
490
- ${this.project.buildingComplex?.buildings?.map(building => {
491
- return html`<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>
492
- ${building.name}
493
- </md-outlined-button>`
494
- })}
495
- </div>
496
- </div>
497
- </div>
498
- </div>
499
-
500
- <div>
501
- <div right-top>
502
- <h3>프로젝트 현황</h3>
503
- <div state>
504
- <span progress>
505
- <ox-progress-circle
506
- .value=${this.project.totalProgress}
507
- titleText="전체"
508
- suffix="%"
509
- fontSize="27px"
510
- fontColor="#4E5055"
511
- borderStyle="none"
512
- innerCircleSize="28%"
513
- circleColor="#0595E5"
514
- shadow="#00000026 4px 4px 4px"
515
- background="#eaf5fd"
516
- ></ox-progress-circle>
517
- <div>전체공정율(%)</div>
518
- </span>
519
- <span progress>
520
- <ox-progress-circle
521
- .value=${this.project.weeklyProgress}
522
- titleText="주간"
523
- suffix="%"
524
- fontSize="27px"
525
- fontColor="#4E5055"
526
- borderStyle="none"
527
- innerCircleSize="28%"
528
- circleColor="#06B5AF"
529
- shadow="#00000026 4px 4px 4px"
530
- background="#eaf7f7"
531
- ></ox-progress-circle>
532
- <div week>주간공정율(%)</div>
533
- </span>
534
- <span weather>
535
- <div bold>현장현황</div>
536
- <div>
537
- <span><md-icon slot="icon">rainy</md-icon>강수확률</span>
538
- <span bold>${this.weather.rain}%</span>
539
- </div>
540
- <div>
541
- <span><md-icon slot="icon">humidity_percentage</md-icon> 습도</span>
542
- <span bold>${this.weather.humidity}%</span>
543
- </div>
544
- <div>
545
- <span><md-icon slot="icon">thermostat</md-icon> 온도</span>
546
- <span bold>${this.weather.temperature}°C</span>
547
- </div>
548
- <div>
549
- <span><md-icon slot="icon">air</md-icon> 풍향</span>
550
- <span bold>${this.weather.wind}</span>
551
- </div>
552
- </span>
553
- </div>
554
- <div inspection>
555
- <span name bold>
556
- <md-icon slot="icon">list_alt_add</md-icon>
557
- 시공검측<br />현황
558
- </span>
559
- <span>
560
- <div>검측요청</div>
561
- <div bold>${this.inspectionSummary.wait}</div>
562
- </span>
563
- <span>
564
- <div>검측대기</div>
565
- <div bold>${this.inspectionSummary.request}</div>
566
- </span>
567
- <span>
568
- <div>합격</div>
569
- <div bold pass>${this.inspectionSummary.pass}</div>
570
- </span>
571
- <span>
572
- <div>불합격</div>
573
- <div bold fail>${this.inspectionSummary.fail}</div>
574
- </span>
575
- </div>
576
- <div notice>
577
- <div name bold>공지사항</div>
578
- <div content>${this.project.buildingComplex.notice}</div>
579
- </div>
580
- </div>
581
-
582
- <div right-bottom>
583
- <h3>검측 현황</h3>
584
- <div table-container>
585
- <hr />
586
- <table>
587
- <thead>
588
- <tr>
589
- <th width="3%"></th>
590
- <th width="10%">검측 위치</th>
591
- <th width="10%">공종</th>
592
- <th width="22%">내용</th>
593
- <th width="15%">검측 요청일</th>
594
- <th width="10%">검측 결과</th>
595
- </tr>
596
- </thead>
597
- <tbody>
598
- ${this.buildingInspections.map((inspection, idx) => {
599
- return html` <tr @click=${() => this._onClickInspection(inspection.id || '')}>
600
- <td>${idx + 1}</td>
601
- <td>${inspection?.buildingLevel?.building?.name} ${inspection?.buildingLevel?.floor}층</td>
602
- <td bold>${inspection.checklist?.constructionType}</td>
603
- <td>${inspection.checklist?.inspectionParts?.join(', ') || ''}</td>
604
- <td>${this._formatDate(inspection.requestDate)}</td>
605
- <td bold>${inspection.status && BUILDING_INSPECTION_STATUS[inspection.status]}</td>
606
- </tr>`
607
- })}
608
- </tbody>
609
- </table>
610
- </div>
611
- </div>
612
- </div>
613
- </div>
614
- `
615
- }
616
-
617
- async pageInitialized(lifecycle: PageLifecycle) {}
618
-
619
- async pageUpdated(changes: any, lifecycle: PageLifecycle) {
620
- if (this.active) {
621
- this.projectId = lifecycle.resourceId || ''
622
- await this.initProject(lifecycle.resourceId)
623
- }
624
- }
625
-
626
- async initProject(projectId: string = '') {
627
- const response = await client.query({
628
- query: gql`
629
- query Project($id: String!, $projectId: String!, $params: BuildingInspectionsOfProject!) {
630
- project(id: $id) {
631
- id
632
- name
633
- startDate
634
- endDate
635
- mainPhoto {
636
- fullpath
637
- }
638
- totalProgress
639
- weeklyProgress
640
- kpi
641
- inspPassRate
642
- robotProgressRate
643
- structuralSafetyRate
644
- buildingComplex {
645
- id
646
- address
647
- latitude
648
- longitude
649
- area
650
- clientCompany
651
- constructionCompany
652
- supervisoryCompany
653
- designCompany
654
- drawing {
655
- id
656
- name
657
- fullpath
658
- }
659
- constructionType
660
- constructionCost
661
- etc
662
- notice
663
- householdCount
664
- buildingCount
665
- buildings {
666
- id
667
- name
668
- floorCount
669
- }
670
- }
671
- }
672
-
673
- inspectionSummary: buildingInspectionSummaryOfProject(projectId: $projectId) {
674
- wait
675
- request
676
- pass
677
- fail
678
- }
679
-
680
- buildingInspectionsOfProject(params: $params) {
681
- items {
682
- id
683
- status
684
- requestDate
685
- buildingLevel {
686
- floor
687
- building {
688
- name
689
- }
690
- }
691
- checklist {
692
- name
693
- constructionType
694
- constructionDetailType
695
- inspectionParts
696
- }
697
- }
698
- total
699
- }
700
- }
701
- `,
702
- variables: {
703
- id: projectId,
704
- projectId,
705
- params: {
706
- projectId,
707
- limit: 10
708
- }
709
- }
710
- })
711
-
712
- if (response.errors) return
713
-
714
- this.project = response.data?.project || {}
715
- this.inspectionSummary = response.data?.inspectionSummary || {}
716
- this.buildingInspections = response.data?.buildingInspectionsOfProject?.items || []
717
-
718
- const { latitude, longitude } = this.project?.buildingComplex
719
- if (latitude && longitude) {
720
- this.weather = await _getWeather(latitude, longitude)
721
- }
722
- }
723
-
724
- private _onClickInspection(buildingInspectionId: string) {
725
- navigate(`building-inspection-detail-drawing/${buildingInspectionId}`)
726
- }
727
-
728
- private _formatDate(date: Date | undefined) {
729
- return date
730
- ? new Intl.DateTimeFormat('en-CA', {
731
- timeZone: 'Asia/Seoul',
732
- year: 'numeric',
733
- month: '2-digit',
734
- day: '2-digit'
735
- }).format(new Date(date))
736
- : ''
737
- }
738
- }