@dssp/project 1.0.0 → 1.0.2

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 (327) hide show
  1. package/dist-client/bootstrap.d.ts +0 -0
  2. package/dist-client/bootstrap.js +2 -0
  3. package/dist-client/bootstrap.js.map +1 -0
  4. package/dist-client/index.d.ts +1 -0
  5. package/dist-client/index.js +2 -0
  6. package/dist-client/index.js.map +1 -0
  7. package/dist-client/pages/lib/chatbot-widget.d.ts +53 -0
  8. package/dist-client/pages/lib/chatbot-widget.js +631 -0
  9. package/dist-client/pages/lib/chatbot-widget.js.map +1 -0
  10. package/dist-client/pages/lib/select2-component.d.ts +23 -0
  11. package/dist-client/pages/lib/select2-component.js +181 -0
  12. package/dist-client/pages/lib/select2-component.js.map +1 -0
  13. package/dist-client/pages/lib/waether.d.ts +7 -0
  14. package/dist-client/pages/lib/waether.js +156 -0
  15. package/dist-client/pages/lib/waether.js.map +1 -0
  16. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  17. package/dist-client/pages/project/component/pagenation.js +142 -0
  18. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  19. package/dist-client/pages/project/component/project-update-header.d.ts +1 -0
  20. package/dist-client/pages/project/component/project-update-header.js +121 -0
  21. package/dist-client/pages/project/component/project-update-header.js.map +1 -0
  22. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.d.ts +1 -0
  23. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +308 -0
  24. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  25. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.d.ts +1 -0
  26. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +356 -0
  27. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  28. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.d.ts +1 -0
  29. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +682 -0
  30. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  31. package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +33 -0
  32. package/dist-client/pages/project/popup/checklist/task-checklist-view.js +676 -0
  33. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  34. package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
  35. package/dist-client/pages/project/popup/popup-plan-export.js +242 -0
  36. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
  37. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +13 -0
  38. package/dist-client/pages/project/popup/popup-plan-upload.js +265 -0
  39. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -0
  40. package/dist-client/pages/project/popup/popup-project-create.d.ts +12 -0
  41. package/dist-client/pages/project/popup/popup-project-create.js +152 -0
  42. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -0
  43. package/dist-client/pages/project/popup/popup-task-upload.d.ts +9 -0
  44. package/dist-client/pages/project/popup/popup-task-upload.js +105 -0
  45. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  46. package/dist-client/pages/project/project-completed-list.d.ts +23 -0
  47. package/dist-client/pages/project/project-completed-list.js +322 -0
  48. package/dist-client/pages/project/project-completed-list.js.map +1 -0
  49. package/dist-client/pages/project/project-detail.d.ts +47 -0
  50. package/dist-client/pages/project/project-detail.js +1065 -0
  51. package/dist-client/pages/project/project-detail.js.map +1 -0
  52. package/dist-client/pages/project/project-list.d.ts +201 -0
  53. package/dist-client/pages/project/project-list.js +410 -0
  54. package/dist-client/pages/project/project-list.js.map +1 -0
  55. package/dist-client/pages/project/project-plan-management.d.ts +33 -0
  56. package/dist-client/pages/project/project-plan-management.js +492 -0
  57. package/dist-client/pages/project/project-plan-management.js.map +1 -0
  58. package/dist-client/pages/project/project-setting-list.d.ts +31 -0
  59. package/dist-client/pages/project/project-setting-list.js +456 -0
  60. package/dist-client/pages/project/project-setting-list.js.map +1 -0
  61. package/dist-client/pages/project/project-task-list.d.ts +18 -0
  62. package/dist-client/pages/project/project-task-list.js +306 -0
  63. package/dist-client/pages/project/project-task-list.js.map +1 -0
  64. package/dist-client/pages/project/project-task.d.ts +51 -0
  65. package/dist-client/pages/project/project-task.js +692 -0
  66. package/dist-client/pages/project/project-task.js.map +1 -0
  67. package/dist-client/pages/project/project-update.d.ts +81 -0
  68. package/dist-client/pages/project/project-update.js +1477 -0
  69. package/dist-client/pages/project/project-update.js.map +1 -0
  70. package/dist-client/pages/resource/construction-detail-type-popup.d.ts +2 -0
  71. package/dist-client/pages/resource/construction-detail-type-popup.js +197 -0
  72. package/dist-client/pages/resource/construction-detail-type-popup.js.map +1 -0
  73. package/dist-client/pages/resource/construction-type-management.d.ts +34 -0
  74. package/dist-client/pages/resource/construction-type-management.js +214 -0
  75. package/dist-client/pages/resource/construction-type-management.js.map +1 -0
  76. package/dist-client/pages/resource/inspection-drawing-type-management.d.ts +48 -0
  77. package/dist-client/pages/resource/inspection-drawing-type-management.js +234 -0
  78. package/dist-client/pages/resource/inspection-drawing-type-management.js.map +1 -0
  79. package/dist-client/pages/resource/inspection-part-popup.d.ts +2 -0
  80. package/dist-client/pages/resource/inspection-part-popup.js +197 -0
  81. package/dist-client/pages/resource/inspection-part-popup.js.map +1 -0
  82. package/dist-client/pages/resource/resource-importer.d.ts +10 -0
  83. package/dist-client/pages/resource/resource-importer.js +101 -0
  84. package/dist-client/pages/resource/resource-importer.js.map +1 -0
  85. package/dist-client/pages/resource/resource-list-page.d.ts +62 -0
  86. package/dist-client/pages/resource/resource-list-page.js +331 -0
  87. package/dist-client/pages/resource/resource-list-page.js.map +1 -0
  88. package/dist-client/pages/resource/worker-type-management.d.ts +34 -0
  89. package/dist-client/pages/resource/worker-type-management.js +180 -0
  90. package/dist-client/pages/resource/worker-type-management.js.map +1 -0
  91. package/dist-client/pages/task/task-importer.d.ts +10 -0
  92. package/dist-client/pages/task/task-importer.js +101 -0
  93. package/dist-client/pages/task/task-importer.js.map +1 -0
  94. package/dist-client/pages/task/task-list-page.d.ts +62 -0
  95. package/dist-client/pages/task/task-list-page.js +322 -0
  96. package/dist-client/pages/task/task-list-page.js.map +1 -0
  97. package/dist-client/pages/task-resource/task-resource-importer.d.ts +10 -0
  98. package/dist-client/pages/task-resource/task-resource-importer.js +101 -0
  99. package/dist-client/pages/task-resource/task-resource-importer.js.map +1 -0
  100. package/dist-client/pages/task-resource/task-resource-list-page.d.ts +62 -0
  101. package/dist-client/pages/task-resource/task-resource-list-page.js +331 -0
  102. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -0
  103. package/dist-client/route.d.ts +1 -0
  104. package/dist-client/route.js +44 -0
  105. package/dist-client/route.js.map +1 -0
  106. package/dist-client/shared/domain-context.d.ts +18 -0
  107. package/dist-client/shared/domain-context.js +28 -0
  108. package/dist-client/shared/domain-context.js.map +1 -0
  109. package/dist-client/tsconfig.tsbuildinfo +1 -0
  110. package/dist-client/viewparts/domain-switch.d.ts +19 -0
  111. package/dist-client/viewparts/domain-switch.js +274 -0
  112. package/dist-client/viewparts/domain-switch.js.map +1 -0
  113. package/dist-server/controllers/export-tasks.d.ts +7 -0
  114. package/dist-server/controllers/export-tasks.js +29 -0
  115. package/dist-server/controllers/export-tasks.js.map +1 -0
  116. package/dist-server/controllers/import-task.d.ts +3 -0
  117. package/dist-server/controllers/import-task.js +113 -0
  118. package/dist-server/controllers/import-task.js.map +1 -0
  119. package/dist-server/controllers/index.d.ts +0 -0
  120. package/dist-server/controllers/index.js +1 -0
  121. package/dist-server/controllers/index.js.map +1 -0
  122. package/dist-server/controllers/parse-excel.d.ts +2 -0
  123. package/dist-server/controllers/parse-excel.js +74 -0
  124. package/dist-server/controllers/parse-excel.js.map +1 -0
  125. package/dist-server/controllers/types.d.ts +18 -0
  126. package/dist-server/controllers/types.js +3 -0
  127. package/dist-server/controllers/types.js.map +1 -0
  128. package/dist-server/index.d.ts +3 -0
  129. package/dist-server/index.js +7 -0
  130. package/dist-server/index.js.map +1 -0
  131. package/dist-server/middlewares/index.d.ts +1 -0
  132. package/dist-server/middlewares/index.js +7 -0
  133. package/dist-server/middlewares/index.js.map +1 -0
  134. package/dist-server/migrations/1723861466413-seed-roles.d.ts +5 -0
  135. package/dist-server/migrations/1723861466413-seed-roles.js +117 -0
  136. package/dist-server/migrations/1723861466413-seed-roles.js.map +1 -0
  137. package/dist-server/migrations/1723861466414-seed-codes.d.ts +5 -0
  138. package/dist-server/migrations/1723861466414-seed-codes.js +150 -0
  139. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -0
  140. package/dist-server/migrations/1723861476419-seed-resources.d.ts +5 -0
  141. package/dist-server/migrations/1723861476419-seed-resources.js +57 -0
  142. package/dist-server/migrations/1723861476419-seed-resources.js.map +1 -0
  143. package/dist-server/migrations/1723861478420-seed-/bsample-project.d.ts +5 -0
  144. package/dist-server/migrations/1723861478420-seed-/bsample-project.js +68 -0
  145. package/dist-server/migrations/1723861478420-seed-/bsample-project.js.map +1 -0
  146. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.d.ts +5 -0
  147. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js +189 -0
  148. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js.map +1 -0
  149. package/dist-server/migrations/index.d.ts +1 -0
  150. package/dist-server/migrations/index.js +12 -0
  151. package/dist-server/migrations/index.js.map +1 -0
  152. package/dist-server/routes.d.ts +1 -0
  153. package/dist-server/routes.js +105 -0
  154. package/dist-server/routes.js.map +1 -0
  155. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.d.ts +6 -0
  156. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js +56 -0
  157. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js.map +1 -0
  158. package/dist-server/service/construction-detail-type/construction-detail-type-query.d.ts +9 -0
  159. package/dist-server/service/construction-detail-type/construction-detail-type-query.js +53 -0
  160. package/dist-server/service/construction-detail-type/construction-detail-type-query.js.map +1 -0
  161. package/dist-server/service/construction-detail-type/construction-detail-type-type.d.ts +11 -0
  162. package/dist-server/service/construction-detail-type/construction-detail-type-type.js +43 -0
  163. package/dist-server/service/construction-detail-type/construction-detail-type-type.js.map +1 -0
  164. package/dist-server/service/construction-detail-type/construction-detail-type.d.ts +15 -0
  165. package/dist-server/service/construction-detail-type/construction-detail-type.js +69 -0
  166. package/dist-server/service/construction-detail-type/construction-detail-type.js.map +1 -0
  167. package/dist-server/service/construction-detail-type/index.d.ts +5 -0
  168. package/dist-server/service/construction-detail-type/index.js +9 -0
  169. package/dist-server/service/construction-detail-type/index.js.map +1 -0
  170. package/dist-server/service/construction-type/construction-type-mutation.d.ts +6 -0
  171. package/dist-server/service/construction-type/construction-type-mutation.js +64 -0
  172. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -0
  173. package/dist-server/service/construction-type/construction-type-query.d.ts +13 -0
  174. package/dist-server/service/construction-type/construction-type-query.js +87 -0
  175. package/dist-server/service/construction-type/construction-type-query.js.map +1 -0
  176. package/dist-server/service/construction-type/construction-type-type.d.ts +12 -0
  177. package/dist-server/service/construction-type/construction-type-type.js +47 -0
  178. package/dist-server/service/construction-type/construction-type-type.js.map +1 -0
  179. package/dist-server/service/construction-type/construction-type.d.ts +19 -0
  180. package/dist-server/service/construction-type/construction-type.js +88 -0
  181. package/dist-server/service/construction-type/construction-type.js.map +1 -0
  182. package/dist-server/service/construction-type/index.d.ts +5 -0
  183. package/dist-server/service/construction-type/index.js +9 -0
  184. package/dist-server/service/construction-type/index.js.map +1 -0
  185. package/dist-server/service/index.d.ts +15 -0
  186. package/dist-server/service/index.js +59 -0
  187. package/dist-server/service/index.js.map +1 -0
  188. package/dist-server/service/inspection-drawing-type/index.d.ts +5 -0
  189. package/dist-server/service/inspection-drawing-type/index.js +9 -0
  190. package/dist-server/service/inspection-drawing-type/index.js.map +1 -0
  191. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.d.ts +6 -0
  192. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js +64 -0
  193. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js.map +1 -0
  194. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.d.ts +12 -0
  195. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +78 -0
  196. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -0
  197. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.d.ts +10 -0
  198. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js +39 -0
  199. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js.map +1 -0
  200. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.d.ts +16 -0
  201. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js +72 -0
  202. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js.map +1 -0
  203. package/dist-server/service/inspection-part/index.d.ts +5 -0
  204. package/dist-server/service/inspection-part/index.js +9 -0
  205. package/dist-server/service/inspection-part/index.js.map +1 -0
  206. package/dist-server/service/inspection-part/inspection-part-mutation.d.ts +6 -0
  207. package/dist-server/service/inspection-part/inspection-part-mutation.js +55 -0
  208. package/dist-server/service/inspection-part/inspection-part-mutation.js.map +1 -0
  209. package/dist-server/service/inspection-part/inspection-part-query.d.ts +10 -0
  210. package/dist-server/service/inspection-part/inspection-part-query.js +66 -0
  211. package/dist-server/service/inspection-part/inspection-part-query.js.map +1 -0
  212. package/dist-server/service/inspection-part/inspection-part-type.d.ts +11 -0
  213. package/dist-server/service/inspection-part/inspection-part-type.js +43 -0
  214. package/dist-server/service/inspection-part/inspection-part-type.js.map +1 -0
  215. package/dist-server/service/inspection-part/inspection-part.d.ts +15 -0
  216. package/dist-server/service/inspection-part/inspection-part.js +69 -0
  217. package/dist-server/service/inspection-part/inspection-part.js.map +1 -0
  218. package/dist-server/service/manager/index.d.ts +7 -0
  219. package/dist-server/service/manager/index.js +11 -0
  220. package/dist-server/service/manager/index.js.map +1 -0
  221. package/dist-server/service/manager/manager-mutation.d.ts +5 -0
  222. package/dist-server/service/manager/manager-mutation.js +39 -0
  223. package/dist-server/service/manager/manager-mutation.js.map +1 -0
  224. package/dist-server/service/manager/manager-query.d.ts +4 -0
  225. package/dist-server/service/manager/manager-query.js +35 -0
  226. package/dist-server/service/manager/manager-query.js.map +1 -0
  227. package/dist-server/service/manager/manager-type.d.ts +15 -0
  228. package/dist-server/service/manager/manager-type.js +62 -0
  229. package/dist-server/service/manager/manager-type.js.map +1 -0
  230. package/dist-server/service/manager/manager.d.ts +8 -0
  231. package/dist-server/service/manager/manager.js +41 -0
  232. package/dist-server/service/manager/manager.js.map +1 -0
  233. package/dist-server/service/project/index.d.ts +5 -0
  234. package/dist-server/service/project/index.js +9 -0
  235. package/dist-server/service/project/index.js.map +1 -0
  236. package/dist-server/service/project/issue-project-code.d.ts +7 -0
  237. package/dist-server/service/project/issue-project-code.js +27 -0
  238. package/dist-server/service/project/issue-project-code.js.map +1 -0
  239. package/dist-server/service/project/project-mutation.d.ts +28 -0
  240. package/dist-server/service/project/project-mutation.js +499 -0
  241. package/dist-server/service/project/project-mutation.js.map +1 -0
  242. package/dist-server/service/project/project-query.d.ts +31 -0
  243. package/dist-server/service/project/project-query.js +307 -0
  244. package/dist-server/service/project/project-query.js.map +1 -0
  245. package/dist-server/service/project/project-type.d.ts +42 -0
  246. package/dist-server/service/project/project-type.js +152 -0
  247. package/dist-server/service/project/project-type.js.map +1 -0
  248. package/dist-server/service/project/project.d.ts +66 -0
  249. package/dist-server/service/project/project.js +247 -0
  250. package/dist-server/service/project/project.js.map +1 -0
  251. package/dist-server/service/resource/index.d.ts +6 -0
  252. package/dist-server/service/resource/index.js +10 -0
  253. package/dist-server/service/resource/index.js.map +1 -0
  254. package/dist-server/service/resource/resource-mutation.d.ts +10 -0
  255. package/dist-server/service/resource/resource-mutation.js +131 -0
  256. package/dist-server/service/resource/resource-mutation.js.map +1 -0
  257. package/dist-server/service/resource/resource-query.d.ts +11 -0
  258. package/dist-server/service/resource/resource-query.js +76 -0
  259. package/dist-server/service/resource/resource-query.js.map +1 -0
  260. package/dist-server/service/resource/resource-type.d.ts +17 -0
  261. package/dist-server/service/resource/resource-type.js +65 -0
  262. package/dist-server/service/resource/resource-type.js.map +1 -0
  263. package/dist-server/service/resource/resource.d.ts +24 -0
  264. package/dist-server/service/resource/resource.js +93 -0
  265. package/dist-server/service/resource/resource.js.map +1 -0
  266. package/dist-server/service/task/index.d.ts +5 -0
  267. package/dist-server/service/task/index.js +9 -0
  268. package/dist-server/service/task/index.js.map +1 -0
  269. package/dist-server/service/task/task-mutation.d.ts +10 -0
  270. package/dist-server/service/task/task-mutation.js +135 -0
  271. package/dist-server/service/task/task-mutation.js.map +1 -0
  272. package/dist-server/service/task/task-query.d.ts +21 -0
  273. package/dist-server/service/task/task-query.js +219 -0
  274. package/dist-server/service/task/task-query.js.map +1 -0
  275. package/dist-server/service/task/task-type.d.ts +31 -0
  276. package/dist-server/service/task/task-type.js +114 -0
  277. package/dist-server/service/task/task-type.js.map +1 -0
  278. package/dist-server/service/task/task.d.ts +35 -0
  279. package/dist-server/service/task/task.js +151 -0
  280. package/dist-server/service/task/task.js.map +1 -0
  281. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  282. package/dist-server/service/task-checklist-binding/index.js +9 -0
  283. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  284. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  285. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +188 -0
  286. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  287. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  288. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  289. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  290. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  291. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  292. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  293. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  294. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  295. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  296. package/dist-server/service/task-resource/index.d.ts +6 -0
  297. package/dist-server/service/task-resource/index.js +10 -0
  298. package/dist-server/service/task-resource/index.js.map +1 -0
  299. package/dist-server/service/task-resource/task-resource-mutation.d.ts +10 -0
  300. package/dist-server/service/task-resource/task-resource-mutation.js +132 -0
  301. package/dist-server/service/task-resource/task-resource-mutation.js.map +1 -0
  302. package/dist-server/service/task-resource/task-resource-query.d.ts +7 -0
  303. package/dist-server/service/task-resource/task-resource-query.js +45 -0
  304. package/dist-server/service/task-resource/task-resource-query.js.map +1 -0
  305. package/dist-server/service/task-resource/task-resource-type.d.ts +17 -0
  306. package/dist-server/service/task-resource/task-resource-type.js +65 -0
  307. package/dist-server/service/task-resource/task-resource-type.js.map +1 -0
  308. package/dist-server/service/task-resource/task-resource.d.ts +13 -0
  309. package/dist-server/service/task-resource/task-resource.js +59 -0
  310. package/dist-server/service/task-resource/task-resource.js.map +1 -0
  311. package/dist-server/service/worker-type/index.d.ts +5 -0
  312. package/dist-server/service/worker-type/index.js +9 -0
  313. package/dist-server/service/worker-type/index.js.map +1 -0
  314. package/dist-server/service/worker-type/worker-type-mutation.d.ts +6 -0
  315. package/dist-server/service/worker-type/worker-type-mutation.js +64 -0
  316. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -0
  317. package/dist-server/service/worker-type/worker-type-query.d.ts +11 -0
  318. package/dist-server/service/worker-type/worker-type-query.js +73 -0
  319. package/dist-server/service/worker-type/worker-type-query.js.map +1 -0
  320. package/dist-server/service/worker-type/worker-type-type.d.ts +11 -0
  321. package/dist-server/service/worker-type/worker-type-type.js +43 -0
  322. package/dist-server/service/worker-type/worker-type-type.js.map +1 -0
  323. package/dist-server/service/worker-type/worker-type.d.ts +16 -0
  324. package/dist-server/service/worker-type/worker-type.js +77 -0
  325. package/dist-server/service/worker-type/worker-type.js.map +1 -0
  326. package/dist-server/tsconfig.tsbuildinfo +1 -0
  327. package/package.json +4 -4
