@dssp/project 0.0.8 → 0.0.10

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 (286) hide show
  1. package/client/pages/project/project-detail.ts +109 -30
  2. package/client/pages/project/project-list.ts +46 -10
  3. package/client/pages/project/project-schedule-list.ts +11 -3
  4. package/client/pages/project/project-schedule.ts +111 -312
  5. package/client/pages/project/project-setting-list.ts +11 -3
  6. package/client/pages/resource/construction-detail-type-popup.ts +201 -0
  7. package/client/pages/resource/construction-type-management.ts +40 -39
  8. package/client/pages/resource/inspection-drawing-type-management.ts +210 -0
  9. package/client/pages/resource/inspection-part-popup.ts +201 -0
  10. package/client/pages/resource/manager-management.ts +0 -27
  11. package/client/pages/{checklist/checklist-importer.ts → resource/resource-importer.ts} +11 -8
  12. package/client/pages/{checklist/checklist-list-page.ts → resource/resource-list-page.ts} +41 -25
  13. package/client/pages/resource/worker-type-management.ts +3 -37
  14. package/client/pages/task-resource/task-resource-importer.ts +97 -0
  15. package/client/pages/task-resource/task-resource-list-page.ts +356 -0
  16. package/client/route.ts +13 -1
  17. package/dist-client/pages/project/project-detail.d.ts +5 -1
  18. package/dist-client/pages/project/project-detail.js +123 -40
  19. package/dist-client/pages/project/project-detail.js.map +1 -1
  20. package/dist-client/pages/project/project-list.d.ts +33 -7
  21. package/dist-client/pages/project/project-list.js +26 -11
  22. package/dist-client/pages/project/project-list.js.map +1 -1
  23. package/dist-client/pages/project/project-schedule-list.js +11 -3
  24. package/dist-client/pages/project/project-schedule-list.js.map +1 -1
  25. package/dist-client/pages/project/project-schedule.d.ts +5 -1
  26. package/dist-client/pages/project/project-schedule.js +117 -306
  27. package/dist-client/pages/project/project-schedule.js.map +1 -1
  28. package/dist-client/pages/project/project-setting-list.js +11 -3
  29. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  30. package/dist-client/pages/resource/construction-detail-type-popup.d.ts +2 -0
  31. package/dist-client/pages/resource/construction-detail-type-popup.js +197 -0
  32. package/dist-client/pages/resource/construction-detail-type-popup.js.map +1 -0
  33. package/dist-client/pages/resource/construction-type-management.d.ts +12 -0
  34. package/dist-client/pages/resource/construction-type-management.js +30 -38
  35. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  36. package/dist-client/pages/resource/inspection-drawing-type-management.d.ts +34 -0
  37. package/dist-client/pages/resource/inspection-drawing-type-management.js +198 -0
  38. package/dist-client/pages/resource/inspection-drawing-type-management.js.map +1 -0
  39. package/dist-client/pages/resource/inspection-part-popup.d.ts +2 -0
  40. package/dist-client/pages/resource/inspection-part-popup.js +197 -0
  41. package/dist-client/pages/resource/inspection-part-popup.js.map +1 -0
  42. package/dist-client/pages/resource/manager-management.js +0 -27
  43. package/dist-client/pages/resource/manager-management.js.map +1 -1
  44. package/dist-client/pages/{checklist/checklist-importer.d.ts → resource/resource-importer.d.ts} +2 -2
  45. package/dist-client/pages/{checklist/checklist-importer.js → resource/resource-importer.js} +10 -10
  46. package/dist-client/pages/resource/resource-importer.js.map +1 -0
  47. package/dist-client/pages/{checklist/checklist-list-page.d.ts → resource/resource-list-page.d.ts} +6 -6
  48. package/dist-client/pages/{checklist/checklist-list-page.js → resource/resource-list-page.js} +41 -32
  49. package/dist-client/pages/resource/resource-list-page.js.map +1 -0
  50. package/dist-client/pages/resource/worker-type-management.d.ts +7 -1
  51. package/dist-client/pages/resource/worker-type-management.js +3 -45
  52. package/dist-client/pages/resource/worker-type-management.js.map +1 -1
  53. package/dist-client/pages/task-resource/task-resource-importer.d.ts +10 -0
  54. package/dist-client/pages/task-resource/task-resource-importer.js +101 -0
  55. package/dist-client/pages/task-resource/task-resource-importer.js.map +1 -0
  56. package/dist-client/pages/task-resource/task-resource-list-page.d.ts +63 -0
  57. package/dist-client/pages/task-resource/task-resource-list-page.js +332 -0
  58. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -0
  59. package/dist-client/route.d.ts +1 -1
  60. package/dist-client/route.js +9 -0
  61. package/dist-client/route.js.map +1 -1
  62. package/dist-client/tsconfig.tsbuildinfo +1 -1
  63. package/dist-server/controllers/import-task.d.ts +19 -0
  64. package/dist-server/controllers/import-task.js +104 -0
  65. package/dist-server/controllers/import-task.js.map +1 -0
  66. package/dist-server/index.d.ts +1 -0
  67. package/dist-server/index.js +1 -0
  68. package/dist-server/index.js.map +1 -1
  69. package/dist-server/migrations/1723861466413-seed-roles.d.ts +5 -0
  70. package/dist-server/migrations/1723861466413-seed-roles.js +117 -0
  71. package/dist-server/migrations/1723861466413-seed-roles.js.map +1 -0
  72. package/dist-server/migrations/1723861466414-seed-codes.d.ts +5 -0
  73. package/dist-server/migrations/1723861466414-seed-codes.js +132 -0
  74. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -0
  75. package/dist-server/migrations/1723861476419-seed-resources.d.ts +5 -0
  76. package/dist-server/migrations/1723861476419-seed-resources.js +57 -0
  77. package/dist-server/migrations/1723861476419-seed-resources.js.map +1 -0
  78. package/dist-server/migrations/1723861478420-seed-/bsample-project.d.ts +5 -0
  79. package/dist-server/migrations/1723861478420-seed-/bsample-project.js +68 -0
  80. package/dist-server/migrations/1723861478420-seed-/bsample-project.js.map +1 -0
  81. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.d.ts +5 -0
  82. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js +189 -0
  83. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js.map +1 -0
  84. package/dist-server/migrations/index.d.ts +1 -0
  85. package/dist-server/migrations/index.js +12 -0
  86. package/dist-server/migrations/index.js.map +1 -0
  87. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.d.ts +6 -0
  88. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js +56 -0
  89. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js.map +1 -0
  90. package/dist-server/service/construction-detail-type/construction-detail-type-query.d.ts +9 -0
  91. package/dist-server/service/construction-detail-type/construction-detail-type-query.js +53 -0
  92. package/dist-server/service/construction-detail-type/construction-detail-type-query.js.map +1 -0
  93. package/dist-server/service/construction-detail-type/construction-detail-type-type.d.ts +11 -0
  94. package/dist-server/service/construction-detail-type/construction-detail-type-type.js +43 -0
  95. package/dist-server/service/construction-detail-type/construction-detail-type-type.js.map +1 -0
  96. package/dist-server/service/construction-detail-type/construction-detail-type.d.ts +15 -0
  97. package/dist-server/service/construction-detail-type/construction-detail-type.js +69 -0
  98. package/dist-server/service/construction-detail-type/construction-detail-type.js.map +1 -0
  99. package/dist-server/service/construction-detail-type/index.d.ts +5 -0
  100. package/dist-server/service/construction-detail-type/index.js +9 -0
  101. package/dist-server/service/construction-detail-type/index.js.map +1 -0
  102. package/dist-server/service/construction-type/construction-type-query.d.ts +2 -0
  103. package/dist-server/service/construction-type/construction-type-query.js +14 -0
  104. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  105. package/dist-server/service/construction-type/construction-type.d.ts +2 -0
  106. package/dist-server/service/construction-type/construction-type.js +6 -0
  107. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  108. package/dist-server/service/index.d.ts +7 -5
  109. package/dist-server/service/index.js +21 -10
  110. package/dist-server/service/index.js.map +1 -1
  111. package/dist-server/service/inspection-drawing-type/index.d.ts +5 -0
  112. package/dist-server/service/inspection-drawing-type/index.js +9 -0
  113. package/dist-server/service/inspection-drawing-type/index.js.map +1 -0
  114. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.d.ts +6 -0
  115. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js +64 -0
  116. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js.map +1 -0
  117. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.d.ts +12 -0
  118. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +83 -0
  119. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -0
  120. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.d.ts +10 -0
  121. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js +39 -0
  122. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js.map +1 -0
  123. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.d.ts +16 -0
  124. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js +72 -0
  125. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js.map +1 -0
  126. package/dist-server/service/inspection-part/index.d.ts +5 -0
  127. package/dist-server/service/inspection-part/index.js +9 -0
  128. package/dist-server/service/inspection-part/index.js.map +1 -0
  129. package/dist-server/service/inspection-part/inspection-part-mutation.d.ts +6 -0
  130. package/dist-server/service/inspection-part/inspection-part-mutation.js +55 -0
  131. package/dist-server/service/inspection-part/inspection-part-mutation.js.map +1 -0
  132. package/dist-server/service/inspection-part/inspection-part-query.d.ts +10 -0
  133. package/dist-server/service/inspection-part/inspection-part-query.js +66 -0
  134. package/dist-server/service/inspection-part/inspection-part-query.js.map +1 -0
  135. package/dist-server/service/inspection-part/inspection-part-type.d.ts +11 -0
  136. package/dist-server/service/inspection-part/inspection-part-type.js +43 -0
  137. package/dist-server/service/inspection-part/inspection-part-type.js.map +1 -0
  138. package/dist-server/service/inspection-part/inspection-part.d.ts +15 -0
  139. package/dist-server/service/inspection-part/inspection-part.js +69 -0
  140. package/dist-server/service/inspection-part/inspection-part.js.map +1 -0
  141. package/dist-server/service/project/index.d.ts +0 -2
  142. package/dist-server/service/project/index.js +1 -3
  143. package/dist-server/service/project/index.js.map +1 -1
  144. package/dist-server/service/project/project-query.d.ts +7 -5
  145. package/dist-server/service/project/project-query.js +34 -38
  146. package/dist-server/service/project/project-query.js.map +1 -1
  147. package/dist-server/service/project/project-type.d.ts +3 -6
  148. package/dist-server/service/project/project-type.js +25 -35
  149. package/dist-server/service/project/project-type.js.map +1 -1
  150. package/dist-server/service/project/project.d.ts +3 -2
  151. package/dist-server/service/project/project.js +10 -10
  152. package/dist-server/service/project/project.js.map +1 -1
  153. package/dist-server/service/resource/index.d.ts +6 -0
  154. package/dist-server/service/resource/index.js +10 -0
  155. package/dist-server/service/resource/index.js.map +1 -0
  156. package/dist-server/service/resource/resource-mutation.d.ts +10 -0
  157. package/dist-server/service/resource/resource-mutation.js +132 -0
  158. package/dist-server/service/resource/resource-mutation.js.map +1 -0
  159. package/dist-server/service/resource/resource-query.d.ts +11 -0
  160. package/dist-server/service/{checklist/checklist-query.js → resource/resource-query.js} +33 -38
  161. package/dist-server/service/resource/resource-query.js.map +1 -0
  162. package/dist-server/service/resource/resource-type.d.ts +17 -0
  163. package/dist-server/service/resource/resource-type.js +65 -0
  164. package/dist-server/service/resource/resource-type.js.map +1 -0
  165. package/dist-server/service/resource/resource.d.ts +24 -0
  166. package/dist-server/service/resource/resource.js +93 -0
  167. package/dist-server/service/resource/resource.js.map +1 -0
  168. package/dist-server/service/task/task-mutation.js +6 -0
  169. package/dist-server/service/task/task-mutation.js.map +1 -1
  170. package/dist-server/service/task/task-query.d.ts +9 -1
  171. package/dist-server/service/task/task-query.js +142 -20
  172. package/dist-server/service/task/task-query.js.map +1 -1
  173. package/dist-server/service/task/task-type.d.ts +13 -0
  174. package/dist-server/service/task/task-type.js +57 -12
  175. package/dist-server/service/task/task-type.js.map +1 -1
  176. package/dist-server/service/task/task.d.ts +12 -5
  177. package/dist-server/service/task/task.js +51 -16
  178. package/dist-server/service/task/task.js.map +1 -1
  179. package/dist-server/service/task-resource/index.d.ts +6 -0
  180. package/dist-server/service/task-resource/index.js +10 -0
  181. package/dist-server/service/task-resource/index.js.map +1 -0
  182. package/dist-server/service/task-resource/task-resource-mutation.d.ts +10 -0
  183. package/dist-server/service/task-resource/task-resource-mutation.js +132 -0
  184. package/dist-server/service/task-resource/task-resource-mutation.js.map +1 -0
  185. package/dist-server/service/task-resource/task-resource-query.d.ts +7 -0
  186. package/dist-server/service/task-resource/task-resource-query.js +50 -0
  187. package/dist-server/service/task-resource/task-resource-query.js.map +1 -0
  188. package/dist-server/service/task-resource/task-resource-type.d.ts +17 -0
  189. package/dist-server/service/task-resource/task-resource-type.js +65 -0
  190. package/dist-server/service/task-resource/task-resource-type.js.map +1 -0
  191. package/dist-server/service/task-resource/task-resource.d.ts +13 -0
  192. package/dist-server/service/task-resource/task-resource.js +59 -0
  193. package/dist-server/service/task-resource/task-resource.js.map +1 -0
  194. package/dist-server/tsconfig.tsbuildinfo +1 -1
  195. package/helps/project/checklist-type-detail.md +160 -0
  196. package/helps/project/checklist-type.md +160 -0
  197. package/helps/project/task-resource.md +160 -0
  198. package/package.json +11 -7
  199. package/server/controllers/import-task.ts +140 -0
  200. package/server/index.ts +1 -0
  201. package/server/migrations/1723861466413-seed-roles.ts +128 -0
  202. package/server/migrations/1723861466414-seed-codes.ts +139 -0
  203. package/server/migrations/1723861476419-seed-resources.ts +62 -0
  204. package/server/migrations/1723861478420-seed-/bsample-project.ts +87 -0
  205. package/server/migrations/1723861478421-seed-/bsample-tasks.ts +194 -0
  206. package/server/migrations/index.ts +9 -0
  207. package/server/service/construction-detail-type/construction-detail-type-mutation.ts +57 -0
  208. package/server/service/construction-detail-type/construction-detail-type-query.ts +31 -0
  209. package/server/service/construction-detail-type/construction-detail-type-type.ts +26 -0
  210. package/server/service/construction-detail-type/construction-detail-type.ts +52 -0
  211. package/server/service/construction-detail-type/index.ts +6 -0
  212. package/server/service/construction-type/construction-type-query.ts +9 -0
  213. package/server/service/construction-type/construction-type.ts +8 -2
  214. package/server/service/index.ts +24 -11
  215. package/server/service/inspection-drawing-type/index.ts +6 -0
  216. package/server/service/inspection-drawing-type/inspection-drawing-type-mutation.ts +69 -0
  217. package/server/service/inspection-drawing-type/inspection-drawing-type-query.ts +55 -0
  218. package/server/service/inspection-drawing-type/inspection-drawing-type-type.ts +23 -0
  219. package/server/service/inspection-drawing-type/inspection-drawing-type.ts +68 -0
  220. package/server/service/inspection-part/index.ts +6 -0
  221. package/server/service/inspection-part/inspection-part-mutation.ts +52 -0
  222. package/server/service/inspection-part/inspection-part-query.ts +41 -0
  223. package/server/service/inspection-part/inspection-part-type.ts +26 -0
  224. package/server/service/inspection-part/inspection-part.ts +51 -0
  225. package/server/service/project/index.ts +0 -2
  226. package/server/service/project/project-query.ts +30 -38
  227. package/server/service/project/project-type.ts +22 -27
  228. package/server/service/project/project.ts +11 -12
  229. package/server/service/resource/index.ts +7 -0
  230. package/server/service/resource/resource-mutation.ts +137 -0
  231. package/server/service/resource/resource-query.ts +50 -0
  232. package/server/service/resource/resource-type.ts +41 -0
  233. package/server/service/resource/resource.ts +82 -0
  234. package/server/service/task/task-mutation.ts +8 -9
  235. package/server/service/task/task-query.ts +135 -22
  236. package/server/service/task/task-type.ts +41 -15
  237. package/server/service/task/task.ts +44 -15
  238. package/server/service/task-resource/index.ts +7 -0
  239. package/server/service/task-resource/task-resource-mutation.ts +140 -0
  240. package/server/service/task-resource/task-resource-query.ts +36 -0
  241. package/server/service/task-resource/task-resource-type.ts +41 -0
  242. package/server/service/task-resource/task-resource.ts +51 -0
  243. package/things-factory.config.js +1 -0
  244. package/translations/en.json +15 -1
  245. package/translations/ko.json +9 -5
  246. package/dist-client/pages/checklist/checklist-importer.js.map +0 -1
  247. package/dist-client/pages/checklist/checklist-list-page.js.map +0 -1
  248. package/dist-server/service/check-item/check-item-mutation.d.ts +0 -10
  249. package/dist-server/service/check-item/check-item-mutation.js +0 -129
  250. package/dist-server/service/check-item/check-item-mutation.js.map +0 -1
  251. package/dist-server/service/check-item/check-item-query.d.ts +0 -11
  252. package/dist-server/service/check-item/check-item-query.js +0 -86
  253. package/dist-server/service/check-item/check-item-query.js.map +0 -1
  254. package/dist-server/service/check-item/check-item-type.d.ts +0 -18
  255. package/dist-server/service/check-item/check-item-type.js +0 -69
  256. package/dist-server/service/check-item/check-item-type.js.map +0 -1
  257. package/dist-server/service/check-item/check-item.d.ts +0 -18
  258. package/dist-server/service/check-item/check-item.js +0 -84
  259. package/dist-server/service/check-item/check-item.js.map +0 -1
  260. package/dist-server/service/check-item/index.d.ts +0 -5
  261. package/dist-server/service/check-item/index.js +0 -9
  262. package/dist-server/service/check-item/index.js.map +0 -1
  263. package/dist-server/service/checklist/checklist-mutation.d.ts +0 -10
  264. package/dist-server/service/checklist/checklist-mutation.js +0 -129
  265. package/dist-server/service/checklist/checklist-mutation.js.map +0 -1
  266. package/dist-server/service/checklist/checklist-query.d.ts +0 -11
  267. package/dist-server/service/checklist/checklist-query.js.map +0 -1
  268. package/dist-server/service/checklist/checklist-type.d.ts +0 -18
  269. package/dist-server/service/checklist/checklist-type.js +0 -69
  270. package/dist-server/service/checklist/checklist-type.js.map +0 -1
  271. package/dist-server/service/checklist/checklist.d.ts +0 -26
  272. package/dist-server/service/checklist/checklist.js +0 -120
  273. package/dist-server/service/checklist/checklist.js.map +0 -1
  274. package/dist-server/service/checklist/index.d.ts +0 -5
  275. package/dist-server/service/checklist/index.js +0 -9
  276. package/dist-server/service/checklist/index.js.map +0 -1
  277. package/server/service/check-item/check-item-mutation.ts +0 -142
  278. package/server/service/check-item/check-item-query.ts +0 -56
  279. package/server/service/check-item/check-item-type.ts +0 -49
  280. package/server/service/check-item/check-item.ts +0 -74
  281. package/server/service/check-item/index.ts +0 -6
  282. package/server/service/checklist/checklist-mutation.ts +0 -142
  283. package/server/service/checklist/checklist-query.ts +0 -56
  284. package/server/service/checklist/checklist-type.ts +0 -49
  285. package/server/service/checklist/checklist.ts +0 -105
  286. package/server/service/checklist/index.ts +0 -6