@@ -0,0 +1,1477 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/icon/icon.js';
3
+ import '@material/web/button/elevated-button.js';
4
+ import '@material/web/textfield/outlined-text-field.js';
5
+ import { PageView } from '@operato/shell';
6
+ import { css, html } from 'lit';
7
+ import { customElement, state } from 'lit/decorators.js';
8
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
9
+ import { client } from '@operato/graphql';
10
+ import { notify } from '@operato/layout';
11
+ import gql from 'graphql-tag';
12
+ import { SITE_TYPE_DISPLAY } from './project-list';
13
+ import '../lib/select2-component';
14
+ import './component/project-update-header';
15
+ import { isProjectTypeDomain } from '../../shared/domain-context';
16
+ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.defaultProject = {
20
+ name: '',
21
+ documentNaming: '',
22
+ buildingComplex: {
23
+ address: '',
24
+ area: 0,
25
+ constructionCompany: '',
26
+ clientCompany: '',
27
+ supervisoryCompany: '',
28
+ designCompany: '',
29
+ constructionType: '',
30
+ buildings: []
31
+ }
32
+ };
33
+ this.projectId = '';
34
+ this.project = Object.assign({}, this.defaultProject);
35
+ this.selectedValues = [];
36
+ this.overallConstructorList = [];
37
+ this.taskConstructorList = [];
38
+ this.taskSupervisoryList = [];
39
+ this.overallSupervisoryList = [];
40
+ this.collectingBasicInfo = false;
41
+ }
42
+ get context() {
43
+ var _a, _b;
44
+ return {
45
+ title: !isProjectTypeDomain() && ((_a = this.project) === null || _a === void 0 ? void 0 : _a.name)
46
+ ? `프로젝트 정보 관리 - ${(_b = this.project) === null || _b === void 0 ? void 0 : _b.name}`
47
+ : '프로젝트 정보 관리'
48
+ };
49
+ }
50
+ render() {
51
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50;
52
+ return html `
53
+ <project-update-header .projectId=${this.project.id || ''} title="프로젝트 정보 관리" @custom-click=${this._saveProject}>
54
+ </project-update-header>
55
+
56
+ <div body>
57
+ <div project-info>
58
+ <h3>기본 정보</h3>
59
+ <div row>
60
+ <span>프로젝트명</span>
61
+ <span
62
+ ><md-outlined-text-field
63
+ type="text"
64
+ name="name"
65
+ project
66
+ .value=${this.project.name || ''}
67
+ @input=${this._onInputChange}
68
+ ></md-outlined-text-field>
69
+ </span>
70
+ </div>
71
+ <div row>
72
+ <span>프로젝트 문서 네이밍</span>
73
+ <span>
74
+ <md-outlined-text-field
75
+ type="text"
76
+ name="documentNaming"
77
+ project
78
+ .value=${this.project.documentNaming || ''}
79
+ @input=${this._onInputChange}
80
+ placeholder="프로젝트 문서 네이밍"
81
+ ></md-outlined-text-field>
82
+ </span>
83
+ </div>
84
+ <div row>
85
+ <span></span>
86
+ <span>
87
+ <div document-preview>📄 문서 생성 예시: <br />${this.project.documentNaming} 검측 제01-00001호</div>
88
+ </span>
89
+ </div>
90
+ <div row>
91
+ <span>프로젝트 주소</span>
92
+ <span class="address-row">
93
+ <md-outlined-text-field
94
+ type="text"
95
+ name="address"
96
+ building-complex
97
+ .value=${((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.address) || ''}
98
+ @input=${this._onInputChange}
99
+ ></md-outlined-text-field>
100
+ <md-elevated-button
101
+ class="info-link-btn"
102
+ ?disabled=${this.collectingBasicInfo}
103
+ @click=${() => this._collectBasicInfo()}
104
+ title="입력된 주소로 세움터 건축물대장 정보를 가져와 폼을 채웁니다"
105
+ >
106
+ ${this.collectingBasicInfo ? '연동 중…' : '🔗 정보 연동'}
107
+ </md-elevated-button>
108
+ </span>
109
+ </div>
110
+ <div row>
111
+ <span>위도</span>
112
+ <span>
113
+ <md-outlined-text-field
114
+ type="text"
115
+ name="latitude"
116
+ numeric
117
+ building-complex
118
+ .value=${((_e = (_d = (_c = this.project) === null || _c === void 0 ? void 0 : _c.buildingComplex) === null || _d === void 0 ? void 0 : _d.latitude) === null || _e === void 0 ? void 0 : _e.toString()) || ''}
119
+ @input=${this._onInputChange}
120
+ ></md-outlined-text-field>
121
+ </span>
122
+ </div>
123
+ <div row>
124
+ <span>경도</span>
125
+ <span>
126
+ <md-outlined-text-field
127
+ type="text"
128
+ name="longitude"
129
+ numeric
130
+ building-complex
131
+ .value=${((_h = (_g = (_f = this.project) === null || _f === void 0 ? void 0 : _f.buildingComplex) === null || _g === void 0 ? void 0 : _g.longitude) === null || _h === void 0 ? void 0 : _h.toString()) || ''}
132
+ @input=${this._onInputChange}
133
+ ></md-outlined-text-field>
134
+ </span>
135
+ </div>
136
+ <div row>
137
+ <span>연 면적</span>
138
+ <span align-end
139
+ ><md-outlined-text-field
140
+ type="text"
141
+ name="area"
142
+ numeric
143
+ building-complex
144
+ .value=${((_l = (_k = (_j = this.project) === null || _j === void 0 ? void 0 : _j.buildingComplex) === null || _k === void 0 ? void 0 : _k.area) === null || _l === void 0 ? void 0 : _l.toString()) || ''}
145
+ @input=${this._onInputChange}
146
+ suffix-text="㎡"
147
+ ></md-outlined-text-field>
148
+ </span>
149
+ </div>
150
+
151
+ <div row>
152
+ <span>건폐율</span>
153
+ <span align-end>
154
+ <md-outlined-text-field
155
+ type="text"
156
+ name="coverageRatio"
157
+ numeric
158
+ building-complex
159
+ .value=${((_p = (_o = (_m = this.project) === null || _m === void 0 ? void 0 : _m.buildingComplex) === null || _o === void 0 ? void 0 : _o.coverageRatio) === null || _p === void 0 ? void 0 : _p.toString()) || ''}
160
+ @input=${this._onInputChange}
161
+ suffix-text="%"
162
+ ></md-outlined-text-field>
163
+ </span>
164
+ </div>
165
+ <div row>
166
+ <span>용적률</span>
167
+ <span align-end>
168
+ <md-outlined-text-field
169
+ type="text"
170
+ name="floorAreaRatio"
171
+ numeric
172
+ building-complex
173
+ .value=${((_s = (_r = (_q = this.project) === null || _q === void 0 ? void 0 : _q.buildingComplex) === null || _r === void 0 ? void 0 : _r.floorAreaRatio) === null || _s === void 0 ? void 0 : _s.toString()) || ''}
174
+ @input=${this._onInputChange}
175
+ suffix-text="%"
176
+ ></md-outlined-text-field>
177
+ </span>
178
+ </div>
179
+
180
+ <div row>
181
+ <span>현장유형</span>
182
+ <span
183
+ ><md-filled-select name="siteType" building-complex @change=${this._onInputChange}>
184
+ ${Object.entries(SITE_TYPE_DISPLAY).map(([key, display]) => {
185
+ var _a, _b;
186
+ return html `
187
+ <md-select-option ?selected=${((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.siteType) === key} .value=${key}>
188
+ <div slot="headline">${display}</div>
189
+ </md-select-option>
190
+ `;
191
+ })}
192
+ </md-filled-select>
193
+ </span>
194
+ </div>
195
+
196
+ <div row>
197
+ <span>착공일정 ~ 준공일정</span>
198
+ <span
199
+ ><input
200
+ type="date"
201
+ name="startDate"
202
+ project
203
+ .value=${this.project.startDate || ''}
204
+ @input=${this._onInputChange}
205
+ max="9999-12-31"
206
+ />
207
+ ~
208
+ <input
209
+ type="date"
210
+ name="endDate"
211
+ project
212
+ .value=${this.project.endDate || ''}
213
+ @input=${this._onInputChange}
214
+ max="9999-12-31"
215
+ />
216
+ </span>
217
+ </div>
218
+ <div row>
219
+ <span>발주처</span>
220
+ <span
221
+ ><md-outlined-text-field
222
+ type="text"
223
+ name="clientCompany"
224
+ building-complex
225
+ .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.clientCompany) || ''}
226
+ @input=${this._onInputChange}
227
+ ></md-outlined-text-field>
228
+ </span>
229
+ </div>
230
+ <div row>
231
+ <span>건설사</span>
232
+ <span
233
+ ><md-outlined-text-field
234
+ type="text"
235
+ name="constructionCompany"
236
+ building-complex
237
+ .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionCompany) || ''}
238
+ @input=${this._onInputChange}
239
+ ></md-outlined-text-field>
240
+ </span>
241
+ </div>
242
+ <div row>
243
+ <span>설계사</span>
244
+ <span
245
+ ><md-outlined-text-field
246
+ type="text"
247
+ name="designCompany"
248
+ building-complex
249
+ .value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.buildingComplex) === null || _y === void 0 ? void 0 : _y.designCompany) || ''}
250
+ @input=${this._onInputChange}
251
+ ></md-outlined-text-field>
252
+ </span>
253
+ </div>
254
+ <div row>
255
+ <span>감리사</span>
256
+ <span
257
+ ><md-outlined-text-field
258
+ type="text"
259
+ name="supervisoryCompany"
260
+ building-complex
261
+ .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.supervisoryCompany) || ''}
262
+ @input=${this._onInputChange}
263
+ ></md-outlined-text-field>
264
+ </span>
265
+ </div>
266
+ <div row>
267
+ <span>건설구분</span>
268
+ <span
269
+ ><md-outlined-text-field
270
+ type="text"
271
+ name="constructionType"
272
+ building-complex
273
+ .value=${((_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionType) || ''}
274
+ @input=${this._onInputChange}
275
+ ></md-outlined-text-field>
276
+ </span>
277
+ </div>
278
+ <div row>
279
+ <span>구조 유형</span>
280
+ <span
281
+ ><md-outlined-text-field
282
+ type="text"
283
+ name="structureType"
284
+ building-complex
285
+ .value=${((_4 = (_3 = this.project) === null || _3 === void 0 ? void 0 : _3.buildingComplex) === null || _4 === void 0 ? void 0 : _4.structureType) || ''}
286
+ @input=${this._onInputChange}
287
+ ></md-outlined-text-field>
288
+ </span>
289
+ </div>
290
+
291
+ <div row>
292
+ <span>대표사진 업로드</span>
293
+ <span>
294
+ <ox-input-image
295
+ name="mainPhoto"
296
+ value=${((_6 = (_5 = this.project) === null || _5 === void 0 ? void 0 : _5.mainPhoto) === null || _6 === void 0 ? void 0 : _6.fullpath) || ''}
297
+ @change=${this.onCreateAttachment.bind(this)}
298
+ ></ox-input-image>
299
+ </span>
300
+ </div>
301
+ <div row>
302
+ <span>단지 BIM</span>
303
+ <span>
304
+ <ox-input-file
305
+ name="drawing"
306
+ label=" "
307
+ description="IFC 업로드"
308
+ .value=${((_8 = (_7 = this.project) === null || _7 === void 0 ? void 0 : _7.buildingComplex) === null || _8 === void 0 ? void 0 : _8.drawing) || ''}
309
+ @change=${this.onCreateAttachment.bind(this)}
310
+ ></ox-input-file>
311
+ </span>
312
+ </div>
313
+ <div row>
314
+ <span>공사금액</span>
315
+ <span
316
+ ><md-outlined-text-field
317
+ type="text"
318
+ name="constructionCost"
319
+ numeric
320
+ building-complex
321
+ .value=${((_11 = (_10 = (_9 = this.project) === null || _9 === void 0 ? void 0 : _9.buildingComplex) === null || _10 === void 0 ? void 0 : _10.constructionCost) === null || _11 === void 0 ? void 0 : _11.toString()) || ''}
322
+ @input=${this._onInputChange}
323
+ suffix-text="억원"
324
+ ></md-outlined-text-field>
325
+ </span>
326
+ </div>
327
+ <div row>
328
+ <span>투입 인력</span>
329
+ <span
330
+ ><md-outlined-text-field
331
+ type="text"
332
+ name="workerCount"
333
+ numeric
334
+ building-complex
335
+ .value=${((_14 = (_13 = (_12 = this.project) === null || _12 === void 0 ? void 0 : _12.buildingComplex) === null || _13 === void 0 ? void 0 : _13.workerCount) === null || _14 === void 0 ? void 0 : _14.toString()) || ''}
336
+ @input=${this._onInputChange}
337
+ suffix-text="명"
338
+ ></md-outlined-text-field>
339
+ </span>
340
+ </div>
341
+ <div row>
342
+ <span>기타사항</span>
343
+ <span>
344
+ <md-outlined-text-field
345
+ type="textarea"
346
+ name="etc"
347
+ building-complex
348
+ .value=${((_16 = (_15 = this.project) === null || _15 === void 0 ? void 0 : _15.buildingComplex) === null || _16 === void 0 ? void 0 : _16.etc) || ''}
349
+ @input=${this._onInputChange}
350
+ ></md-outlined-text-field>
351
+ </span>
352
+ </div>
353
+ <div row>
354
+ <span>총괄 시공 관리자 리스트</span>
355
+ <span>
356
+ <select2-component
357
+ placeholder="총괄 시공 관리자 리스트"
358
+ name="overallConstructorEmails"
359
+ .options=${this.overallConstructorList}
360
+ .selectedValues=${((_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.overallConstructorEmails) || []}
361
+ @selection-changed=${this._handleSelectionChange}
362
+ ></select2-component>
363
+ </span>
364
+ </div>
365
+ <div row>
366
+ <span>공종별 시공 관리자 리스트</span>
367
+ <span>
368
+ <select2-component
369
+ placeholder="공종별 시공 관리자 리스트"
370
+ name="taskConstructorEmails"
371
+ .options=${this.taskConstructorList}
372
+ .selectedValues=${((_20 = (_19 = this.project) === null || _19 === void 0 ? void 0 : _19.buildingComplex) === null || _20 === void 0 ? void 0 : _20.taskConstructorEmails) || []}
373
+ @selection-changed=${this._handleSelectionChange}
374
+ ></select2-component>
375
+ </span>
376
+ </div>
377
+ <div row>
378
+ <span>총괄 감리 책임자 리스트</span>
379
+ <span>
380
+ <select2-component
381
+ placeholder="총괄 감리 책임자 리스트"
382
+ name="overallSupervisoryEmails"
383
+ .options=${this.overallSupervisoryList}
384
+ .selectedValues=${((_22 = (_21 = this.project) === null || _21 === void 0 ? void 0 : _21.buildingComplex) === null || _22 === void 0 ? void 0 : _22.overallSupervisoryEmails) || []}
385
+ @selection-changed=${this._handleSelectionChange}
386
+ ></select2-component>
387
+ </span>
388
+ </div>
389
+ <div row>
390
+ <span>공종별 감리 책임자 리스트</span>
391
+ <span>
392
+ <select2-component
393
+ placeholder="공종별 감리 책임자 리스트"
394
+ name="taskSupervisoryEmails"
395
+ .options=${this.taskSupervisoryList}
396
+ .selectedValues=${((_24 = (_23 = this.project) === null || _23 === void 0 ? void 0 : _23.buildingComplex) === null || _24 === void 0 ? void 0 : _24.taskSupervisoryEmails) || []}
397
+ @selection-changed=${this._handleSelectionChange}
398
+ ></select2-component
399
+ ></span>
400
+ </div>
401
+ </div>
402
+
403
+ <div detail-info>
404
+ <div>
405
+ <h3>테넌트 관리</h3>
406
+ <div row>
407
+ <span>관리번호</span>
408
+ <span>
409
+ ${this.project.tenantDomain
410
+ ? html `<a href=${`/project/${this.project.code}/`} target="_blank" title="테넌트로 이동"
411
+ >${this.project.code} <md-icon style="font-size:14px;vertical-align:middle">open_in_new</md-icon></a
412
+ >`
413
+ : this.project.code
414
+ ? html `${this.project.code}`
415
+ : html `<span style="color:#999">미발번 (승격 시 자동 부여)</span>`}
416
+ </span>
417
+ </div>
418
+ <div row>
419
+ <span>현재 상태</span>
420
+ <span>
421
+ ${this.project.tenantDomain
422
+ ? html `<b style="color:#42b382">활성 테넌트</b>`
423
+ : this.project.code
424
+ ? html `<b style="color:#aa6633">강등됨</b> (재승격 시 ${this.project.code} 재사용)`
425
+ : html `<b style="color:#999">미승격</b>`}
426
+ </span>
427
+ </div>
428
+ <div row>
429
+ <span></span>
430
+ <span tenant-actions>
431
+ ${this.project.tenantDomain
432
+ ? html `<md-elevated-button @click=${this._demoteTenant} ?disabled=${!this.project.id}>
433
+ <md-icon slot="icon">link_off</md-icon>테넌트 강등
434
+ </md-elevated-button>`
435
+ : html `<md-elevated-button green @click=${this._promoteTenant} ?disabled=${!this.project.id}>
436
+ <md-icon slot="icon">verified</md-icon>테넌트 승격
437
+ </md-elevated-button>`}
438
+ </span>
439
+ </div>
440
+ </div>
441
+
442
+ <div>
443
+ <h3>건설구분 상세 정보</h3>
444
+ <div row>
445
+ <span>세대수</span>
446
+ <span
447
+ ><md-outlined-text-field
448
+ type="text"
449
+ numeric
450
+ building-complex
451
+ name="householdCount"
452
+ .value=${((_27 = (_26 = (_25 = this.project) === null || _25 === void 0 ? void 0 : _25.buildingComplex) === null || _26 === void 0 ? void 0 : _26.householdCount) === null || _27 === void 0 ? void 0 : _27.toString()) || ''}
453
+ @input=${this._onInputChange}
454
+ ></md-outlined-text-field>
455
+ </span>
456
+ </div>
457
+ <div row>
458
+ <span>동수</span>
459
+ <span
460
+ ><md-outlined-text-field
461
+ type="text"
462
+ numeric
463
+ building-complex
464
+ name="buildingCount"
465
+ value=${((_30 = (_29 = (_28 = this.project) === null || _28 === void 0 ? void 0 : _28.buildingComplex) === null || _29 === void 0 ? void 0 : _29.buildingCount) === null || _30 === void 0 ? void 0 : _30.toString()) || ''}
466
+ @input=${this._onInputChange}
467
+ ></md-outlined-text-field>
468
+ <md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>
469
+ </span>
470
+ </div>
471
+ <hr />
472
+ <div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>
473
+ <div separate-container>
474
+ ${(_33 = (_32 = (_31 = this.project) === null || _31 === void 0 ? void 0 : _31.buildingComplex) === null || _32 === void 0 ? void 0 : _32.buildings) === null || _33 === void 0 ? void 0 : _33.map((building, idx) => {
475
+ var _a, _b;
476
+ return html `
477
+ <div>
478
+ <span>
479
+ <md-outlined-text-field
480
+ type="text"
481
+ building
482
+ name="name"
483
+ .value=${(building === null || building === void 0 ? void 0 : building.name) || ''}
484
+ @input=${e => this._onInputChange(e, idx)}
485
+ placeholder="ooo동"
486
+ ></md-outlined-text-field>
487
+ </span>
488
+ <span floor-row>
489
+ <span floor-title>층수</span>
490
+ <md-outlined-text-field
491
+ type="text"
492
+ numeric
493
+ building
494
+ name="floorCount"
495
+ .value=${((_a = building === null || building === void 0 ? void 0 : building.floorCount) === null || _a === void 0 ? void 0 : _a.toString()) || ''}
496
+ @input=${e => this._onInputChange(e, idx)}
497
+ placeholder="oo"
498
+ ></md-outlined-text-field>
499
+ </span>
500
+
501
+ <div basement-container>
502
+ <div
503
+ basement-checkbox
504
+ name="hasBasement"
505
+ ?checked=${(building === null || building === void 0 ? void 0 : building.hasBasement) || false}
506
+ @click=${() => this._toggleBasement(idx)}
507
+ >
508
+ <md-icon>format_bold</md-icon>
509
+ </div>
510
+ ${(building === null || building === void 0 ? void 0 : building.hasBasement)
511
+ ? html `
512
+ <md-outlined-text-field
513
+ basement-floor
514
+ type="text"
515
+ numeric
516
+ building
517
+ name="basementFloorCount"
518
+ .value=${((_b = building === null || building === void 0 ? void 0 : building.basementFloorCount) === null || _b === void 0 ? void 0 : _b.toString()) || ''}
519
+ @input=${e => this._onInputChange(e, idx)}
520
+ placeholder="지하층수"
521
+ ></md-outlined-text-field>
522
+ `
523
+ : ''}
524
+ </div>
525
+ </div>
526
+ `;
527
+ })}
528
+ </div>
529
+ </div>
530
+
531
+ <div project>
532
+ <h3>프로젝트 현황</h3>
533
+ <div row separate-container>
534
+ <div>
535
+ <span>전체 진행현황</span>
536
+ <span>
537
+ <md-outlined-text-field
538
+ type="text"
539
+ numeric
540
+ project
541
+ name="totalProgress"
542
+ .value=${((_34 = this.project.totalProgress) === null || _34 === void 0 ? void 0 : _34.toString()) || ''}
543
+ @input=${this._onInputChange}
544
+ suffix-text="%"
545
+ ></md-outlined-text-field>
546
+ </span>
547
+ </div>
548
+ <div>
549
+ <span>검측/통과비율</span>
550
+ <span>
551
+ <md-outlined-text-field
552
+ type="text"
553
+ numeric
554
+ project
555
+ name="inspPassRate"
556
+ .value=${((_35 = this.project.inspPassRate) === null || _35 === void 0 ? void 0 : _35.toString()) || ''}
557
+ @input=${this._onInputChange}
558
+ suffix-text="%"
559
+ ></md-outlined-text-field>
560
+ </span>
561
+ </div>
562
+ </div>
563
+ <div row separate-container>
564
+ <div>
565
+ <span>주간 진행현황</span>
566
+ <span>
567
+ <md-outlined-text-field
568
+ type="text"
569
+ numeric
570
+ project
571
+ name="weeklyProgress"
572
+ .value=${((_36 = this.project.weeklyProgress) === null || _36 === void 0 ? void 0 : _36.toString()) || ''}
573
+ @input=${this._onInputChange}
574
+ suffix-text="%"
575
+ ></md-outlined-text-field>
576
+ </span>
577
+ </div>
578
+ <div>
579
+ <span>로봇작업진행율</span>
580
+ <span>
581
+ <md-outlined-text-field
582
+ type="text"
583
+ numeric
584
+ project
585
+ name="robotProgressRate"
586
+ .value=${((_37 = this.project.robotProgressRate) === null || _37 === void 0 ? void 0 : _37.toString()) || ''}
587
+ @input=${this._onInputChange}
588
+ suffix-text="%"
589
+ ></md-outlined-text-field>
590
+ </span>
591
+ </div>
592
+ </div>
593
+ <div row separate-container>
594
+ <div>
595
+ <span>KPI</span>
596
+ <span
597
+ ><md-outlined-text-field
598
+ type="text"
599
+ numeric
600
+ project
601
+ name="kpi"
602
+ .value=${((_38 = this.project.kpi) === null || _38 === void 0 ? void 0 : _38.toString()) || ''}
603
+ @input=${this._onInputChange}
604
+ suffix-text="%"
605
+ ></md-outlined-text-field>
606
+ </span>
607
+ </div>
608
+ <div>
609
+ <span>구조안전도</span>
610
+ <span
611
+ ><md-outlined-text-field
612
+ type="text"
613
+ numeric
614
+ project
615
+ name="structuralSafetyRate"
616
+ .value=${((_39 = this.project.structuralSafetyRate) === null || _39 === void 0 ? void 0 : _39.toString()) || ''}
617
+ @input=${this._onInputChange}
618
+ suffix-text="%"
619
+ ></md-outlined-text-field>
620
+ </span>
621
+ </div>
622
+ </div>
623
+
624
+ <div row separate-container>
625
+ <div>
626
+ <span>로봇 작업 대수</span>
627
+ <span
628
+ ><md-outlined-text-field
629
+ type="text"
630
+ numeric
631
+ project
632
+ name="robotCount"
633
+ .value=${((_40 = this.project.robotCount) === null || _40 === void 0 ? void 0 : _40.toString()) || ''}
634
+ @input=${this._onInputChange}
635
+ ></md-outlined-text-field>
636
+ </span>
637
+ </div>
638
+ </div>
639
+
640
+ <hr />
641
+
642
+ <div row separate-container>
643
+ <div>
644
+ <span>설계 변경 횟수</span>
645
+ <span
646
+ ><md-outlined-text-field
647
+ type="text"
648
+ numeric
649
+ building-complex
650
+ name="designChangeCount"
651
+ .value=${((_42 = (_41 = this.project.buildingComplex) === null || _41 === void 0 ? void 0 : _41.designChangeCount) === null || _42 === void 0 ? void 0 : _42.toString()) || ''}
652
+ @input=${this._onInputChange}
653
+ ></md-outlined-text-field>
654
+ </span>
655
+ </div>
656
+ <div>
657
+ <span>계획 공정률</span>
658
+ <span
659
+ ><md-outlined-text-field
660
+ type="text"
661
+ numeric
662
+ building-complex
663
+ name="plannedProgress"
664
+ .value=${((_44 = (_43 = this.project.buildingComplex) === null || _43 === void 0 ? void 0 : _43.plannedProgress) === null || _44 === void 0 ? void 0 : _44.toString()) || ''}
665
+ @input=${this._onInputChange}
666
+ suffix-text="%"
667
+ ></md-outlined-text-field>
668
+ </span>
669
+ </div>
670
+ </div>
671
+
672
+ <div row separate-container>
673
+ <div>
674
+ <span>실제 공정률</span>
675
+ <span
676
+ ><md-outlined-text-field
677
+ type="text"
678
+ numeric
679
+ building-complex
680
+ name="actualProgress"
681
+ .value=${((_46 = (_45 = this.project.buildingComplex) === null || _45 === void 0 ? void 0 : _45.actualProgress) === null || _46 === void 0 ? void 0 : _46.toString()) || ''}
682
+ @input=${this._onInputChange}
683
+ suffix-text="%"
684
+ ></md-outlined-text-field>
685
+ </span>
686
+ </div>
687
+ </div>
688
+ </div>
689
+
690
+ <div>
691
+ <h3>공지사항</h3>
692
+ <div>
693
+ <span></span>
694
+ <span>
695
+ <md-outlined-text-field
696
+ type="textarea"
697
+ name="notice"
698
+ building-complex
699
+ .value=${((_48 = (_47 = this.project) === null || _47 === void 0 ? void 0 : _47.buildingComplex) === null || _48 === void 0 ? void 0 : _48.notice) || ''}
700
+ @input=${this._onInputChange}
701
+ ></md-outlined-text-field>
702
+ </span>
703
+ </div>
704
+ </div>
705
+
706
+ <div>
707
+ <h3>Virtual Tour Link</h3>
708
+ <div>
709
+ <span></span>
710
+ <span>
711
+ <md-outlined-text-field
712
+ type="text"
713
+ name="virtualTourLink"
714
+ building-complex
715
+ .value=${((_50 = (_49 = this.project) === null || _49 === void 0 ? void 0 : _49.buildingComplex) === null || _50 === void 0 ? void 0 : _50.virtualTourLink) || ''}
716
+ @input=${this._onInputChange}
717
+ ></md-outlined-text-field>
718
+ </span>
719
+ </div>
720
+ </div>
721
+ </div>
722
+ </div>
723
+ `;
724
+ }
725
+ async pageInitialized(lifecycle) { }
726
+ async pageUpdated(changes, lifecycle) {
727
+ if (!this.active)
728
+ return;
729
+ this.projectId = await this._resolveProjectId(lifecycle.resourceId || '');
730
+ await this.initProject(this.projectId);
731
+ }
732
+ /**
733
+ * resourceId 를 정상 Project.id (UUID) 로 변환한다.
734
+ * - UUID 형식이면 그대로 사용
735
+ * - 그 외 (code 또는 비어있음) 에는 현재 테넌트 컨텍스트의 프로젝트 조회
736
+ */
737
+ async _resolveProjectId(resourceId) {
738
+ var _a, _b;
739
+ if (resourceId && resourceId.length === 36)
740
+ return resourceId;
741
+ const response = await client.query({
742
+ query: gql `
743
+ query CurrentProject {
744
+ currentProject {
745
+ id
746
+ }
747
+ }
748
+ `
749
+ });
750
+ return ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.currentProject) === null || _b === void 0 ? void 0 : _b.id) || '';
751
+ }
752
+ async initProject(projectId = '') {
753
+ var _a, _b, _c;
754
+ const response = await client.query({
755
+ query: gql `
756
+ query Project($id: String!, $filters: [Filter!]) {
757
+ project(id: $id) {
758
+ id
759
+ code
760
+ tenantDomain {
761
+ id
762
+ subdomain
763
+ name
764
+ }
765
+ name
766
+ documentNaming
767
+ startDate
768
+ endDate
769
+ mainPhoto {
770
+ fullpath
771
+ }
772
+ totalProgress
773
+ weeklyProgress
774
+ kpi
775
+ inspPassRate
776
+ robotProgressRate
777
+ structuralSafetyRate
778
+ robotCount
779
+ buildingComplex {
780
+ id
781
+ address
782
+ siteType
783
+ latitude
784
+ longitude
785
+ area
786
+ coverageRatio
787
+ floorAreaRatio
788
+ structureType
789
+ workerCount
790
+ designChangeCount
791
+ plannedProgress
792
+ actualProgress
793
+ clientCompany
794
+ constructionCompany
795
+ supervisoryCompany
796
+ designCompany
797
+ drawing {
798
+ id
799
+ name
800
+ }
801
+ constructionType
802
+ constructionCost
803
+ etc
804
+ notice
805
+ householdCount
806
+ buildingCount
807
+ overallConstructorEmails
808
+ taskConstructorEmails
809
+ overallSupervisoryEmails
810
+ taskSupervisoryEmails
811
+ virtualTourLink
812
+ buildings {
813
+ id
814
+ name
815
+ floorCount
816
+ hasBasement
817
+ basementFloorCount
818
+ }
819
+ }
820
+ }
821
+
822
+ employees(filters: $filters) {
823
+ items {
824
+ id
825
+ name
826
+ jobResponsibility
827
+ active
828
+ user {
829
+ id
830
+ name
831
+ email
832
+ }
833
+ }
834
+ }
835
+ }
836
+ `,
837
+ variables: {
838
+ id: projectId,
839
+ filters: [
840
+ {
841
+ name: 'active',
842
+ operator: 'eq',
843
+ value: true
844
+ },
845
+ {
846
+ name: 'userId',
847
+ operator: 'is_not_null',
848
+ value: ''
849
+ }
850
+ ]
851
+ }
852
+ });
853
+ this.project = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.project) || Object.assign({}, this.defaultProject);
854
+ const items = ((_c = (_b = response.data) === null || _b === void 0 ? void 0 : _b.employees) === null || _c === void 0 ? void 0 : _c.items) || [];
855
+ this.overallConstructorList = this._filterUserByPermission(items, 'OVERALL_CONSTRUCTOR');
856
+ this.taskConstructorList = this._filterUserByPermission(items, 'TASK_CONSTRUCTOR');
857
+ this.overallSupervisoryList = this._filterUserByPermission(items, 'OVERALL_SUPERVISORY');
858
+ this.taskSupervisoryList = this._filterUserByPermission(items, 'TASK_SUPERVISORY');
859
+ this.updateContext();
860
+ }
861
+ _filterUserByPermission(userList, permission) {
862
+ return userList
863
+ .filter(v => v.jobResponsibility == permission || v.jobResponsibility == 'ADMIN')
864
+ .map(v => ({ name: v.name, value: v.user.email }));
865
+ }
866
+ _stripTypename(obj) {
867
+ if (Array.isArray(obj)) {
868
+ return obj.map(item => this._stripTypename(item));
869
+ }
870
+ if (obj && typeof obj === 'object' && !(obj instanceof File)) {
871
+ const cleaned = {};
872
+ for (const [key, value] of Object.entries(obj)) {
873
+ if (key === '__typename')
874
+ continue;
875
+ cleaned[key] = this._stripTypename(value);
876
+ }
877
+ return cleaned;
878
+ }
879
+ return obj;
880
+ }
881
+ async _saveProject() {
882
+ // 첨부 파일 필드 제거 (첨부 파일은 {filename}Upload 로 전송)
883
+ delete this.project.mainPhoto;
884
+ delete this.project.buildingComplex.drawing;
885
+ // ProjectPatch 입력 타입에 없는 표시 전용 필드 제거 (테넌트 승격 UI 표시용)
886
+ delete this.project.code;
887
+ delete this.project.tenantDomain;
888
+ const response = await client.mutate({
889
+ mutation: gql `
890
+ mutation UpdateProject($project: ProjectPatch!) {
891
+ updateProject(project: $project) {
892
+ id
893
+ }
894
+ }
895
+ `,
896
+ variables: {
897
+ project: this._stripTypename(this.project)
898
+ },
899
+ context: {
900
+ hasUpload: true
901
+ }
902
+ });
903
+ if (!response.errors) {
904
+ notify({ message: '저장에 성공하였습니다.' });
905
+ }
906
+ }
907
+ /**
908
+ * 주소 옆 "정보 연동" 버튼 handler.
909
+ * - 현재 폼의 주소를 backend 로 보냄 → backend 가 EnvVar 갱신 + 세움터 시나리오 호출
910
+ * - 결과 (한글 raw + 숫자) 를 받아 BuildingComplex 폼 필드들에 매핑
911
+ * · siteType (한글) → SiteType enum 변환 (BC.siteType, enum 컬럼)
912
+ * · siteType (한글) → BC.constructionType 그대로 (자유 텍스트 컬럼)
913
+ * · area / floorAreaRatio / coverageRatio / householdCount / buildingCount /
914
+ * structureType → BC 동명 컬럼에 직접 대입
915
+ * · upperFloorCount / lowerFloorCount / bldNm / useAprDay / pmsDay → BC 컬럼
916
+ * 없음, 매핑 skip (참고용 콘솔 로그만)
917
+ */
918
+ async _collectBasicInfo() {
919
+ var _a, _b, _c;
920
+ const address = (((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.address) || '').trim();
921
+ if (!address) {
922
+ notify({ message: '먼저 프로젝트 주소를 입력해 주세요.' });
923
+ return;
924
+ }
925
+ this.collectingBasicInfo = true;
926
+ try {
927
+ const response = await client.mutate({
928
+ mutation: gql `
929
+ mutation CollectProjectBasicInfo($projectId: String!, $address: String) {
930
+ collectProjectBasicInfo(projectId: $projectId, address: $address) {
931
+ source
932
+ label
933
+ ok
934
+ message
935
+ data
936
+ }
937
+ }
938
+ `,
939
+ variables: { projectId: this.project.id, address }
940
+ });
941
+ if (response.errors) {
942
+ throw new Error(response.errors.map((e) => e.message).join('\n'));
943
+ }
944
+ const result = (_c = response.data) === null || _c === void 0 ? void 0 : _c.collectProjectBasicInfo;
945
+ if (!(result === null || result === void 0 ? void 0 : result.ok)) {
946
+ notify({ message: (result === null || result === void 0 ? void 0 : result.message) || '업데이트할 정보가 없습니다.' });
947
+ return;
948
+ }
949
+ const data = result.data || {};
950
+ this._applyBasicInfoToForm(data);
951
+ this.requestUpdate();
952
+ notify({ message: '외부 시스템에서 기본 정보를 가져왔습니다. 검토 후 [저장]을 눌러주세요.' });
953
+ }
954
+ catch (err) {
955
+ console.warn('[정보 연동] 실패', err);
956
+ notify({ message: '외부 시스템 연동이 일시적으로 안 됩니다.' });
957
+ }
958
+ finally {
959
+ this.collectingBasicInfo = false;
960
+ }
961
+ }
962
+ /**
963
+ * 한글 주용도명 → SiteType enum.
964
+ * - NFC normalize + 공백 제거로 보이지 않는 문자/표기 차이 대응
965
+ * - 매핑 미존재시 null
966
+ */
967
+ _siteTypeFromKorean(korean) {
968
+ if (!korean)
969
+ return null;
970
+ const KEYS = {
971
+ 공동주택: 'APARTMENT_COMPLEX',
972
+ 단독주택: 'DETACHED_HOUSE',
973
+ 제1종근린생활시설: 'NEIGHBORHOOD_FACILITY',
974
+ 제2종근린생활시설: 'NEIGHBORHOOD_FACILITY',
975
+ 근린생활시설: 'NEIGHBORHOOD_FACILITY',
976
+ 업무시설: 'OFFICE',
977
+ 판매시설: 'COMMERCIAL',
978
+ 교육연구시설: 'EDUCATION',
979
+ 의료시설: 'MEDICAL',
980
+ 문화및집회시설: 'CULTURAL',
981
+ 종교시설: 'RELIGIOUS',
982
+ 공장: 'INDUSTRIAL',
983
+ 창고시설: 'INDUSTRIAL',
984
+ 운수시설: 'TRANSPORT'
985
+ };
986
+ const key = korean.normalize('NFC').replace(/\s+/g, '').trim();
987
+ return KEYS[key] || null;
988
+ }
989
+ /**
990
+ * 시나리오 result data 를 폼에 매핑 — BuildingComplex 와 Project 양쪽.
991
+ * 빈 값(null/undefined/'')은 기존 값 유지 — 자동 수집이 사용자 입력을 무리하게 덮지 않도록.
992
+ */
993
+ _applyBasicInfoToForm(data) {
994
+ const bc = Object.assign({}, this.project.buildingComplex);
995
+ const setBC = (key, value) => {
996
+ if (value === null || value === undefined || value === '')
997
+ return;
998
+ bc[key] = value;
999
+ };
1000
+ setBC('area', this._toNum(data.area));
1001
+ setBC('floorAreaRatio', this._toNum(data.floorAreaRatio));
1002
+ setBC('coverageRatio', this._toNum(data.coverageRatio));
1003
+ setBC('householdCount', this._toNum(data.householdCount));
1004
+ setBC('buildingCount', this._toNum(data.buildingCount));
1005
+ setBC('structureType', data.structureType);
1006
+ // siteType: 한글 → SiteType enum 매핑. 매핑 안 되면 BC.siteType 빈 채로.
1007
+ if (data.siteType) {
1008
+ const enumVal = this._siteTypeFromKorean(data.siteType);
1009
+ if (enumVal)
1010
+ bc.siteType = enumVal;
1011
+ }
1012
+ // Project 엔티티 컬럼 — 착공일/준공일.
1013
+ // 세움터 useAprDay (사용승인일) = 준공으로 매핑. stcnsDay = 착공.
1014
+ const project = Object.assign(Object.assign({}, this.project), { buildingComplex: bc });
1015
+ if (data.startDate)
1016
+ project.startDate = data.startDate;
1017
+ if (data.endDate)
1018
+ project.endDate = data.endDate;
1019
+ this.project = project;
1020
+ // 참고 메타 — BC/Project 직접 컬럼 없음, 콘솔로만 (permitDate=건축허가일, bldNm 등)
1021
+ console.log('[정보 연동] meta:', JSON.stringify({
1022
+ upperFloorCount: data.upperFloorCount,
1023
+ lowerFloorCount: data.lowerFloorCount,
1024
+ bldNm: data.bldNm,
1025
+ permitDate: data.permitDate
1026
+ }));
1027
+ }
1028
+ _toNum(v) {
1029
+ if (v === null || v === undefined || v === '')
1030
+ return null;
1031
+ const n = Number(v);
1032
+ return Number.isFinite(n) ? n : null;
1033
+ }
1034
+ async _promoteTenant() {
1035
+ if (!this.project.id)
1036
+ return;
1037
+ if (!confirm('이 프로젝트를 테넌트로 승격하시겠습니까?\n승격 시 관리번호(YYYY-NNNNN)가 자동 발번되며 변경할 수 없습니다.')) {
1038
+ return;
1039
+ }
1040
+ const response = await client.mutate({
1041
+ mutation: gql `
1042
+ mutation PromoteProjectToTenant($projectId: String!) {
1043
+ promoteProjectToTenant(projectId: $projectId) {
1044
+ id
1045
+ code
1046
+ }
1047
+ }
1048
+ `,
1049
+ variables: { projectId: this.project.id }
1050
+ });
1051
+ if (!response.errors) {
1052
+ notify({ message: `테넌트로 승격되었습니다. 관리번호: ${response.data.promoteProjectToTenant.code}` });
1053
+ await this.initProject(this.projectId);
1054
+ }
1055
+ }
1056
+ async _demoteTenant() {
1057
+ if (!this.project.id)
1058
+ return;
1059
+ if (!confirm('이 프로젝트의 테넌트를 강등하시겠습니까?\n관리번호는 보존되며 재승격 시 같은 번호가 재사용됩니다.')) {
1060
+ return;
1061
+ }
1062
+ const response = await client.mutate({
1063
+ mutation: gql `
1064
+ mutation DemoteProjectTenant($projectId: String!) {
1065
+ demoteProjectTenant(projectId: $projectId)
1066
+ }
1067
+ `,
1068
+ variables: { projectId: this.project.id }
1069
+ });
1070
+ if (!response.errors) {
1071
+ notify({ message: '테넌트가 강등되었습니다.' });
1072
+ await this.initProject(this.projectId);
1073
+ }
1074
+ }
1075
+ // 동 적용 버튼을 누르면 입력한 수 만큼 해당 단지에 동 데이터 생성
1076
+ _setBuilding() {
1077
+ var _a, _b, _c, _d, _e;
1078
+ const buildingCount = ((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.buildingCount) || 0;
1079
+ const buildingInitData = { name: undefined, floorCount: undefined };
1080
+ // 빌딩 데이터가 없으면 빈 배열 넣어줌
1081
+ if (!((_e = (_d = (_c = this.project) === null || _c === void 0 ? void 0 : _c.buildingComplex) === null || _d === void 0 ? void 0 : _d.buildings) === null || _e === void 0 ? void 0 : _e.length)) {
1082
+ this.project.buildingComplex.buildings = [];
1083
+ }
1084
+ if (this.project.buildingComplex.buildings.length >= buildingCount) {
1085
+ // 동 수가 더 작게 들어오면 기존 배열을 필요한 크기만큼 잘라내기
1086
+ this.project.buildingComplex.buildings = [...this.project.buildingComplex.buildings.slice(0, buildingCount)];
1087
+ }
1088
+ else {
1089
+ // 동수가 더 크게 들어오면 기존 배열 + 빈 값을 채움
1090
+ const additionalCount = buildingCount - this.project.buildingComplex.buildings.length;
1091
+ const additionalBuildings = Array.from({ length: additionalCount }, () => (Object.assign({}, buildingInitData)));
1092
+ this.project.buildingComplex.buildings = [...this.project.buildingComplex.buildings, ...additionalBuildings];
1093
+ }
1094
+ // 리렌더링
1095
+ this.project = Object.assign({}, this.project);
1096
+ }
1097
+ // Input 요소의 값이 변경될 때 호출되는 콜백 함수
1098
+ _onInputChange(event, idx) {
1099
+ const target = event.target;
1100
+ let inputVal = target.value;
1101
+ // 숫자 타입은 다른 문자 입력 제거
1102
+ if (target.hasAttribute('numeric')) {
1103
+ inputVal = Number(inputVal.replace(/[^\d.]/g, ''));
1104
+ }
1105
+ if (target.hasAttribute('project')) {
1106
+ this.project[target.name] = inputVal;
1107
+ // documentNaming 필드가 변경되면 실시간으로 미리보기 업데이트
1108
+ if (target.name === 'documentNaming') {
1109
+ this.requestUpdate();
1110
+ }
1111
+ }
1112
+ else if (target.hasAttribute('building-complex')) {
1113
+ this.project.buildingComplex[target.name] = inputVal;
1114
+ }
1115
+ else if (target.hasAttribute('building')) {
1116
+ this.project.buildingComplex.buildings[idx][target.name] = inputVal;
1117
+ }
1118
+ }
1119
+ // 이미지 업로드
1120
+ async onCreateAttachment(e) {
1121
+ const target = e.target;
1122
+ const file = (target.name === 'mainPhoto' ? e.detail : e.detail[0]) || null;
1123
+ if (target.name === 'mainPhoto') {
1124
+ this.project.mainPhotoUpload = file;
1125
+ }
1126
+ else {
1127
+ this.project.buildingComplex.drawingUpload = file;
1128
+ }
1129
+ }
1130
+ _handleSelectionChange(e) {
1131
+ const name = e.target.getAttribute('name');
1132
+ const selectedValues = e.detail.selectedValues;
1133
+ this.project.buildingComplex[name] = selectedValues;
1134
+ }
1135
+ _toggleBasement(idx) {
1136
+ const building = this.project.buildingComplex.buildings[idx];
1137
+ building.hasBasement = !building.hasBasement;
1138
+ // 층 수가 0이거나 체크 해제시 지하층수 초기화 (플레이스 홀더 나오게 하기 위함)
1139
+ if (building.basementFloorCount == 0 || !building.hasBasement) {
1140
+ building.basementFloorCount = undefined;
1141
+ }
1142
+ this.project.buildingComplex.buildings[idx]['hasBasement'] = building.hasBasement;
1143
+ this.requestUpdate();
1144
+ }
1145
+ };
1146
+ ProjectUpdate.styles = [
1147
+ css `
1148
+ :host {
1149
+ display: grid;
1150
+ grid-template-rows: 55px auto;
1151
+ color: #4e5055;
1152
+
1153
+ width: 100%;
1154
+ background-color: var(--md-sys-color-background, #f6f6f6);
1155
+ overflow-y: auto;
1156
+
1157
+ --grid-record-emphasized-background-color: red;
1158
+ --grid-record-emphasized-color: yellow;
1159
+ }
1160
+
1161
+ md-outlined-text-field {
1162
+ width: 100%;
1163
+
1164
+ --md-outlined-text-field-container-shape: 5px;
1165
+ --md-outlined-text-field-outline-color: rgba(51, 51, 51, 0.2);
1166
+ --md-outlined-text-field-focus-outline-color: #1f7fd9;
1167
+ --md-outlined-text-field-focus-outline-width: 1px;
1168
+ --md-sys-color-primary: #586878;
1169
+ --md-outlined-text-field-input-text-size: 14px;
1170
+ --md-outlined-field-bottom-space: 3px;
1171
+ --md-outlined-field-top-space: 3px;
1172
+ --md-outlined-field-leading-space: var(--spacing-medium, 8px);
1173
+ --md-outlined-field-trailing-space: var(--spacing-medium, 8px);
1174
+ }
1175
+ select2-component {
1176
+ width: 100%;
1177
+ }
1178
+ md-filled-select {
1179
+ width: 100%;
1180
+ --md-filled-select-text-field-container-color: transparent;
1181
+ --md-filled-select-text-field-active-indicator-color: #999;
1182
+ --md-filled-select-text-field-input-text-size: 14px;
1183
+ --md-filled-select-text-field-input-text-line-height: 6px;
1184
+ }
1185
+ input[type='date'] {
1186
+ border: 1px solid rgba(51, 51, 51, 0.2);
1187
+ padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
1188
+ border-radius: 5px;
1189
+ }
1190
+ md-outlined-text-field[type='textarea'] {
1191
+ width: 100%;
1192
+ height: 120px;
1193
+ resize: none;
1194
+ }
1195
+
1196
+ ox-input-image {
1197
+ width: 120px;
1198
+ height: 90px;
1199
+ }
1200
+ ox-input-file {
1201
+ width: 120px;
1202
+ height: 90px;
1203
+ padding: 0;
1204
+ }
1205
+
1206
+ div[body] {
1207
+ display: flex;
1208
+ margin: var(--spacing-large, 12px);
1209
+ margin-top: 0;
1210
+ gap: var(--spacing-medium, 8px);
1211
+
1212
+ & > div {
1213
+ display: flex;
1214
+ height: fit-content;
1215
+ flex-direction: column;
1216
+ padding: var(--spacing-large, 12px);
1217
+ background-color: var(--md-sys-color-on-primary);
1218
+ border: 1px solid #cccccc80;
1219
+ border-radius: 5px;
1220
+ gap: var(--spacing-medium, 8px);
1221
+
1222
+ h3 {
1223
+ color: #2e79be;
1224
+ font-size: 16px;
1225
+ margin: 0px;
1226
+ }
1227
+
1228
+ div[row] {
1229
+ display: flex;
1230
+ align-items: center;
1231
+
1232
+ span:first-child {
1233
+ flex: 0.3;
1234
+ text-align: right;
1235
+ font-size: 14px;
1236
+ }
1237
+
1238
+ span:last-child {
1239
+ flex: 0.7;
1240
+ display: flex;
1241
+ gap: var(--spacing-medium, 8px);
1242
+ margin-left: var(--spacing-medium, 8px);
1243
+ align-items: center;
1244
+
1245
+ &.address-row {
1246
+ md-outlined-text-field {
1247
+ flex: 1;
1248
+ }
1249
+ .info-link-btn {
1250
+ flex: 0 0 auto;
1251
+ --md-elevated-button-container-color: #2e79be;
1252
+ --md-elevated-button-label-text-color: #fff;
1253
+ --md-elevated-button-container-height: 36px;
1254
+ }
1255
+ }
1256
+
1257
+ &[align-end] {
1258
+ align-items: end;
1259
+ }
1260
+ }
1261
+ }
1262
+ }
1263
+
1264
+ div[project-info] {
1265
+ flex: 0.55;
1266
+ }
1267
+
1268
+ div[document-preview] {
1269
+ width: 100%;
1270
+ font-size: 12px;
1271
+ color: #2e79be;
1272
+ font-weight: 500;
1273
+ background-color: #f8f9fa;
1274
+ padding: 8px 12px;
1275
+ border-radius: 4px;
1276
+ border-left: 3px solid #2e79be;
1277
+ margin-top: 4px;
1278
+ }
1279
+
1280
+ div[detail-info] {
1281
+ flex: 0.45;
1282
+ padding: 0px;
1283
+ gap: 10px;
1284
+ background-color: transparent;
1285
+ border: none;
1286
+
1287
+ & > div {
1288
+ display: flex;
1289
+ flex-direction: column;
1290
+ gap: var(--spacing-medium, 8px);
1291
+ border: 1px solid #cccccc80;
1292
+ border-radius: 5px;
1293
+ padding: var(--spacing-large, 12px);
1294
+ background-color: var(--md-sys-color-on-primary);
1295
+
1296
+ md-outlined-text-field[type='text'] {
1297
+ width: 60%;
1298
+ }
1299
+
1300
+ md-elevated-button {
1301
+ --md-elevated-button-container-height: 30px;
1302
+ --md-elevated-button-container-color: var(--md-sys-color-on-primary);
1303
+ --md-elevated-button-label-text-size: 16px;
1304
+ }
1305
+ hr {
1306
+ border: 1px rgba(51, 51, 51, 0.1) dashed;
1307
+ width: 100%;
1308
+ margin-bottom: var(--spacing-tiny, 2px);
1309
+ }
1310
+ div[warn] {
1311
+ font-size: 12px;
1312
+ color: red;
1313
+ margin-left: var(--spacing-small, 4px);
1314
+ margin-bottom: var(--spacing-small, 4px);
1315
+ }
1316
+
1317
+ md-outlined-button {
1318
+ min-height: 30px;
1319
+ padding: 0 var(--spacing-large, 12px);
1320
+ box-shadow: 1px 1px 1px #0000001a;
1321
+ --md-outlined-button-label-text-color: #586878;
1322
+ --md-outlined-button-label-text-weight: bold;
1323
+ --md-sys-color-outline: rgba(51, 51, 51, 0.2);
1324
+ }
1325
+
1326
+ div[row] {
1327
+ span:first-child {
1328
+ flex: 0.2;
1329
+ }
1330
+ span:last-child {
1331
+ flex: 0.8;
1332
+ }
1333
+ }
1334
+
1335
+ div[separate-container] {
1336
+ display: grid;
1337
+ grid-template-columns: repeat(2, 1fr);
1338
+ gap: 8px 30px;
1339
+ margin-left: 15px;
1340
+
1341
+ md-outlined-text-field {
1342
+ width: 80px;
1343
+ }
1344
+
1345
+ & > div {
1346
+ display: flex;
1347
+ gap: 15px;
1348
+
1349
+ span[floor-row] {
1350
+ display: inline-flex;
1351
+ align-items: center;
1352
+ margin-left: 5px;
1353
+ }
1354
+
1355
+ span[floor-title] {
1356
+ min-width: 33px;
1357
+ margin-right: var(--spacing-small, 4px);
1358
+ }
1359
+ span:first-child {
1360
+ flex: 0.4;
1361
+ justify-content: flex-start;
1362
+ display: flex;
1363
+ }
1364
+ span:last-child {
1365
+ flex: 0.6;
1366
+ display: flex;
1367
+ align-items: center;
1368
+ padding-left: var(--spacing-medium, 8px);
1369
+ }
1370
+ }
1371
+
1372
+ div[basement-container] {
1373
+ display: flex;
1374
+ align-items: center;
1375
+ gap: 4px;
1376
+
1377
+ div[basement-checkbox] {
1378
+ display: flex;
1379
+ align-items: center;
1380
+ cursor: pointer;
1381
+
1382
+ md-icon {
1383
+ --md-icon-size: 25px;
1384
+ color: #808080;
1385
+ transition: opacity 0.2s ease;
1386
+ }
1387
+
1388
+ &[disabled] {
1389
+ cursor: not-allowed;
1390
+ opacity: 0.4;
1391
+
1392
+ md-icon {
1393
+ color: #cccccc;
1394
+ }
1395
+ }
1396
+
1397
+ &[checked] md-icon {
1398
+ background-color: #2e79be;
1399
+ color: white;
1400
+ border-radius: 3px;
1401
+ }
1402
+ }
1403
+
1404
+ md-outlined-text-field[basement-floor] {
1405
+ width: 70px;
1406
+ margin-left: var(--spacing-small, 4px);
1407
+ opacity: 1;
1408
+ transition: opacity 0.2s ease;
1409
+
1410
+ &[disabled] {
1411
+ opacity: 0.4;
1412
+ pointer-events: none;
1413
+ }
1414
+ }
1415
+ }
1416
+ }
1417
+
1418
+ &[project] {
1419
+ div[separate-container] {
1420
+ margin-left: 15px;
1421
+
1422
+ & > div {
1423
+ align-items: center;
1424
+
1425
+ span:first-child {
1426
+ flex: 0.4;
1427
+ min-width: 100px;
1428
+ }
1429
+ span:last-child {
1430
+ flex: 0.4;
1431
+ margin-left: 0;
1432
+ }
1433
+ }
1434
+ }
1435
+ }
1436
+ }
1437
+ }
1438
+ }
1439
+ `
1440
+ ];
1441
+ __decorate([
1442
+ state(),
1443
+ __metadata("design:type", String)
1444
+ ], ProjectUpdate.prototype, "projectId", void 0);
1445
+ __decorate([
1446
+ state(),
1447
+ __metadata("design:type", Object)
1448
+ ], ProjectUpdate.prototype, "project", void 0);
1449
+ __decorate([
1450
+ state(),
1451
+ __metadata("design:type", Array)
1452
+ ], ProjectUpdate.prototype, "selectedValues", void 0);
1453
+ __decorate([
1454
+ state(),
1455
+ __metadata("design:type", Array)
1456
+ ], ProjectUpdate.prototype, "overallConstructorList", void 0);
1457
+ __decorate([
1458
+ state(),
1459
+ __metadata("design:type", Array)
1460
+ ], ProjectUpdate.prototype, "taskConstructorList", void 0);
1461
+ __decorate([
1462
+ state(),
1463
+ __metadata("design:type", Array)
1464
+ ], ProjectUpdate.prototype, "taskSupervisoryList", void 0);
1465
+ __decorate([
1466
+ state(),
1467
+ __metadata("design:type", Array)
1468
+ ], ProjectUpdate.prototype, "overallSupervisoryList", void 0);
1469
+ __decorate([
1470
+ state(),
1471
+ __metadata("design:type", Boolean)
1472
+ ], ProjectUpdate.prototype, "collectingBasicInfo", void 0);
1473
+ ProjectUpdate = __decorate([
1474
+ customElement('project-update')
1475
+ ], ProjectUpdate);
1476
+ export { ProjectUpdate };
1477
+ //# sourceMappingURL=project-update.js.map