@@ -3,12 +3,14 @@ import '@material/web/icon/icon.js';
3
3
  import '@material/web/button/elevated-button.js';
4
4
  import '@material/web/textfield/outlined-text-field.js';
5
5
  import '@material/web/button/outlined-button.js';
6
- import { PageView } from '@operato/shell';
6
+ import { navigate, PageView } from '@operato/shell';
7
7
  import { css, html } from 'lit';
8
8
  import { customElement, state } from 'lit/decorators.js';
9
9
  import { ScopedElementsMixin } from '@open-wc/scoped-elements';
10
10
  import { client } from '@operato/graphql';
11
+ import { ScrollbarStyles } from '@operato/styles';
11
12
  import gql from 'graphql-tag';
13
+ import { BUILDING_INSPECTION_STATUS } from './project-list';
12
14
  import _getWeather from '../lib/waether';
13
15
  import '@operato/chart/ox-progress-circle.js';
14
16
  let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
@@ -29,7 +31,9 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
29
31
  };
30
32
  this.projectId = '';
31
33
  this.project = Object.assign({}, this.defaultProject);
34
+ this.buildingInspections = [];
32
35
  this.inspectionSummary = {
36
+ wait: 0,
33
37
  request: 0,
34
38
  pass: 0,
35
39
  fail: 0
@@ -47,7 +51,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
47
51
  };
48
52
  }
49
53
  render() {
50
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
54
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
51
55
  return html `
52
56
  <div header>
53
57
  <h2>${this.project.name}</h2>
@@ -77,7 +81,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
77
81
  <div>
78
82
  <div row>
79
83
  <span>- 면적 : </span>
80
- <span>${(_c = this.project.buildingComplex) === null || _c === void 0 ? void 0 : _c.area}</span>
84
+ <span>${(_d = (_c = this.project.buildingComplex) === null || _c === void 0 ? void 0 : _c.area) === null || _d === void 0 ? void 0 : _d.toLocaleString()}</span>
81
85
  </div>
82
86
  <div row>
83
87
  <span>- 착공 ~ 준공 : </span>
@@ -85,19 +89,19 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
85
89
  </div>
86
90
  <div row>
87
91
  <span>- 발주처 : </span>
88
- <span>${(_d = this.project.buildingComplex) === null || _d === void 0 ? void 0 : _d.clientCompany}</span>
92
+ <span>${(_e = this.project.buildingComplex) === null || _e === void 0 ? void 0 : _e.clientCompany}</span>
89
93
  </div>
90
94
  <div row>
91
95
  <span>- 건설사 : </span>
92
- <span>${(_e = this.project.buildingComplex) === null || _e === void 0 ? void 0 : _e.constructionCompany}</span>
96
+ <span>${(_f = this.project.buildingComplex) === null || _f === void 0 ? void 0 : _f.constructionCompany}</span>
93
97
  </div>
94
98
  <div row>
95
99
  <span>- 감리사 : </span>
96
- <span>${(_f = this.project.buildingComplex) === null || _f === void 0 ? void 0 : _f.supervisoryCompany}</span>
100
+ <span>${(_g = this.project.buildingComplex) === null || _g === void 0 ? void 0 : _g.supervisoryCompany}</span>
97
101
  </div>
98
102
  <div row>
99
103
  <span>- 설계사 : </span>
100
- <span>${(_g = this.project.buildingComplex) === null || _g === void 0 ? void 0 : _g.designCompany}</span>
104
+ <span>${(_h = this.project.buildingComplex) === null || _h === void 0 ? void 0 : _h.designCompany}</span>
101
105
  </div>
102
106
  </div>
103
107
  </div>
@@ -105,32 +109,32 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
105
109
  <div content-2>
106
110
  <div row>
107
111
  <span>- 건설구분 : </span>
108
- <span>${(_h = this.project.buildingComplex) === null || _h === void 0 ? void 0 : _h.constructionType}</span>
112
+ <span>${(_j = this.project.buildingComplex) === null || _j === void 0 ? void 0 : _j.constructionType}</span>
109
113
  </div>
110
114
  <div row>
111
115
  <span>- 공사금액 : </span>
112
- <span>${(_j = this.project.buildingComplex) === null || _j === void 0 ? void 0 : _j.constructionCost}</span>
116
+ <span>${(_l = (_k = this.project.buildingComplex) === null || _k === void 0 ? void 0 : _k.constructionCost) === null || _l === void 0 ? void 0 : _l.toLocaleString()} 원</span>
113
117
  </div>
114
118
  <div row>
115
119
  <span>- 세대수 : </span>
116
- <span>${(_k = this.project.buildingComplex) === null || _k === void 0 ? void 0 : _k.householdCount}</span>
120
+ <span>${(_o = (_m = this.project.buildingComplex) === null || _m === void 0 ? void 0 : _m.householdCount) === null || _o === void 0 ? void 0 : _o.toLocaleString()}</span>
117
121
  </div>
118
122
  <div row>
119
123
  <span>- 기타 : </span>
120
- <span>${(_l = this.project.buildingComplex) === null || _l === void 0 ? void 0 : _l.etc}</span>
124
+ <span>${(_p = this.project.buildingComplex) === null || _p === void 0 ? void 0 : _p.etc}</span>
121
125
  </div>
122
126
  </div>
123
127
  </div>
124
128
 
125
129
  <div left-bottom>
126
130
  <h3>조감도(BIM도면)</h3>
127
- ${((_o = (_m = this.project.buildingComplex) === null || _m === void 0 ? void 0 : _m.drawing) === null || _o === void 0 ? void 0 : _o.fullpath)
131
+ ${((_r = (_q = this.project.buildingComplex) === null || _q === void 0 ? void 0 : _q.drawing) === null || _r === void 0 ? void 0 : _r.fullpath)
128
132
  ? html `<div building-complex-img></div>`
129
133
  : html `<img building-complex-img src="/assets/images/img-building-complex-default.jpg" />`}
130
134
  <div>
131
135
  <div subject bold>개별 단지 상세정보 바로가기</div>
132
136
  <div building-container>
133
- ${(_q = (_p = this.project.buildingComplex) === null || _p === void 0 ? void 0 : _p.buildings) === null || _q === void 0 ? void 0 : _q.map(building => {
137
+ ${(_t = (_s = this.project.buildingComplex) === null || _s === void 0 ? void 0 : _s.buildings) === null || _t === void 0 ? void 0 : _t.map(building => {
134
138
  return html `<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>
135
139
  ${building.name}
136
140
  </md-outlined-button>`;
@@ -146,7 +150,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
146
150
  <div state>
147
151
  <span progress>
148
152
  <ox-progress-circle
149
- .value=${70}
153
+ .value=${this.project.totalProgress}
150
154
  titleText="전체"
151
155
  suffix="%"
152
156
  fontSize="27px"
@@ -161,8 +165,9 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
161
165
  </span>
162
166
  <span progress>
163
167
  <ox-progress-circle
164
- .value=${30.4}
168
+ .value=${this.project.weeklyProgress}
165
169
  titleText="주간"
170
+ suffix="%"
166
171
  fontSize="27px"
167
172
  fontColor="#4E5055"
168
173
  borderStyle="none"
@@ -176,7 +181,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
176
181
  <span weather>
177
182
  <div bold>현장현황</div>
178
183
  <div>
179
- <span><md-icon slot="icon">rainy</md-icon> 강수확률</span>
184
+ <span><md-icon slot="icon">rainy</md-icon>강수확률</span>
180
185
  <span bold>${this.weather.rain}%</span>
181
186
  </div>
182
187
  <div>
@@ -200,6 +205,10 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
200
205
  </span>
201
206
  <span>
202
207
  <div>검측요청</div>
208
+ <div bold>${this.inspectionSummary.wait}</div>
209
+ </span>
210
+ <span>
211
+ <div>검측대기</div>
203
212
  <div bold>${this.inspectionSummary.request}</div>
204
213
  </span>
205
214
  <span>
@@ -218,25 +227,32 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
218
227
  </div>
219
228
 
220
229
  <div right-bottom>
221
- <h3>기타 사항</h3>
230
+ <h3>검측 현황</h3>
222
231
  <div table-container>
223
232
  <hr />
224
233
  <table>
225
234
  <thead>
226
235
  <tr>
227
- <th width="20%">검측 위치</th>
228
- <th width="20%">공종</th>
229
- <th width="40%">내용</th>
230
- <th width="20%">검측결과</th>
236
+ <th width="5%">순번</th>
237
+ <th width="10%">검측 위치</th>
238
+ <th width="10%">공종</th>
239
+ <th width="20%">내용</th>
240
+ <th width="15%">검측 요청일</th>
241
+ <th width="10%">검측 결과</th>
242
+ <th width="15%">검측 결과 데이터</th>
231
243
  </tr>
232
244
  </thead>
233
245
  <tbody>
234
- ${[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].map(inspection => {
235
- return html `<tr>
236
- <td>101동 3층</td>
237
- <td bold>단열공사</td>
238
- <td>단열재 시공 층간 차음재 시공 벽돌/블록 ALC 패널 공사</td>
239
- <td bold>검측완료</td>
246
+ ${this.buildingInspections.map((inspection, idx) => {
247
+ var _a, _b, _c, _d, _e, _f;
248
+ return html ` <tr @click=${() => this._onClickInspection(inspection.id || '')}>
249
+ <td>${idx + 1}</td>
250
+ <td>${(_b = (_a = inspection === null || inspection === void 0 ? void 0 : inspection.buildingLevel) === null || _a === void 0 ? void 0 : _a.building) === null || _b === void 0 ? void 0 : _b.name} ${(_c = inspection === null || inspection === void 0 ? void 0 : inspection.buildingLevel) === null || _c === void 0 ? void 0 : _c.floor}층</td>
251
+ <td bold>${(_d = inspection.checklist) === null || _d === void 0 ? void 0 : _d.constructionType}</td>
252
+ <td>${((_f = (_e = inspection.checklist) === null || _e === void 0 ? void 0 : _e.inspectionParts) === null || _f === void 0 ? void 0 : _f.join(', ')) || ''}</td>
253
+ <td>${this._formatDate(inspection.requestDate)}</td>
254
+ <td bold>${inspection.status && BUILDING_INSPECTION_STATUS[inspection.status]}</td>
255
+ <td>ㅁㅁㅁㅁㅁㅁ</td>
240
256
  </tr>`;
241
257
  })}
242
258
  </tbody>
@@ -251,14 +267,14 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
251
267
  async pageUpdated(changes, lifecycle) {
252
268
  if (this.active) {
253
269
  this.projectId = lifecycle.resourceId || '';
254
- await this.initProject(this.projectId);
270
+ await this.initProject(lifecycle.resourceId);
255
271
  }
256
272
  }
257
273
  async initProject(projectId = '') {
258
- var _a, _b, _c;
274
+ var _a, _b, _c, _d, _e;
259
275
  const response = await client.query({
260
276
  query: gql `
261
- query Project($id: String!, $projectId: String!) {
277
+ query Project($id: String!, $projectId: String!, $params: BuildingInspectionsOfProject!) {
262
278
  project(id: $id) {
263
279
  id
264
280
  name
@@ -302,30 +318,70 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
302
318
  }
303
319
  }
304
320
 
305
- inspectionSummary(projectId: $projectId) {
321
+ inspectionSummary: buildingInspectionSummaryOfProject(projectId: $projectId) {
322
+ wait
306
323
  request
307
324
  pass
308
325
  fail
309
326
  }
327
+
328
+ buildingInspectionsOfProject(params: $params) {
329
+ items {
330
+ id
331
+ status
332
+ requestDate
333
+ buildingLevel {
334
+ floor
335
+ building {
336
+ name
337
+ }
338
+ }
339
+ checklist {
340
+ name
341
+ constructionType
342
+ constructionDetailType
343
+ inspectionParts
344
+ }
345
+ }
346
+ total
347
+ }
310
348
  }
311
349
  `,
312
350
  variables: {
313
351
  id: projectId,
314
- projectId
352
+ projectId,
353
+ params: {
354
+ projectId,
355
+ limit: 20
356
+ }
315
357
  }
316
358
  });
317
359
  if (response.errors)
318
360
  return;
319
361
  this.project = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.project) || {};
320
362
  this.inspectionSummary = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.inspectionSummary) || {};
321
- const { latitude, longitude } = (_c = this.project) === null || _c === void 0 ? void 0 : _c.buildingComplex;
363
+ this.buildingInspections = ((_d = (_c = response.data) === null || _c === void 0 ? void 0 : _c.buildingInspectionsOfProject) === null || _d === void 0 ? void 0 : _d.items) || [];
364
+ const { latitude, longitude } = (_e = this.project) === null || _e === void 0 ? void 0 : _e.buildingComplex;
322
365
  if (latitude && longitude) {
323
366
  this.weather = await _getWeather(latitude, longitude);
324
367
  }
325
- console.log('init project : ', this.project);
368
+ }
369
+ _onClickInspection(buildingInspectionId) {
370
+ navigate(`building-inspection-detail-drawing/${buildingInspectionId}`);
371
+ }
372
+ _formatDate(date) {
373
+ return date
374
+ ? new Intl.DateTimeFormat('en-CA', {
375
+ timeZone: 'Asia/Seoul',
376
+ year: 'numeric',
377
+ month: '2-digit',
378
+ day: '2-digit'
379
+ }).format(new Date(date))
380
+ : '';
326
381
  }
327
382
  };
328
383
  ProjectDetail.styles = [
384
+ ScrollbarStyles,
329
385
  css `
330
386
  :host {
331
387
  display: grid;
@@ -393,6 +449,11 @@ ProjectDetail.styles = [
393
449
  color: #2e79be;
394
450
  font-size: 18px;
395
451
  margin: 0px;
452
+
453
+ a {
454
+ text-decoration: none;
455
+ color: #2e79be;
456
+ }
396
457
  }
397
458
 
398
459
  & > div {
@@ -462,8 +523,6 @@ ProjectDetail.styles = [
462
523
  }
463
524
 
464
525
  div[right-top] {
465
- flex: 3;
466
-
467
526
  div[state] {
468
527
  display: grid;
469
528
  grid-template-columns: 0.95fr 0.95fr 1.1fr;
@@ -505,7 +564,7 @@ ProjectDetail.styles = [
505
564
  }
506
565
  div[inspection] {
507
566
  display: grid;
508
- grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr;
567
+ grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr;
509
568
  margin-top: 5px;
510
569
  background: #f6f6f6;
511
570
  border-radius: 7px;
@@ -555,8 +614,6 @@ ProjectDetail.styles = [
555
614
  }
556
615
 
557
616
  div[right-bottom] {
558
- flex: 2;
559
-
560
617
  div[table-container] {
561
618
  width: 100%;
562
619
  height: 15rem;
@@ -590,6 +647,7 @@ ProjectDetail.styles = [
590
647
  thead th {
591
648
  padding: 5px;
592
649
  font-size: 15px;
650
+ text-wrap: pretty;
593
651
  }
594
652
 
595
653
  tbody td {
@@ -599,7 +657,28 @@ ProjectDetail.styles = [
599
657
  white-space: nowrap;
600
658
  text-overflow: ellipsis;
601
659
  overflow: hidden;
602
- font-size: 15px;
660
+ font-size: 13px;
661
+ }
662
+
663
+ md-elevated-button {
664
+ margin: 0px 3px;
665
+
666
+ --md-elevated-button-container-height: 35px;
667
+ --md-elevated-button-label-text-size: 16px;
668
+ --md-elevated-button-container-color: #0595e5;
669
+
670
+ --md-elevated-button-label-text-color: #fff;
671
+ --md-elevated-button-hover-label-text-color: #fff;
672
+ --md-elevated-button-pressed-label-text-color: #fff;
673
+ --md-elevated-button-focus-label-text-color: #fff;
674
+ --md-elevated-button-icon-color: #fff;
675
+ --md-elevated-button-hover-icon-color: #fff;
676
+ --md-elevated-button-pressed-icon-color: #fff;
677
+ --md-elevated-button-focus-icon-color: #fff;
678
+
679
+ &[red] {
680
+ --md-elevated-button-container-color: #e15757;
681
+ }
603
682
  }
604
683
  }
605
684
  }
@@ -614,6 +693,10 @@ __decorate([
614
693
  state(),
615
694
  __metadata("design:type", Object)
616
695
  ], ProjectDetail.prototype, "project", void 0);
696
+ __decorate([
697
+ state(),
698
+ __metadata("design:type", Array)
699
+ ], ProjectDetail.prototype, "buildingInspections", void 0);
617
700
  __decorate([
618
701
  state(),
619
702
  __metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"project-detail.js","sourceRoot":"","sources":["../../../client/pages/project/project-detail.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/textfield/outlined-text-field.js'\nimport '@material/web/button/outlined-button.js'\n\nimport { PageView } from '@operato/shell'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { css, html } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\n\nimport gql from 'graphql-tag'\nimport { Project } from './project-list'\nimport _getWeather from '../lib/waether'\nimport '@operato/chart/ox-progress-circle.js'\n\nexport interface InspectionSummary {\n request: number\n pass: number\n fail: number\n}\n\ninterface Weather {\n rain: number\n temperature: number\n humidity: number\n wind: string\n}\n\n@customElement('project-detail')\nexport class ProjectDetail extends ScopedElementsMixin(PageView) {\n static styles = [\n css`\n :host {\n display: grid;\n grid-template-rows: 75px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: #f7f7f7;\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n md-outlined-button {\n --md-outlined-button-container-height: 30px;\n --md-outlined-button-trailing-space: 15px;\n --md-outlined-button-leading-space: 15px;\n }\n\n *[bold] {\n font-weight: bold;\n }\n\n div[header] {\n display: flex;\n margin: 0px 20px;\n\n h2 {\n flex: 0.5;\n color: #3f71a0;\n }\n\n div[button-container] {\n display: flex;\n align-items: center;\n justify-content: end;\n flex: 0.5;\n\n md-elevated-button {\n margin: 0px 3px;\n\n --md-elevated-button-container-height: 35px;\n --md-elevated-button-label-text-size: 16px;\n --md-elevated-button-container-color: #0595e5;\n\n --md-elevated-button-label-text-color: #fff;\n --md-elevated-button-hover-label-text-color: #fff;\n --md-elevated-button-pressed-label-text-color: #fff;\n --md-elevated-button-focus-label-text-color: #fff;\n --md-elevated-button-icon-color: #fff;\n --md-elevated-button-hover-icon-color: #fff;\n --md-elevated-button-pressed-icon-color: #fff;\n --md-elevated-button-focus-icon-color: #fff;\n }\n }\n }\n\n div[body] {\n display: flex;\n margin: 0px 25px 25px 25px;\n gap: 10px;\n\n h3 {\n color: #2e79be;\n font-size: 18px;\n margin: 0px;\n }\n\n & > div {\n display: flex;\n flex: 1;\n gap: 10px;\n flex-direction: column;\n\n & > div {\n display: flex;\n flex-direction: column;\n background-color: #ffffff;\n border: 1px solid #cccccc80;\n gap: 10px;\n padding: 15px;\n border-radius: 5px;\n }\n\n div[left-top] {\n div[content-1] {\n display: flex;\n align-items: center;\n gap: 15px;\n\n img {\n width: 42%;\n height: auto;\n aspect-ratio: 1920 / 1080;\n }\n img[no-image] {\n object-fit: contain;\n opacity: 0.5;\n }\n\n div[row] {\n line-height: 25px;\n }\n }\n div[content-2] {\n height: 65px;\n overflow-y: auto;\n }\n }\n\n div[left-bottom] {\n [building-complex-img] {\n width: 100%;\n aspect-ratio: 2 / 1;\n }\n img {\n opacity: 0.5;\n }\n\n div[subject] {\n margin-bottom: 7px;\n }\n div[building-container] {\n display: block;\n height: 40px;\n overflow-y: auto;\n\n & > * {\n margin-right: 10px;\n margin-bottom: 7px;\n }\n }\n }\n\n div[right-top] {\n flex: 3;\n\n div[state] {\n display: grid;\n grid-template-columns: 0.95fr 0.95fr 1.1fr;\n gap: 15px;\n\n span[progress] {\n max-width: 170px;\n text-align: center;\n display: flex;\n justify-self: center;\n flex-direction: column;\n width: 100%;\n\n & > div {\n font-weight: bold;\n color: #2e79be;\n font-size: 12px;\n margin-top: 5px;\n }\n & > div[week] {\n color: #06b5af;\n }\n }\n span[weather] {\n display: flex;\n flex-direction: column;\n gap: 5px;\n margin-left: 10px;\n\n & > div {\n display: flex;\n justify-content: space-between;\n\n & > span {\n display: flex;\n }\n }\n }\n }\n div[inspection] {\n display: grid;\n grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr;\n margin-top: 5px;\n background: #f6f6f6;\n border-radius: 7px;\n padding: 7px 0px;\n\n & > span {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n div[pass] {\n color: #1bb401;\n }\n div[fail] {\n color: #ff4444;\n }\n }\n & > span[name] {\n flex-direction: row;\n text-align: right;\n gap: 10px;\n\n md-icon {\n width: 40px;\n height: 40px;\n border-radius: 7px;\n color: #fff;\n background: #f16154;\n }\n }\n }\n div[notice] {\n margin-top: 7px;\n\n div[name] {\n margin-left: 4px;\n }\n div[content] {\n background-color: #ebc8321a;\n border-radius: 10px;\n padding: 10px;\n font-size: 14px;\n margin-top: 6px;\n }\n }\n }\n\n div[right-bottom] {\n flex: 2;\n\n div[table-container] {\n width: 100%;\n height: 15rem;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n }\n\n hr {\n position: sticky;\n width: 100%;\n margin: 0;\n top: 0px;\n border: 1px solid #3295f1;\n }\n\n table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n }\n\n thead {\n position: sticky;\n top: 2px;\n background-color: #464651;\n color: #fff;\n z-index: 1;\n }\n\n thead th {\n padding: 5px;\n font-size: 15px;\n }\n\n tbody td {\n border-bottom: 1px solid #cccccc;\n padding: 5px 3px;\n text-align: center;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n font-size: 15px;\n }\n }\n }\n }\n `\n ]\n\n get context() {\n return {\n title: '진행 중 프로젝트 상세 정보'\n }\n }\n\n private defaultProject = {\n name: '',\n buildingComplex: {\n address: '',\n area: 0,\n constructionCompany: '',\n clientCompany: '',\n supervisoryCompany: '',\n designCompany: '',\n constructionType: '',\n buildings: []\n }\n }\n\n @state() projectId: string = ''\n @state() project: Project = { ...this.defaultProject }\n @state() inspectionSummary: InspectionSummary = {\n request: 0,\n pass: 0,\n fail: 0\n }\n @state() weather: Weather = {\n rain: 0,\n temperature: 0,\n humidity: 0,\n wind: ''\n }\n\n render() {\n return html`\n <div header>\n <h2>${this.project.name}</h2>\n <div button-container>\n <md-elevated-button href=${`project-update/${this.project.id}`}>\n <md-icon slot=\"icon\">assignment</md-icon>프로젝트 정보 수정\n </md-elevated-button>\n <md-elevated-button href=${`project-plan-management/${this.project.id}`}>\n <md-icon slot=\"icon\">description</md-icon>도면 관리\n </md-elevated-button>\n <md-elevated-button href=${`project-task-update/${this.project.id}`}>\n <md-icon slot=\"icon\">event_note</md-icon>공정표 관리\n </md-elevated-button>\n </div>\n </div>\n\n <div body>\n <div>\n <div left-top>\n <h3>기본 정보</h3>\n <div content-1>\n <img\n ?no-image=${!this.project.mainPhoto?.fullpath}\n src=${this.project.mainPhoto?.fullpath || '/assets/images/no-image.png'}\n />\n\n <div>\n <div row>\n <span>- 면적 : </span>\n <span>${this.project.buildingComplex?.area}</span>\n </div>\n <div row>\n <span>- 착공 ~ 준공 : </span>\n <span bold>${this.project.startDate} ~ ${this.project.endDate}</span>\n </div>\n <div row>\n <span>- 발주처 : </span>\n <span>${this.project.buildingComplex?.clientCompany}</span>\n </div>\n <div row>\n <span>- 건설사 : </span>\n <span>${this.project.buildingComplex?.constructionCompany}</span>\n </div>\n <div row>\n <span>- 감리사 : </span>\n <span>${this.project.buildingComplex?.supervisoryCompany}</span>\n </div>\n <div row>\n <span>- 설계사 : </span>\n <span>${this.project.buildingComplex?.designCompany}</span>\n </div>\n </div>\n </div>\n\n <div content-2>\n <div row>\n <span>- 건설구분 : </span>\n <span>${this.project.buildingComplex?.constructionType}</span>\n </div>\n <div row>\n <span>- 공사금액 : </span>\n <span>${this.project.buildingComplex?.constructionCost}</span>\n </div>\n <div row>\n <span>- 세대수 : </span>\n <span>${this.project.buildingComplex?.householdCount}</span>\n </div>\n <div row>\n <span>- 기타 : </span>\n <span>${this.project.buildingComplex?.etc}</span>\n </div>\n </div>\n </div>\n\n <div left-bottom>\n <h3>조감도(BIM도면)</h3>\n ${this.project.buildingComplex?.drawing?.fullpath\n ? html`<div building-complex-img></div>`\n : html`<img building-complex-img src=\"/assets/images/img-building-complex-default.jpg\" />`}\n <div>\n <div subject bold>개별 단지 상세정보 바로가기</div>\n <div building-container>\n ${this.project.buildingComplex?.buildings?.map(building => {\n return html`<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>\n ${building.name}\n </md-outlined-button>`\n })}\n </div>\n </div>\n </div>\n </div>\n\n <div>\n <div right-top>\n <h3>프로젝트 현황</h3>\n <div state>\n <span progress>\n <ox-progress-circle\n .value=${70}\n titleText=\"전체\"\n suffix=\"%\"\n fontSize=\"27px\"\n fontColor=\"#4E5055\"\n borderStyle=\"none\"\n innerCircleSize=\"28%\"\n circleColor=\"#0595E5\"\n shadow=\"#00000026 4px 4px 4px\"\n background=\"#eaf5fd\"\n ></ox-progress-circle>\n <div>전체공정율(%)</div>\n </span>\n <span progress>\n <ox-progress-circle\n .value=${30.4}\n titleText=\"주간\"\n fontSize=\"27px\"\n fontColor=\"#4E5055\"\n borderStyle=\"none\"\n innerCircleSize=\"28%\"\n circleColor=\"#06B5AF\"\n shadow=\"#00000026 4px 4px 4px\"\n background=\"#eaf7f7\"\n ></ox-progress-circle>\n <div week>주간공정율(%)</div>\n </span>\n <span weather>\n <div bold>현장현황</div>\n <div>\n <span><md-icon slot=\"icon\">rainy</md-icon> 강수확률</span>\n <span bold>${this.weather.rain}%</span>\n </div>\n <div>\n <span><md-icon slot=\"icon\">humidity_percentage</md-icon> 습도</span>\n <span bold>${this.weather.humidity}%</span>\n </div>\n <div>\n <span><md-icon slot=\"icon\">thermostat</md-icon> 온도</span>\n <span bold>${this.weather.temperature}°C</span>\n </div>\n <div>\n <span><md-icon slot=\"icon\">air</md-icon> 풍향</span>\n <span bold>${this.weather.wind}</span>\n </div>\n </span>\n </div>\n <div inspection>\n <span name bold>\n <md-icon slot=\"icon\">list_alt_add</md-icon>\n 시공검측<br />현황\n </span>\n <span>\n <div>검측요청</div>\n <div bold>${this.inspectionSummary.request}</div>\n </span>\n <span>\n <div>합격</div>\n <div bold pass>${this.inspectionSummary.pass}</div>\n </span>\n <span>\n <div>불합격</div>\n <div bold fail>${this.inspectionSummary.fail}</div>\n </span>\n </div>\n <div notice>\n <div name bold>공지사항</div>\n <div content>${this.project.buildingComplex.notice}</div>\n </div>\n </div>\n\n <div right-bottom>\n <h3>기타 사항</h3>\n <div table-container>\n <hr />\n <table>\n <thead>\n <tr>\n <th width=\"20%\">검측 위치</th>\n <th width=\"20%\">공종</th>\n <th width=\"40%\">내용</th>\n <th width=\"20%\">검측결과</th>\n </tr>\n </thead>\n <tbody>\n ${[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].map(inspection => {\n return html`<tr>\n <td>101동 3층</td>\n <td bold>단열공사</td>\n <td>단열재 시공 층간 차음재 시공 벽돌/블록 및 ALC 패널 공사</td>\n <td bold>검측완료</td>\n </tr>`\n })}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n `\n }\n\n async pageInitialized(lifecycle: PageLifecycle) {}\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.projectId = lifecycle.resourceId || ''\n await this.initProject(this.projectId)\n }\n }\n\n async initProject(projectId: string = '') {\n const response = await client.query({\n query: gql`\n query Project($id: String!, $projectId: String!) {\n project(id: $id) {\n id\n name\n startDate\n endDate\n mainPhoto {\n fullpath\n }\n totalProgress\n weeklyProgress\n kpi\n inspPassRate\n robotProgressRate\n structuralSafetyRate\n buildingComplex {\n id\n address\n latitude\n longitude\n area\n clientCompany\n constructionCompany\n supervisoryCompany\n designCompany\n drawing {\n id\n name\n fullpath\n }\n constructionType\n constructionCost\n etc\n notice\n householdCount\n buildingCount\n buildings {\n id\n name\n floorCount\n }\n }\n }\n\n inspectionSummary(projectId: $projectId) {\n request\n pass\n fail\n }\n }\n `,\n variables: {\n id: projectId,\n projectId\n }\n })\n\n if (response.errors) return\n\n this.project = response.data?.project || {}\n this.inspectionSummary = response.data?.inspectionSummary || {}\n\n const { latitude, longitude } = this.project?.buildingComplex\n if (latitude && longitude) {\n this.weather = await _getWeather(latitude, longitude)\n }\n\n console.log('init project : ', this.project)\n }\n}\n"]}
1
+ {"version":3,"file":"project-detail.js","sourceRoot":"","sources":["../../../client/pages/project/project-detail.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,yCAAyC,CAAA;AAChD,OAAO,gDAAgD,CAAA;AACvD,OAAO,yCAAyC,CAAA;AAEhD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,0BAA0B,EAAyD,MAAM,gBAAgB,CAAA;AAClH,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,sCAAsC,CAAA;AAiBtC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,mBAAmB,CAAC,QAAQ,CAAC;IAAzD;;QAyTG,mBAAc,GAAG;YACvB,IAAI,EAAE,EAAE;YACR,eAAe,EAAE;gBACf,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,CAAC;gBACP,mBAAmB,EAAE,EAAE;gBACvB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,aAAa,EAAE,EAAE;gBACjB,gBAAgB,EAAE,EAAE;gBACpB,SAAS,EAAE,EAAE;aACd;SACF,CAAA;QAEQ,cAAS,GAAW,EAAE,CAAA;QACtB,YAAO,qBAAiB,IAAI,CAAC,cAAc,EAAE;QAC7C,wBAAmB,GAAyB,EAAE,CAAA;QAC9C,sBAAiB,GAAsB;YAC9C,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;SACR,CAAA;QACQ,YAAO,GAAY;YAC1B,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,EAAE;SACT,CAAA;IA+UH,CAAC;IAjXC,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,iBAAiB;SACzB,CAAA;IACH,CAAC;IAgCD,MAAM;;QACJ,OAAO,IAAI,CAAA;;cAED,IAAI,CAAC,OAAO,CAAC,IAAI;;qCAEM,kBAAkB,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;;;qCAGnC,2BAA2B,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;;;qCAG5C,uBAAuB,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;;;;;;;;;;;;4BAYjD,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,SAAS,0CAAE,QAAQ,CAAA;sBACvC,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,SAAS,0CAAE,QAAQ,KAAI,6BAA6B;;;;;;0BAM7D,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,IAAI,0CAAE,cAAc,EAAE;;;;+BAI/C,IAAI,CAAC,OAAO,CAAC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;;;;0BAIrD,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,aAAa;;;;0BAI3C,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,mBAAmB;;;;0BAIjD,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,kBAAkB;;;;0BAIhD,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,aAAa;;;;;;;;wBAQ7C,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,gBAAgB;;;;wBAI9C,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,gBAAgB,0CAAE,cAAc,EAAE;;;;wBAIhE,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,cAAc,0CAAE,cAAc,EAAE;;;;wBAI9D,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,GAAG;;;;;;;cAO3C,CAAA,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,OAAO,0CAAE,QAAQ;YAC/C,CAAC,CAAC,IAAI,CAAA,kCAAkC;YACxC,CAAC,CAAC,IAAI,CAAA,oFAAoF;;;;kBAItF,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,0CAAE,SAAS,0CAAE,GAAG,CAAC,QAAQ,CAAC,EAAE;YACxD,OAAO,IAAI,CAAA,4BAA4B,2BAA2B,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,QAAQ,CAAC,EAAE,EAAE;sBACzG,QAAQ,CAAC,IAAI;wCACK,CAAA;QACxB,CAAC,CAAC;;;;;;;;;;;;2BAYS,IAAI,CAAC,OAAO,CAAC,aAAa;;;;;;;;;;;;;;;2BAe1B,IAAI,CAAC,OAAO,CAAC,cAAc;;;;;;;;;;;;;;;;;+BAiBvB,IAAI,CAAC,OAAO,CAAC,IAAI;;;;+BAIjB,IAAI,CAAC,OAAO,CAAC,QAAQ;;;;+BAIrB,IAAI,CAAC,OAAO,CAAC,WAAW;;;;+BAIxB,IAAI,CAAC,OAAO,CAAC,IAAI;;;;;;;;;;;4BAWpB,IAAI,CAAC,iBAAiB,CAAC,IAAI;;;;4BAI3B,IAAI,CAAC,iBAAiB,CAAC,OAAO;;;;iCAIzB,IAAI,CAAC,iBAAiB,CAAC,IAAI;;;;iCAI3B,IAAI,CAAC,iBAAiB,CAAC,IAAI;;;;;6BAK/B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;oBAqB5C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;;YACjD,OAAO,IAAI,CAAA,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;4BACpE,GAAG,GAAG,CAAC;4BACP,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,0CAAE,QAAQ,0CAAE,IAAI,IAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,0CAAE,KAAK;iCACxE,MAAA,UAAU,CAAC,SAAS,0CAAE,gBAAgB;4BAC3C,CAAA,MAAA,MAAA,UAAU,CAAC,SAAS,0CAAE,eAAe,0CAAE,IAAI,CAAC,IAAI,CAAC,KAAI,EAAE;4BACvD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC;iCACnC,UAAU,CAAC,MAAM,IAAI,0BAA0B,CAAC,UAAU,CAAC,MAAM,CAAC;;0BAEzE,CAAA;QACR,CAAC,CAAC;;;;;;;KAOf,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAwB,IAAG,CAAC;IAElD,KAAK,CAAC,WAAW,CAAC,OAAY,EAAE,SAAwB;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAA;YAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;SAC7C;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,YAAoB,EAAE;;QACtC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyET;YACD,SAAS,EAAE;gBACT,EAAE,EAAE,SAAS;gBACb,SAAS;gBACT,MAAM,EAAE;oBACN,SAAS;oBACT,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,MAAM;YAAE,OAAM;QAE3B,IAAI,CAAC,OAAO,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,OAAO,KAAI,EAAE,CAAA;QAC3C,IAAI,CAAC,iBAAiB,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,iBAAiB,KAAI,EAAE,CAAA;QAC/D,IAAI,CAAC,mBAAmB,GAAG,CAAA,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,4BAA4B,0CAAE,KAAK,KAAI,EAAE,CAAA;QAEnF,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,eAAe,CAAA;QAC7D,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,IAAI,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;SACtD;IACH,CAAC;IAEO,kBAAkB,CAAC,oBAA4B;QACrD,QAAQ,CAAC,sCAAsC,oBAAoB,EAAE,CAAC,CAAA;IACxE,CAAC;IAEO,WAAW,CAAC,IAAsB;QACxC,OAAO,IAAI;YACT,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC/B,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;;AAlqBM,oBAAM,GAAG;IACd,eAAe;IACf,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6SF;CACF,CAAA;AAsBD;IAAC,KAAK,EAAE;;gDAAuB;AAC/B;IAAC,KAAK,EAAE;;8CAA8C;AACtD;IAAC,KAAK,EAAE;;0DAA+C;AACvD;IAAC,KAAK,EAAE;;wDAKP;AACD;IAAC,KAAK,EAAE;;8CAKP;AArVU,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CAoqBzB;SApqBY,aAAa","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/textfield/outlined-text-field.js'\nimport '@material/web/button/outlined-button.js'\n\nimport { navigate, PageView } from '@operato/shell'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { css, html } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport gql from 'graphql-tag'\nimport { BUILDING_INSPECTION_STATUS, BuildingInspection, BuildingInspectionStatus, Project } from './project-list'\nimport _getWeather from '../lib/waether'\nimport '@operato/chart/ox-progress-circle.js'\n\nexport interface InspectionSummary {\n wait: number\n request: number\n pass: number\n fail: number\n}\n\ninterface Weather {\n rain: number\n temperature: number\n humidity: number\n wind: string\n}\n\n@customElement('project-detail')\nexport class ProjectDetail extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: grid;\n grid-template-rows: 75px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: #f7f7f7;\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n md-outlined-button {\n --md-outlined-button-container-height: 30px;\n --md-outlined-button-trailing-space: 15px;\n --md-outlined-button-leading-space: 15px;\n }\n\n *[bold] {\n font-weight: bold;\n }\n\n div[header] {\n display: flex;\n margin: 0px 20px;\n\n h2 {\n flex: 0.5;\n color: #3f71a0;\n }\n\n div[button-container] {\n display: flex;\n align-items: center;\n justify-content: end;\n flex: 0.5;\n\n md-elevated-button {\n margin: 0px 3px;\n\n --md-elevated-button-container-height: 35px;\n --md-elevated-button-label-text-size: 16px;\n --md-elevated-button-container-color: #0595e5;\n\n --md-elevated-button-label-text-color: #fff;\n --md-elevated-button-hover-label-text-color: #fff;\n --md-elevated-button-pressed-label-text-color: #fff;\n --md-elevated-button-focus-label-text-color: #fff;\n --md-elevated-button-icon-color: #fff;\n --md-elevated-button-hover-icon-color: #fff;\n --md-elevated-button-pressed-icon-color: #fff;\n --md-elevated-button-focus-icon-color: #fff;\n }\n }\n }\n\n div[body] {\n display: flex;\n margin: 0px 25px 25px 25px;\n gap: 10px;\n\n h3 {\n color: #2e79be;\n font-size: 18px;\n margin: 0px;\n\n a {\n text-decoration: none;\n color: #2e79be;\n }\n }\n\n & > div {\n display: flex;\n flex: 1;\n gap: 10px;\n flex-direction: column;\n\n & > div {\n display: flex;\n flex-direction: column;\n background-color: #ffffff;\n border: 1px solid #cccccc80;\n gap: 10px;\n padding: 15px;\n border-radius: 5px;\n }\n\n div[left-top] {\n div[content-1] {\n display: flex;\n align-items: center;\n gap: 15px;\n\n img {\n width: 42%;\n height: auto;\n aspect-ratio: 1920 / 1080;\n }\n img[no-image] {\n object-fit: contain;\n opacity: 0.5;\n }\n\n div[row] {\n line-height: 25px;\n }\n }\n div[content-2] {\n height: 65px;\n overflow-y: auto;\n }\n }\n\n div[left-bottom] {\n [building-complex-img] {\n width: 100%;\n aspect-ratio: 2 / 1;\n }\n img {\n opacity: 0.5;\n }\n\n div[subject] {\n margin-bottom: 7px;\n }\n div[building-container] {\n display: block;\n height: 40px;\n overflow-y: auto;\n\n & > * {\n margin-right: 10px;\n margin-bottom: 7px;\n }\n }\n }\n\n div[right-top] {\n div[state] {\n display: grid;\n grid-template-columns: 0.95fr 0.95fr 1.1fr;\n gap: 15px;\n\n span[progress] {\n max-width: 170px;\n text-align: center;\n display: flex;\n justify-self: center;\n flex-direction: column;\n width: 100%;\n\n & > div {\n font-weight: bold;\n color: #2e79be;\n font-size: 12px;\n margin-top: 5px;\n }\n & > div[week] {\n color: #06b5af;\n }\n }\n span[weather] {\n display: flex;\n flex-direction: column;\n gap: 5px;\n margin-left: 10px;\n\n & > div {\n display: flex;\n justify-content: space-between;\n\n & > span {\n display: flex;\n }\n }\n }\n }\n div[inspection] {\n display: grid;\n grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr;\n margin-top: 5px;\n background: #f6f6f6;\n border-radius: 7px;\n padding: 7px 0px;\n\n & > span {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n div[pass] {\n color: #1bb401;\n }\n div[fail] {\n color: #ff4444;\n }\n }\n & > span[name] {\n flex-direction: row;\n text-align: right;\n gap: 10px;\n\n md-icon {\n width: 40px;\n height: 40px;\n border-radius: 7px;\n color: #fff;\n background: #f16154;\n }\n }\n }\n div[notice] {\n margin-top: 7px;\n\n div[name] {\n margin-left: 4px;\n }\n div[content] {\n background-color: #ebc8321a;\n border-radius: 10px;\n padding: 10px;\n font-size: 14px;\n margin-top: 6px;\n }\n }\n }\n\n div[right-bottom] {\n div[table-container] {\n width: 100%;\n height: 15rem;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n }\n\n hr {\n position: sticky;\n width: 100%;\n margin: 0;\n top: 0px;\n border: 1px solid #3295f1;\n }\n\n table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n }\n\n thead {\n position: sticky;\n top: 2px;\n background-color: #464651;\n color: #fff;\n z-index: 1;\n }\n\n thead th {\n padding: 5px;\n font-size: 15px;\n text-wrap: pretty;\n }\n\n tbody td {\n border-bottom: 1px solid #cccccc;\n padding: 5px 3px;\n text-align: center;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n font-size: 13px;\n }\n\n md-elevated-button {\n margin: 0px 3px;\n\n --md-elevated-button-container-height: 35px;\n --md-elevated-button-label-text-size: 16px;\n --md-elevated-button-container-color: #0595e5;\n\n --md-elevated-button-label-text-color: #fff;\n --md-elevated-button-hover-label-text-color: #fff;\n --md-elevated-button-pressed-label-text-color: #fff;\n --md-elevated-button-focus-label-text-color: #fff;\n --md-elevated-button-icon-color: #fff;\n --md-elevated-button-hover-icon-color: #fff;\n --md-elevated-button-pressed-icon-color: #fff;\n --md-elevated-button-focus-icon-color: #fff;\n\n &[red] {\n --md-elevated-button-container-color: #e15757;\n }\n }\n }\n }\n }\n `\n ]\n\n get context() {\n return {\n title: '진행 중 프로젝트 상세 정보'\n }\n }\n\n private defaultProject = {\n name: '',\n buildingComplex: {\n address: '',\n area: 0,\n constructionCompany: '',\n clientCompany: '',\n supervisoryCompany: '',\n designCompany: '',\n constructionType: '',\n buildings: []\n }\n }\n\n @state() projectId: string = ''\n @state() project: Project = { ...this.defaultProject }\n @state() buildingInspections: BuildingInspection[] = []\n @state() inspectionSummary: InspectionSummary = {\n wait: 0,\n request: 0,\n pass: 0,\n fail: 0\n }\n @state() weather: Weather = {\n rain: 0,\n temperature: 0,\n humidity: 0,\n wind: ''\n }\n\n render() {\n return html`\n <div header>\n <h2>${this.project.name}</h2>\n <div button-container>\n <md-elevated-button href=${`project-update/${this.project.id}`}>\n <md-icon slot=\"icon\">assignment</md-icon>프로젝트 정보 수정\n </md-elevated-button>\n <md-elevated-button href=${`project-plan-management/${this.project.id}`}>\n <md-icon slot=\"icon\">description</md-icon>도면 관리\n </md-elevated-button>\n <md-elevated-button href=${`project-task-update/${this.project.id}`}>\n <md-icon slot=\"icon\">event_note</md-icon>공정표 관리\n </md-elevated-button>\n </div>\n </div>\n\n <div body>\n <div>\n <div left-top>\n <h3>기본 정보</h3>\n <div content-1>\n <img\n ?no-image=${!this.project.mainPhoto?.fullpath}\n src=${this.project.mainPhoto?.fullpath || '/assets/images/no-image.png'}\n />\n\n <div>\n <div row>\n <span>- 면적 : </span>\n <span>${this.project.buildingComplex?.area?.toLocaleString()}</span>\n </div>\n <div row>\n <span>- 착공 ~ 준공 : </span>\n <span bold>${this.project.startDate} ~ ${this.project.endDate}</span>\n </div>\n <div row>\n <span>- 발주처 : </span>\n <span>${this.project.buildingComplex?.clientCompany}</span>\n </div>\n <div row>\n <span>- 건설사 : </span>\n <span>${this.project.buildingComplex?.constructionCompany}</span>\n </div>\n <div row>\n <span>- 감리사 : </span>\n <span>${this.project.buildingComplex?.supervisoryCompany}</span>\n </div>\n <div row>\n <span>- 설계사 : </span>\n <span>${this.project.buildingComplex?.designCompany}</span>\n </div>\n </div>\n </div>\n\n <div content-2>\n <div row>\n <span>- 건설구분 : </span>\n <span>${this.project.buildingComplex?.constructionType}</span>\n </div>\n <div row>\n <span>- 공사금액 : </span>\n <span>${this.project.buildingComplex?.constructionCost?.toLocaleString()} 원</span>\n </div>\n <div row>\n <span>- 세대수 : </span>\n <span>${this.project.buildingComplex?.householdCount?.toLocaleString()}</span>\n </div>\n <div row>\n <span>- 기타 : </span>\n <span>${this.project.buildingComplex?.etc}</span>\n </div>\n </div>\n </div>\n\n <div left-bottom>\n <h3>조감도(BIM도면)</h3>\n ${this.project.buildingComplex?.drawing?.fullpath\n ? html`<div building-complex-img></div>`\n : html`<img building-complex-img src=\"/assets/images/img-building-complex-default.jpg\" />`}\n <div>\n <div subject bold>개별 단지 상세정보 바로가기</div>\n <div building-container>\n ${this.project.buildingComplex?.buildings?.map(building => {\n return html`<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>\n ${building.name}\n </md-outlined-button>`\n })}\n </div>\n </div>\n </div>\n </div>\n\n <div>\n <div right-top>\n <h3>프로젝트 현황</h3>\n <div state>\n <span progress>\n <ox-progress-circle\n .value=${this.project.totalProgress}\n titleText=\"전체\"\n suffix=\"%\"\n fontSize=\"27px\"\n fontColor=\"#4E5055\"\n borderStyle=\"none\"\n innerCircleSize=\"28%\"\n circleColor=\"#0595E5\"\n shadow=\"#00000026 4px 4px 4px\"\n background=\"#eaf5fd\"\n ></ox-progress-circle>\n <div>전체공정율(%)</div>\n </span>\n <span progress>\n <ox-progress-circle\n .value=${this.project.weeklyProgress}\n titleText=\"주간\"\n suffix=\"%\"\n fontSize=\"27px\"\n fontColor=\"#4E5055\"\n borderStyle=\"none\"\n innerCircleSize=\"28%\"\n circleColor=\"#06B5AF\"\n shadow=\"#00000026 4px 4px 4px\"\n background=\"#eaf7f7\"\n ></ox-progress-circle>\n <div week>주간공정율(%)</div>\n </span>\n <span weather>\n <div bold>현장현황</div>\n <div>\n <span><md-icon slot=\"icon\">rainy</md-icon>강수확률</span>\n <span bold>${this.weather.rain}%</span>\n </div>\n <div>\n <span><md-icon slot=\"icon\">humidity_percentage</md-icon> 습도</span>\n <span bold>${this.weather.humidity}%</span>\n </div>\n <div>\n <span><md-icon slot=\"icon\">thermostat</md-icon> 온도</span>\n <span bold>${this.weather.temperature}°C</span>\n </div>\n <div>\n <span><md-icon slot=\"icon\">air</md-icon> 풍향</span>\n <span bold>${this.weather.wind}</span>\n </div>\n </span>\n </div>\n <div inspection>\n <span name bold>\n <md-icon slot=\"icon\">list_alt_add</md-icon>\n 시공검측<br />현황\n </span>\n <span>\n <div>검측요청</div>\n <div bold>${this.inspectionSummary.wait}</div>\n </span>\n <span>\n <div>검측대기</div>\n <div bold>${this.inspectionSummary.request}</div>\n </span>\n <span>\n <div>합격</div>\n <div bold pass>${this.inspectionSummary.pass}</div>\n </span>\n <span>\n <div>불합격</div>\n <div bold fail>${this.inspectionSummary.fail}</div>\n </span>\n </div>\n <div notice>\n <div name bold>공지사항</div>\n <div content>${this.project.buildingComplex.notice}</div>\n </div>\n </div>\n\n <div right-bottom>\n <h3>검측 현황</h3>\n <div table-container>\n <hr />\n <table>\n <thead>\n <tr>\n <th width=\"5%\">순번</th>\n <th width=\"10%\">검측 위치</th>\n <th width=\"10%\">공종</th>\n <th width=\"20%\">내용</th>\n <th width=\"15%\">검측 요청일</th>\n <th width=\"10%\">검측 결과</th>\n <th width=\"15%\">검측 결과 데이터</th>\n </tr>\n </thead>\n <tbody>\n ${this.buildingInspections.map((inspection, idx) => {\n return html` <tr @click=${() => this._onClickInspection(inspection.id || '')}>\n <td>${idx + 1}</td>\n <td>${inspection?.buildingLevel?.building?.name} ${inspection?.buildingLevel?.floor}층</td>\n <td bold>${inspection.checklist?.constructionType}</td>\n <td>${inspection.checklist?.inspectionParts?.join(', ') || ''}</td>\n <td>${this._formatDate(inspection.requestDate)}</td>\n <td bold>${inspection.status && BUILDING_INSPECTION_STATUS[inspection.status]}</td>\n <td>ㅁㅁㅁㅁㅁㅁ</td>\n </tr>`\n })}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n `\n }\n\n async pageInitialized(lifecycle: PageLifecycle) {}\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.projectId = lifecycle.resourceId || ''\n await this.initProject(lifecycle.resourceId)\n }\n }\n\n async initProject(projectId: string = '') {\n const response = await client.query({\n query: gql`\n query Project($id: String!, $projectId: String!, $params: BuildingInspectionsOfProject!) {\n project(id: $id) {\n id\n name\n startDate\n endDate\n mainPhoto {\n fullpath\n }\n totalProgress\n weeklyProgress\n kpi\n inspPassRate\n robotProgressRate\n structuralSafetyRate\n buildingComplex {\n id\n address\n latitude\n longitude\n area\n clientCompany\n constructionCompany\n supervisoryCompany\n designCompany\n drawing {\n id\n name\n fullpath\n }\n constructionType\n constructionCost\n etc\n notice\n householdCount\n buildingCount\n buildings {\n id\n name\n floorCount\n }\n }\n }\n\n inspectionSummary: buildingInspectionSummaryOfProject(projectId: $projectId) {\n wait\n request\n pass\n fail\n }\n\n buildingInspectionsOfProject(params: $params) {\n items {\n id\n status\n requestDate\n buildingLevel {\n floor\n building {\n name\n }\n }\n checklist {\n name\n constructionType\n constructionDetailType\n inspectionParts\n }\n }\n total\n }\n }\n `,\n variables: {\n id: projectId,\n projectId,\n params: {\n projectId,\n limit: 20\n }\n }\n })\n\n if (response.errors) return\n\n this.project = response.data?.project || {}\n this.inspectionSummary = response.data?.inspectionSummary || {}\n this.buildingInspections = response.data?.buildingInspectionsOfProject?.items || []\n\n const { latitude, longitude } = this.project?.buildingComplex\n if (latitude && longitude) {\n this.weather = await _getWeather(latitude, longitude)\n }\n }\n\n private _onClickInspection(buildingInspectionId: string) {\n navigate(`building-inspection-detail-drawing/${buildingInspectionId}`)\n }\n\n private _formatDate(date: Date | undefined) {\n return date\n ? new Intl.DateTimeFormat('en-CA', {\n timeZone: 'Asia/Seoul',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n }).format(new Date(date))\n : ''\n }\n}\n"]}
@@ -3,14 +3,21 @@ import { PageView } from '@operato/shell';
3
3
  import { Attachment } from '@things-factory/attachment-base';
4
4
  import type { FileUpload } from 'graphql-upload/GraphQLUpload.js';
5
5
  export declare enum ProjectStatus {
6
- 'PROCEEDING' = "10",
7
- 'COMPLICATED' = "20"
6
+ 'ONGOING' = "10",
7
+ 'COMPLETED' = "20"
8
8
  }
9
- export declare enum InspectionStatus {
9
+ export declare enum BuildingInspectionStatus {
10
+ WAIT = "WAIT",
10
11
  REQUEST = "REQUEST",
11
12
  PASS = "PASS",
12
13
  FAIL = "FAIL"
13
14
  }
15
+ export declare const BUILDING_INSPECTION_STATUS: {
16
+ WAIT: string;
17
+ REQUEST: string;
18
+ PASS: string;
19
+ FAIL: string;
20
+ };
14
21
  export interface Project {
15
22
  id?: string;
16
23
  name: string;
@@ -69,15 +76,34 @@ export interface BuildingLevel {
69
76
  rebarDistributionDrawing?: Attachment;
70
77
  rebarDistributionDrawingThumbnail?: string;
71
78
  rebarDistributionDrawingUpload?: FileUpload;
79
+ building?: Building;
72
80
  buildingInspections?: BuildingInspection[];
73
81
  }
74
82
  export interface BuildingInspection {
75
83
  id?: string;
76
- indexX?: number;
77
- indexY?: number;
78
- status?: InspectionStatus;
79
- detail?: string;
80
84
  attatchments?: Attachment[];
85
+ status?: BuildingInspectionStatus;
86
+ requestDate?: Date;
87
+ buildingLevel?: BuildingLevel;
88
+ checklist?: Checklist;
89
+ createdAt?: Date;
90
+ updatedAt?: Date;
91
+ deletedAt?: Date;
92
+ }
93
+ export interface Checklist {
94
+ id: string;
95
+ name?: string;
96
+ documentNo?: string;
97
+ constructionType?: string;
98
+ constructionDetailType?: string;
99
+ location?: string;
100
+ constructionInspectorDate?: Date;
101
+ supervisorInspectorDate?: Date;
102
+ overallConstructorSignature?: string;
103
+ taskConstructorSignature?: string;
104
+ overallSupervisorySignature?: string;
105
+ taskSupervisorySignature?: string;
106
+ inspectionParts?: string[];
81
107
  }
82
108
  declare const ProjectListPage_base: typeof PageView & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/types/src/types").ScopedElementsHost>;
83
109
  export declare class ProjectListPage extends ProjectListPage_base {
@@ -8,15 +8,22 @@ import { client } from '@operato/graphql';
8
8
  import gql from 'graphql-tag';
9
9
  export var ProjectStatus;
10
10
  (function (ProjectStatus) {
11
- ProjectStatus["PROCEEDING"] = "10";
12
- ProjectStatus["COMPLICATED"] = "20";
11
+ ProjectStatus["ONGOING"] = "10";
12
+ ProjectStatus["COMPLETED"] = "20";
13
13
  })(ProjectStatus || (ProjectStatus = {}));
14
- export var InspectionStatus;
15
- (function (InspectionStatus) {
16
- InspectionStatus["REQUEST"] = "REQUEST";
17
- InspectionStatus["PASS"] = "PASS";
18
- InspectionStatus["FAIL"] = "FAIL";
19
- })(InspectionStatus || (InspectionStatus = {}));
14
+ export var BuildingInspectionStatus;
15
+ (function (BuildingInspectionStatus) {
16
+ BuildingInspectionStatus["WAIT"] = "WAIT";
17
+ BuildingInspectionStatus["REQUEST"] = "REQUEST";
18
+ BuildingInspectionStatus["PASS"] = "PASS";
19
+ BuildingInspectionStatus["FAIL"] = "FAIL";
20
+ })(BuildingInspectionStatus || (BuildingInspectionStatus = {}));
21
+ export const BUILDING_INSPECTION_STATUS = {
22
+ [BuildingInspectionStatus.WAIT]: '검측 대기',
23
+ [BuildingInspectionStatus.REQUEST]: '검측 요청',
24
+ [BuildingInspectionStatus.PASS]: '합격',
25
+ [BuildingInspectionStatus.FAIL]: '불합격'
26
+ };
20
27
  let ProjectListPage = class ProjectListPage extends ScopedElementsMixin(PageView) {
21
28
  constructor() {
22
29
  super(...arguments);
@@ -115,8 +122,8 @@ let ProjectListPage = class ProjectListPage extends ScopedElementsMixin(PageView
115
122
  var _a, _b;
116
123
  const response = await client.query({
117
124
  query: gql `
118
- query Projects($projectName: String!) {
119
- projects(projectName: $projectName) {
125
+ query Projects($filters: [Filter!]) {
126
+ projects(filters: $filters) {
120
127
  items {
121
128
  id
122
129
  name
@@ -142,7 +149,15 @@ let ProjectListPage = class ProjectListPage extends ScopedElementsMixin(PageView
142
149
  }
143
150
  `,
144
151
  variables: {
145
- projectName: this.projectName || ''
152
+ filters: this.projectName
153
+ ? [
154
+ {
155
+ name: 'name',
156
+ operator: 'search',
157
+ value: `%${this.projectName}%`
158
+ }
159
+ ]
160
+ : []
146
161
  }
147
162
  });
148
163
  this.projectList = ((_a = response.data.projects) === null || _a === void 0 ? void 0 : _a.items) || [];