@dssp/project 1.0.0-alpha.1 → 1.0.0-alpha.100

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 (235) hide show
  1. package/dist-client/index.d.ts +1 -0
  2. package/dist-client/index.js +1 -1
  3. package/dist-client/index.js.map +1 -1
  4. package/dist-client/pages/lib/chatbot-widget.d.ts +53 -0
  5. package/dist-client/pages/lib/chatbot-widget.js +631 -0
  6. package/dist-client/pages/lib/chatbot-widget.js.map +1 -0
  7. package/dist-client/pages/lib/select2-component.d.ts +1 -1
  8. package/dist-client/pages/lib/select2-component.js +36 -36
  9. package/dist-client/pages/lib/select2-component.js.map +1 -1
  10. package/dist-client/pages/lib/waether.d.ts +2 -1
  11. package/dist-client/pages/lib/waether.js +7 -3
  12. package/dist-client/pages/lib/waether.js.map +1 -1
  13. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  14. package/dist-client/pages/project/component/pagenation.js +142 -0
  15. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  16. package/dist-client/pages/project/component/project-update-header.js +26 -3
  17. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  18. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.d.ts +1 -0
  19. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +308 -0
  20. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  21. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.d.ts +1 -0
  22. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +356 -0
  23. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  24. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.d.ts +1 -0
  25. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +682 -0
  26. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  27. package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +33 -0
  28. package/dist-client/pages/project/popup/checklist/task-checklist-view.js +676 -0
  29. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  30. package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
  31. package/dist-client/pages/project/popup/popup-plan-export.js +242 -0
  32. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
  33. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +3 -0
  34. package/dist-client/pages/project/popup/popup-plan-upload.js +130 -4
  35. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -1
  36. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -1
  37. package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
  38. package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
  39. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  40. package/dist-client/pages/project/project-completed-list.d.ts +5 -0
  41. package/dist-client/pages/project/project-completed-list.js +32 -4
  42. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  43. package/dist-client/pages/project/project-detail.d.ts +8 -1
  44. package/dist-client/pages/project/project-detail.js +488 -163
  45. package/dist-client/pages/project/project-detail.js.map +1 -1
  46. package/dist-client/pages/project/project-list.d.ts +69 -0
  47. package/dist-client/pages/project/project-list.js +94 -16
  48. package/dist-client/pages/project/project-list.js.map +1 -1
  49. package/dist-client/pages/project/project-plan-management.js +35 -14
  50. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  51. package/dist-client/pages/project/project-setting-list.d.ts +7 -0
  52. package/dist-client/pages/project/project-setting-list.js +82 -27
  53. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  54. package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
  55. package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
  56. package/dist-client/pages/project/project-task-list.js.map +1 -0
  57. package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -4
  58. package/dist-client/pages/project/project-task.js +692 -0
  59. package/dist-client/pages/project/project-task.js.map +1 -0
  60. package/dist-client/pages/project/project-update.d.ts +35 -0
  61. package/dist-client/pages/project/project-update.js +633 -49
  62. package/dist-client/pages/project/project-update.js.map +1 -1
  63. package/dist-client/pages/resource/construction-detail-type-popup.js.map +1 -1
  64. package/dist-client/pages/resource/construction-type-management.js +14 -0
  65. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  66. package/dist-client/pages/resource/inspection-drawing-type-management.js.map +1 -1
  67. package/dist-client/pages/resource/inspection-part-popup.js.map +1 -1
  68. package/dist-client/pages/resource/resource-importer.js.map +1 -1
  69. package/dist-client/pages/resource/resource-list-page.d.ts +1 -2
  70. package/dist-client/pages/resource/resource-list-page.js +1 -2
  71. package/dist-client/pages/resource/resource-list-page.js.map +1 -1
  72. package/dist-client/pages/resource/worker-type-management.js.map +1 -1
  73. package/dist-client/pages/task/task-importer.js.map +1 -1
  74. package/dist-client/pages/task/task-list-page.d.ts +1 -2
  75. package/dist-client/pages/task/task-list-page.js +1 -2
  76. package/dist-client/pages/task/task-list-page.js.map +1 -1
  77. package/dist-client/pages/task-resource/task-resource-importer.js.map +1 -1
  78. package/dist-client/pages/task-resource/task-resource-list-page.d.ts +1 -2
  79. package/dist-client/pages/task-resource/task-resource-list-page.js +1 -2
  80. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -1
  81. package/dist-client/route.d.ts +1 -1
  82. package/dist-client/route.js +4 -4
  83. package/dist-client/route.js.map +1 -1
  84. package/dist-client/shared/domain-context.d.ts +18 -0
  85. package/dist-client/shared/domain-context.js +28 -0
  86. package/dist-client/shared/domain-context.js.map +1 -0
  87. package/dist-client/tsconfig.tsbuildinfo +1 -1
  88. package/dist-client/viewparts/domain-switch.d.ts +19 -0
  89. package/dist-client/viewparts/domain-switch.js +274 -0
  90. package/dist-client/viewparts/domain-switch.js.map +1 -0
  91. package/dist-server/controllers/export-tasks.js +1 -2
  92. package/dist-server/controllers/export-tasks.js.map +1 -1
  93. package/dist-server/controllers/import-task.js +1 -2
  94. package/dist-server/controllers/import-task.js.map +1 -1
  95. package/dist-server/controllers/parse-excel.d.ts +0 -2
  96. package/dist-server/controllers/parse-excel.js +1 -2
  97. package/dist-server/controllers/parse-excel.js.map +1 -1
  98. package/dist-server/middlewares/index.js +1 -2
  99. package/dist-server/middlewares/index.js.map +1 -1
  100. package/dist-server/migrations/1723861466413-seed-roles.js.map +1 -1
  101. package/dist-server/migrations/1723861466414-seed-codes.js +1 -1
  102. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
  103. package/dist-server/migrations/1723861476419-seed-resources.js.map +1 -1
  104. package/dist-server/migrations/1723861478420-seed-/bsample-project.js.map +1 -1
  105. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js.map +1 -1
  106. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js +2 -2
  107. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js.map +1 -1
  108. package/dist-server/service/construction-detail-type/construction-detail-type-query.js +2 -2
  109. package/dist-server/service/construction-detail-type/construction-detail-type-query.js.map +1 -1
  110. package/dist-server/service/construction-detail-type/construction-detail-type-type.js +4 -4
  111. package/dist-server/service/construction-detail-type/construction-detail-type-type.js.map +1 -1
  112. package/dist-server/service/construction-detail-type/construction-detail-type.js +2 -2
  113. package/dist-server/service/construction-detail-type/construction-detail-type.js.map +1 -1
  114. package/dist-server/service/construction-type/construction-type-mutation.js +2 -2
  115. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -1
  116. package/dist-server/service/construction-type/construction-type-query.d.ts +2 -2
  117. package/dist-server/service/construction-type/construction-type-query.js +7 -12
  118. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  119. package/dist-server/service/construction-type/construction-type-type.d.ts +1 -0
  120. package/dist-server/service/construction-type/construction-type-type.js +8 -4
  121. package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
  122. package/dist-server/service/construction-type/construction-type.d.ts +1 -0
  123. package/dist-server/service/construction-type/construction-type.js +7 -2
  124. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  125. package/dist-server/service/index.d.ts +3 -2
  126. package/dist-server/service/index.js +6 -2
  127. package/dist-server/service/index.js.map +1 -1
  128. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js +2 -2
  129. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js.map +1 -1
  130. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.d.ts +2 -2
  131. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +7 -12
  132. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
  133. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js +4 -4
  134. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js.map +1 -1
  135. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js +2 -2
  136. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js.map +1 -1
  137. package/dist-server/service/inspection-part/inspection-part-mutation.js +2 -2
  138. package/dist-server/service/inspection-part/inspection-part-mutation.js.map +1 -1
  139. package/dist-server/service/inspection-part/inspection-part-query.js +2 -2
  140. package/dist-server/service/inspection-part/inspection-part-query.js.map +1 -1
  141. package/dist-server/service/inspection-part/inspection-part-type.js +4 -4
  142. package/dist-server/service/inspection-part/inspection-part-type.js.map +1 -1
  143. package/dist-server/service/inspection-part/inspection-part.js +2 -2
  144. package/dist-server/service/inspection-part/inspection-part.js.map +1 -1
  145. package/dist-server/service/manager/index.d.ts +2 -0
  146. package/dist-server/service/manager/index.js +3 -1
  147. package/dist-server/service/manager/index.js.map +1 -1
  148. package/dist-server/service/manager/manager-mutation.js +2 -2
  149. package/dist-server/service/manager/manager-mutation.js.map +1 -1
  150. package/dist-server/service/manager/manager-query.d.ts +1 -1
  151. package/dist-server/service/manager/manager-query.js +5 -9
  152. package/dist-server/service/manager/manager-query.js.map +1 -1
  153. package/dist-server/service/manager/manager-type.js +4 -4
  154. package/dist-server/service/manager/manager-type.js.map +1 -1
  155. package/dist-server/service/manager/manager.js +2 -2
  156. package/dist-server/service/manager/manager.js.map +1 -1
  157. package/dist-server/service/project/issue-project-code.d.ts +7 -0
  158. package/dist-server/service/project/issue-project-code.js +27 -0
  159. package/dist-server/service/project/issue-project-code.js.map +1 -0
  160. package/dist-server/service/project/project-mutation.d.ts +3 -0
  161. package/dist-server/service/project/project-mutation.js +231 -24
  162. package/dist-server/service/project/project-mutation.js.map +1 -1
  163. package/dist-server/service/project/project-query.d.ts +14 -2
  164. package/dist-server/service/project/project-query.js +167 -16
  165. package/dist-server/service/project/project-query.js.map +1 -1
  166. package/dist-server/service/project/project-type.d.ts +14 -2
  167. package/dist-server/service/project/project-type.js +57 -11
  168. package/dist-server/service/project/project-type.js.map +1 -1
  169. package/dist-server/service/project/project.d.ts +29 -0
  170. package/dist-server/service/project/project.js +103 -5
  171. package/dist-server/service/project/project.js.map +1 -1
  172. package/dist-server/service/resource/resource-mutation.js +7 -8
  173. package/dist-server/service/resource/resource-mutation.js.map +1 -1
  174. package/dist-server/service/resource/resource-query.d.ts +2 -2
  175. package/dist-server/service/resource/resource-query.js +7 -12
  176. package/dist-server/service/resource/resource-query.js.map +1 -1
  177. package/dist-server/service/resource/resource-type.js +6 -6
  178. package/dist-server/service/resource/resource-type.js.map +1 -1
  179. package/dist-server/service/resource/resource.js +3 -3
  180. package/dist-server/service/resource/resource.js.map +1 -1
  181. package/dist-server/service/task/task-mutation.js +2 -2
  182. package/dist-server/service/task/task-mutation.js.map +1 -1
  183. package/dist-server/service/task/task-query.d.ts +2 -0
  184. package/dist-server/service/task/task-query.js +15 -4
  185. package/dist-server/service/task/task-query.js.map +1 -1
  186. package/dist-server/service/task/task-type.js +10 -10
  187. package/dist-server/service/task/task-type.js.map +1 -1
  188. package/dist-server/service/task/task.d.ts +2 -0
  189. package/dist-server/service/task/task.js +13 -8
  190. package/dist-server/service/task/task.js.map +1 -1
  191. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  192. package/dist-server/service/task-checklist-binding/index.js +9 -0
  193. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  194. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  195. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +188 -0
  196. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  197. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  198. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  199. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  200. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  201. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  202. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  203. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  204. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  205. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  206. package/dist-server/service/task-resource/task-resource-mutation.js +2 -2
  207. package/dist-server/service/task-resource/task-resource-mutation.js.map +1 -1
  208. package/dist-server/service/task-resource/task-resource-query.d.ts +2 -2
  209. package/dist-server/service/task-resource/task-resource-query.js +6 -11
  210. package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
  211. package/dist-server/service/task-resource/task-resource-type.js +6 -6
  212. package/dist-server/service/task-resource/task-resource-type.js.map +1 -1
  213. package/dist-server/service/task-resource/task-resource.js +2 -2
  214. package/dist-server/service/task-resource/task-resource.js.map +1 -1
  215. package/dist-server/service/worker-type/worker-type-mutation.js +2 -2
  216. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -1
  217. package/dist-server/service/worker-type/worker-type-query.d.ts +2 -2
  218. package/dist-server/service/worker-type/worker-type-query.js +7 -12
  219. package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
  220. package/dist-server/service/worker-type/worker-type-type.js +4 -4
  221. package/dist-server/service/worker-type/worker-type-type.js.map +1 -1
  222. package/dist-server/service/worker-type/worker-type.js +2 -2
  223. package/dist-server/service/worker-type/worker-type.js.map +1 -1
  224. package/dist-server/tsconfig.tsbuildinfo +1 -1
  225. package/package.json +15 -11
  226. package/things-factory.config.js +3 -3
  227. package/translations/en.json +10 -9
  228. package/translations/ja.json +15 -1
  229. package/translations/ko.json +3 -0
  230. package/translations/ms.json +15 -1
  231. package/translations/zh.json +15 -1
  232. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
  233. package/dist-client/pages/project/project-schedule-list.js.map +0 -1
  234. package/dist-client/pages/project/project-schedule.js +0 -407
  235. package/dist-client/pages/project/project-schedule.js.map +0 -1
@@ -9,13 +9,16 @@ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
9
9
  import { client } from '@operato/graphql';
10
10
  import { notify } from '@operato/layout';
11
11
  import gql from 'graphql-tag';
12
+ import { SITE_TYPE_DISPLAY } from './project-list';
12
13
  import '../lib/select2-component';
13
14
  import './component/project-update-header';
15
+ import { isProjectTypeDomain } from '../../shared/domain-context';
14
16
  let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
15
17
  constructor() {
16
18
  super(...arguments);
17
19
  this.defaultProject = {
18
20
  name: '',
21
+ documentNaming: '',
19
22
  buildingComplex: {
20
23
  address: '',
21
24
  area: 0,
@@ -34,14 +37,18 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
34
37
  this.taskConstructorList = [];
35
38
  this.taskSupervisoryList = [];
36
39
  this.overallSupervisoryList = [];
40
+ this.collectingBasicInfo = false;
37
41
  }
38
42
  get context() {
43
+ var _a, _b;
39
44
  return {
40
- title: '프로젝트 정보 관리'
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
+ : '프로젝트 정보 관리'
41
48
  };
42
49
  }
43
50
  render() {
44
- 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;
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;
45
52
  return html `
46
53
  <project-update-header .projectId=${this.project.id || ''} title="프로젝트 정보 관리" @custom-click=${this._saveProject}>
47
54
  </project-update-header>
@@ -62,8 +69,27 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
62
69
  </span>
63
70
  </div>
64
71
  <div row>
65
- <span>프로젝트 주소</span>
72
+ <span>프로젝트 문서 네이밍</span>
66
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">
67
93
  <md-outlined-text-field
68
94
  type="text"
69
95
  name="address"
@@ -71,6 +97,14 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
71
97
  .value=${((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.address) || ''}
72
98
  @input=${this._onInputChange}
73
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>
74
108
  </span>
75
109
  </div>
76
110
  <div row>
@@ -100,7 +134,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
100
134
  </span>
101
135
  </div>
102
136
  <div row>
103
- <span>면적</span>
137
+ <span>연 면적</span>
104
138
  <span align-end
105
139
  ><md-outlined-text-field
106
140
  type="text"
@@ -109,10 +143,56 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
109
143
  building-complex
110
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()) || ''}
111
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="%"
112
162
  ></md-outlined-text-field>
113
- ㎡</span
114
- >
163
+ </span>
115
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
+
116
196
  <div row>
117
197
  <span>착공일정 ~ 준공일정</span>
118
198
  <span
@@ -142,7 +222,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
142
222
  type="text"
143
223
  name="clientCompany"
144
224
  building-complex
145
- .value=${((_o = (_m = this.project) === null || _m === void 0 ? void 0 : _m.buildingComplex) === null || _o === void 0 ? void 0 : _o.clientCompany) || ''}
225
+ .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.clientCompany) || ''}
146
226
  @input=${this._onInputChange}
147
227
  ></md-outlined-text-field>
148
228
  </span>
@@ -154,7 +234,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
154
234
  type="text"
155
235
  name="constructionCompany"
156
236
  building-complex
157
- .value=${((_q = (_p = this.project) === null || _p === void 0 ? void 0 : _p.buildingComplex) === null || _q === void 0 ? void 0 : _q.constructionCompany) || ''}
237
+ .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionCompany) || ''}
158
238
  @input=${this._onInputChange}
159
239
  ></md-outlined-text-field>
160
240
  </span>
@@ -166,7 +246,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
166
246
  type="text"
167
247
  name="designCompany"
168
248
  building-complex
169
- .value=${((_s = (_r = this.project) === null || _r === void 0 ? void 0 : _r.buildingComplex) === null || _s === void 0 ? void 0 : _s.designCompany) || ''}
249
+ .value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.buildingComplex) === null || _y === void 0 ? void 0 : _y.designCompany) || ''}
170
250
  @input=${this._onInputChange}
171
251
  ></md-outlined-text-field>
172
252
  </span>
@@ -178,7 +258,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
178
258
  type="text"
179
259
  name="supervisoryCompany"
180
260
  building-complex
181
- .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.supervisoryCompany) || ''}
261
+ .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.supervisoryCompany) || ''}
182
262
  @input=${this._onInputChange}
183
263
  ></md-outlined-text-field>
184
264
  </span>
@@ -190,17 +270,30 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
190
270
  type="text"
191
271
  name="constructionType"
192
272
  building-complex
193
- .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionType) || ''}
273
+ .value=${((_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionType) || ''}
194
274
  @input=${this._onInputChange}
195
275
  ></md-outlined-text-field>
196
276
  </span>
197
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
+
198
291
  <div row>
199
292
  <span>대표사진 업로드</span>
200
293
  <span>
201
294
  <ox-input-image
202
295
  name="mainPhoto"
203
- value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.mainPhoto) === null || _y === void 0 ? void 0 : _y.fullpath) || ''}
296
+ value=${((_6 = (_5 = this.project) === null || _5 === void 0 ? void 0 : _5.mainPhoto) === null || _6 === void 0 ? void 0 : _6.fullpath) || ''}
204
297
  @change=${this.onCreateAttachment.bind(this)}
205
298
  ></ox-input-image>
206
299
  </span>
@@ -212,7 +305,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
212
305
  name="drawing"
213
306
  label=" "
214
307
  description="IFC 업로드"
215
- .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.drawing) || ''}
308
+ .value=${((_8 = (_7 = this.project) === null || _7 === void 0 ? void 0 : _7.buildingComplex) === null || _8 === void 0 ? void 0 : _8.drawing) || ''}
216
309
  @change=${this.onCreateAttachment.bind(this)}
217
310
  ></ox-input-file>
218
311
  </span>
@@ -225,8 +318,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
225
318
  name="constructionCost"
226
319
  numeric
227
320
  building-complex
228
- .value=${((_3 = (_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionCost) === null || _3 === void 0 ? void 0 : _3.toString()) || ''}
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()) || ''}
229
336
  @input=${this._onInputChange}
337
+ suffix-text="명"
230
338
  ></md-outlined-text-field>
231
339
  </span>
232
340
  </div>
@@ -237,7 +345,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
237
345
  type="textarea"
238
346
  name="etc"
239
347
  building-complex
240
- .value=${((_5 = (_4 = this.project) === null || _4 === void 0 ? void 0 : _4.buildingComplex) === null || _5 === void 0 ? void 0 : _5.etc) || ''}
348
+ .value=${((_16 = (_15 = this.project) === null || _15 === void 0 ? void 0 : _15.buildingComplex) === null || _16 === void 0 ? void 0 : _16.etc) || ''}
241
349
  @input=${this._onInputChange}
242
350
  ></md-outlined-text-field>
243
351
  </span>
@@ -249,7 +357,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
249
357
  placeholder="총괄 시공 관리자 리스트"
250
358
  name="overallConstructorEmails"
251
359
  .options=${this.overallConstructorList}
252
- .selectedValues=${((_7 = (_6 = this.project) === null || _6 === void 0 ? void 0 : _6.buildingComplex) === null || _7 === void 0 ? void 0 : _7.overallConstructorEmails) || []}
360
+ .selectedValues=${((_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.overallConstructorEmails) || []}
253
361
  @selection-changed=${this._handleSelectionChange}
254
362
  ></select2-component>
255
363
  </span>
@@ -261,7 +369,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
261
369
  placeholder="공종별 시공 관리자 리스트"
262
370
  name="taskConstructorEmails"
263
371
  .options=${this.taskConstructorList}
264
- .selectedValues=${((_9 = (_8 = this.project) === null || _8 === void 0 ? void 0 : _8.buildingComplex) === null || _9 === void 0 ? void 0 : _9.taskConstructorEmails) || []}
372
+ .selectedValues=${((_20 = (_19 = this.project) === null || _19 === void 0 ? void 0 : _19.buildingComplex) === null || _20 === void 0 ? void 0 : _20.taskConstructorEmails) || []}
265
373
  @selection-changed=${this._handleSelectionChange}
266
374
  ></select2-component>
267
375
  </span>
@@ -273,7 +381,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
273
381
  placeholder="총괄 감리 책임자 리스트"
274
382
  name="overallSupervisoryEmails"
275
383
  .options=${this.overallSupervisoryList}
276
- .selectedValues=${((_11 = (_10 = this.project) === null || _10 === void 0 ? void 0 : _10.buildingComplex) === null || _11 === void 0 ? void 0 : _11.overallSupervisoryEmails) || []}
384
+ .selectedValues=${((_22 = (_21 = this.project) === null || _21 === void 0 ? void 0 : _21.buildingComplex) === null || _22 === void 0 ? void 0 : _22.overallSupervisoryEmails) || []}
277
385
  @selection-changed=${this._handleSelectionChange}
278
386
  ></select2-component>
279
387
  </span>
@@ -285,7 +393,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
285
393
  placeholder="공종별 감리 책임자 리스트"
286
394
  name="taskSupervisoryEmails"
287
395
  .options=${this.taskSupervisoryList}
288
- .selectedValues=${((_13 = (_12 = this.project) === null || _12 === void 0 ? void 0 : _12.buildingComplex) === null || _13 === void 0 ? void 0 : _13.taskSupervisoryEmails) || []}
396
+ .selectedValues=${((_24 = (_23 = this.project) === null || _23 === void 0 ? void 0 : _23.buildingComplex) === null || _24 === void 0 ? void 0 : _24.taskSupervisoryEmails) || []}
289
397
  @selection-changed=${this._handleSelectionChange}
290
398
  ></select2-component
291
399
  ></span>
@@ -293,6 +401,44 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
293
401
  </div>
294
402
 
295
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
+
296
442
  <div>
297
443
  <h3>건설구분 상세 정보</h3>
298
444
  <div row>
@@ -303,7 +449,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
303
449
  numeric
304
450
  building-complex
305
451
  name="householdCount"
306
- .value=${((_16 = (_15 = (_14 = this.project) === null || _14 === void 0 ? void 0 : _14.buildingComplex) === null || _15 === void 0 ? void 0 : _15.householdCount) === null || _16 === void 0 ? void 0 : _16.toString()) || ''}
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()) || ''}
307
453
  @input=${this._onInputChange}
308
454
  ></md-outlined-text-field>
309
455
  </span>
@@ -316,7 +462,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
316
462
  numeric
317
463
  building-complex
318
464
  name="buildingCount"
319
- value=${((_19 = (_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.buildingCount) === null || _19 === void 0 ? void 0 : _19.toString()) || ''}
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()) || ''}
320
466
  @input=${this._onInputChange}
321
467
  ></md-outlined-text-field>
322
468
  <md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>
@@ -325,8 +471,8 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
325
471
  <hr />
326
472
  <div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>
327
473
  <div separate-container>
328
- ${(_22 = (_21 = (_20 = this.project) === null || _20 === void 0 ? void 0 : _20.buildingComplex) === null || _21 === void 0 ? void 0 : _21.buildings) === null || _22 === void 0 ? void 0 : _22.map((building, idx) => {
329
- var _a;
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;
330
476
  return html `
331
477
  <div>
332
478
  <span>
@@ -339,7 +485,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
339
485
  placeholder="ooo동"
340
486
  ></md-outlined-text-field>
341
487
  </span>
342
- <span>
488
+ <span floor-row>
343
489
  <span floor-title>층수</span>
344
490
  <md-outlined-text-field
345
491
  type="text"
@@ -351,6 +497,31 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
351
497
  placeholder="oo"
352
498
  ></md-outlined-text-field>
353
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>
354
525
  </div>
355
526
  `;
356
527
  })}
@@ -368,7 +539,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
368
539
  numeric
369
540
  project
370
541
  name="totalProgress"
371
- .value=${((_23 = this.project.totalProgress) === null || _23 === void 0 ? void 0 : _23.toString()) || ''}
542
+ .value=${((_34 = this.project.totalProgress) === null || _34 === void 0 ? void 0 : _34.toString()) || ''}
372
543
  @input=${this._onInputChange}
373
544
  suffix-text="%"
374
545
  ></md-outlined-text-field>
@@ -382,7 +553,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
382
553
  numeric
383
554
  project
384
555
  name="inspPassRate"
385
- .value=${((_24 = this.project.inspPassRate) === null || _24 === void 0 ? void 0 : _24.toString()) || ''}
556
+ .value=${((_35 = this.project.inspPassRate) === null || _35 === void 0 ? void 0 : _35.toString()) || ''}
386
557
  @input=${this._onInputChange}
387
558
  suffix-text="%"
388
559
  ></md-outlined-text-field>
@@ -398,7 +569,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
398
569
  numeric
399
570
  project
400
571
  name="weeklyProgress"
401
- .value=${((_25 = this.project.weeklyProgress) === null || _25 === void 0 ? void 0 : _25.toString()) || ''}
572
+ .value=${((_36 = this.project.weeklyProgress) === null || _36 === void 0 ? void 0 : _36.toString()) || ''}
402
573
  @input=${this._onInputChange}
403
574
  suffix-text="%"
404
575
  ></md-outlined-text-field>
@@ -412,7 +583,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
412
583
  numeric
413
584
  project
414
585
  name="robotProgressRate"
415
- .value=${((_26 = this.project.robotProgressRate) === null || _26 === void 0 ? void 0 : _26.toString()) || ''}
586
+ .value=${((_37 = this.project.robotProgressRate) === null || _37 === void 0 ? void 0 : _37.toString()) || ''}
416
587
  @input=${this._onInputChange}
417
588
  suffix-text="%"
418
589
  ></md-outlined-text-field>
@@ -428,7 +599,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
428
599
  numeric
429
600
  project
430
601
  name="kpi"
431
- .value=${((_27 = this.project.kpi) === null || _27 === void 0 ? void 0 : _27.toString()) || ''}
602
+ .value=${((_38 = this.project.kpi) === null || _38 === void 0 ? void 0 : _38.toString()) || ''}
432
603
  @input=${this._onInputChange}
433
604
  suffix-text="%"
434
605
  ></md-outlined-text-field>
@@ -442,7 +613,72 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
442
613
  numeric
443
614
  project
444
615
  name="structuralSafetyRate"
445
- .value=${((_28 = this.project.structuralSafetyRate) === null || _28 === void 0 ? void 0 : _28.toString()) || ''}
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()) || ''}
446
682
  @input=${this._onInputChange}
447
683
  suffix-text="%"
448
684
  ></md-outlined-text-field>
@@ -460,7 +696,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
460
696
  type="textarea"
461
697
  name="notice"
462
698
  building-complex
463
- .value=${((_30 = (_29 = this.project) === null || _29 === void 0 ? void 0 : _29.buildingComplex) === null || _30 === void 0 ? void 0 : _30.notice) || ''}
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) || ''}
464
716
  @input=${this._onInputChange}
465
717
  ></md-outlined-text-field>
466
718
  </span>
@@ -472,10 +724,30 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
472
724
  }
473
725
  async pageInitialized(lifecycle) { }
474
726
  async pageUpdated(changes, lifecycle) {
475
- if (this.active) {
476
- this.projectId = lifecycle.resourceId || '';
477
- await this.initProject(this.projectId);
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
+ }
478
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) || '';
479
751
  }
480
752
  async initProject(projectId = '') {
481
753
  var _a, _b, _c;
@@ -484,7 +756,14 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
484
756
  query Project($id: String!, $filters: [Filter!]) {
485
757
  project(id: $id) {
486
758
  id
759
+ code
760
+ tenantDomain {
761
+ id
762
+ subdomain
763
+ name
764
+ }
487
765
  name
766
+ documentNaming
488
767
  startDate
489
768
  endDate
490
769
  mainPhoto {
@@ -496,12 +775,21 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
496
775
  inspPassRate
497
776
  robotProgressRate
498
777
  structuralSafetyRate
778
+ robotCount
499
779
  buildingComplex {
500
780
  id
501
781
  address
782
+ siteType
502
783
  latitude
503
784
  longitude
504
785
  area
786
+ coverageRatio
787
+ floorAreaRatio
788
+ structureType
789
+ workerCount
790
+ designChangeCount
791
+ plannedProgress
792
+ actualProgress
505
793
  clientCompany
506
794
  constructionCompany
507
795
  supervisoryCompany
@@ -520,10 +808,13 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
520
808
  taskConstructorEmails
521
809
  overallSupervisoryEmails
522
810
  taskSupervisoryEmails
811
+ virtualTourLink
523
812
  buildings {
524
813
  id
525
814
  name
526
815
  floorCount
816
+ hasBasement
817
+ basementFloorCount
527
818
  }
528
819
  }
529
820
  }
@@ -559,22 +850,41 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
559
850
  ]
560
851
  }
561
852
  });
562
- this.project = (_a = response.data) === null || _a === void 0 ? void 0 : _a.project;
853
+ this.project = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.project) || Object.assign({}, this.defaultProject);
563
854
  const items = ((_c = (_b = response.data) === null || _b === void 0 ? void 0 : _b.employees) === null || _c === void 0 ? void 0 : _c.items) || [];
564
855
  this.overallConstructorList = this._filterUserByPermission(items, 'OVERALL_CONSTRUCTOR');
565
856
  this.taskConstructorList = this._filterUserByPermission(items, 'TASK_CONSTRUCTOR');
566
857
  this.overallSupervisoryList = this._filterUserByPermission(items, 'OVERALL_SUPERVISORY');
567
858
  this.taskSupervisoryList = this._filterUserByPermission(items, 'TASK_SUPERVISORY');
859
+ this.updateContext();
568
860
  }
569
861
  _filterUserByPermission(userList, permission) {
570
862
  return userList
571
863
  .filter(v => v.jobResponsibility == permission || v.jobResponsibility == 'ADMIN')
572
864
  .map(v => ({ name: v.name, value: v.user.email }));
573
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
+ }
574
881
  async _saveProject() {
575
882
  // 첨부 파일 필드 제거 (첨부 파일은 {filename}Upload 로 전송)
576
883
  delete this.project.mainPhoto;
577
884
  delete this.project.buildingComplex.drawing;
885
+ // ProjectPatch 입력 타입에 없는 표시 전용 필드 제거 (테넌트 승격 UI 표시용)
886
+ delete this.project.code;
887
+ delete this.project.tenantDomain;
578
888
  const response = await client.mutate({
579
889
  mutation: gql `
580
890
  mutation UpdateProject($project: ProjectPatch!) {
@@ -584,7 +894,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
584
894
  }
585
895
  `,
586
896
  variables: {
587
- project: this.project
897
+ project: this._stripTypename(this.project)
588
898
  },
589
899
  context: {
590
900
  hasUpload: true
@@ -594,6 +904,174 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
594
904
  notify({ message: '저장에 성공하였습니다.' });
595
905
  }
596
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
+ }
597
1075
  // 동 적용 버튼을 누르면 입력한 수 만큼 해당 단지에 동 데이터 생성
598
1076
  _setBuilding() {
599
1077
  var _a, _b, _c, _d, _e;
@@ -626,6 +1104,10 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
626
1104
  }
627
1105
  if (target.hasAttribute('project')) {
628
1106
  this.project[target.name] = inputVal;
1107
+ // documentNaming 필드가 변경되면 실시간으로 미리보기 업데이트
1108
+ if (target.name === 'documentNaming') {
1109
+ this.requestUpdate();
1110
+ }
629
1111
  }
630
1112
  else if (target.hasAttribute('building-complex')) {
631
1113
  this.project.buildingComplex[target.name] = inputVal;
@@ -650,6 +1132,16 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
650
1132
  const selectedValues = e.detail.selectedValues;
651
1133
  this.project.buildingComplex[name] = selectedValues;
652
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
+ }
653
1145
  };
654
1146
  ProjectUpdate.styles = [
655
1147
  css `
@@ -670,7 +1162,7 @@ ProjectUpdate.styles = [
670
1162
  width: 100%;
671
1163
 
672
1164
  --md-outlined-text-field-container-shape: 5px;
673
- --md-outlined-text-field-outline-color: rgba(51,51,51,.20);
1165
+ --md-outlined-text-field-outline-color: rgba(51, 51, 51, 0.2);
674
1166
  --md-outlined-text-field-focus-outline-color: #1f7fd9;
675
1167
  --md-outlined-text-field-focus-outline-width: 1px;
676
1168
  --md-sys-color-primary: #586878;
@@ -681,11 +1173,18 @@ ProjectUpdate.styles = [
681
1173
  --md-outlined-field-trailing-space: var(--spacing-medium, 8px);
682
1174
  }
683
1175
  select2-component {
684
- width:100%;
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;
685
1184
  }
686
- input[type="date"] {
687
- border:1px solid rgba(51,51,51,.20);
688
- padding:var(--spacing-small, 4px) var(--spacing-medium, 8px);
1185
+ input[type='date'] {
1186
+ border: 1px solid rgba(51, 51, 51, 0.2);
1187
+ padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
689
1188
  border-radius: 5px;
690
1189
  }
691
1190
  md-outlined-text-field[type='textarea'] {
@@ -707,7 +1206,7 @@ ProjectUpdate.styles = [
707
1206
  div[body] {
708
1207
  display: flex;
709
1208
  margin: var(--spacing-large, 12px);
710
- margin-top:0;
1209
+ margin-top: 0;
711
1210
  gap: var(--spacing-medium, 8px);
712
1211
 
713
1212
  & > div {
@@ -743,6 +1242,18 @@ ProjectUpdate.styles = [
743
1242
  margin-left: var(--spacing-medium, 8px);
744
1243
  align-items: center;
745
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
+
746
1257
  &[align-end] {
747
1258
  align-items: end;
748
1259
  }
@@ -754,6 +1265,18 @@ ProjectUpdate.styles = [
754
1265
  flex: 0.55;
755
1266
  }
756
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
+
757
1280
  div[detail-info] {
758
1281
  flex: 0.45;
759
1282
  padding: 0px;
@@ -780,7 +1303,7 @@ ProjectUpdate.styles = [
780
1303
  --md-elevated-button-label-text-size: 16px;
781
1304
  }
782
1305
  hr {
783
- border: 1px rgba(51,51,51,.1) dashed;
1306
+ border: 1px rgba(51, 51, 51, 0.1) dashed;
784
1307
  width: 100%;
785
1308
  margin-bottom: var(--spacing-tiny, 2px);
786
1309
  }
@@ -790,14 +1313,14 @@ ProjectUpdate.styles = [
790
1313
  margin-left: var(--spacing-small, 4px);
791
1314
  margin-bottom: var(--spacing-small, 4px);
792
1315
  }
793
-
1316
+
794
1317
  md-outlined-button {
795
1318
  min-height: 30px;
796
1319
  padding: 0 var(--spacing-large, 12px);
797
1320
  box-shadow: 1px 1px 1px #0000001a;
798
1321
  --md-outlined-button-label-text-color: #586878;
799
1322
  --md-outlined-button-label-text-weight: bold;
800
- --md-sys-color-outline: rgba(51,51,51,.20);
1323
+ --md-sys-color-outline: rgba(51, 51, 51, 0.2);
801
1324
  }
802
1325
 
803
1326
  div[row] {
@@ -812,14 +1335,22 @@ ProjectUpdate.styles = [
812
1335
  div[separate-container] {
813
1336
  display: grid;
814
1337
  grid-template-columns: repeat(2, 1fr);
815
- gap: var(--spacing-medium, 8px);
1338
+ gap: 8px 30px;
1339
+ margin-left: 15px;
816
1340
 
817
1341
  md-outlined-text-field {
818
- width: 70px;
1342
+ width: 80px;
819
1343
  }
820
1344
 
821
1345
  & > div {
822
1346
  display: flex;
1347
+ gap: 15px;
1348
+
1349
+ span[floor-row] {
1350
+ display: inline-flex;
1351
+ align-items: center;
1352
+ margin-left: 5px;
1353
+ }
823
1354
 
824
1355
  span[floor-title] {
825
1356
  min-width: 33px;
@@ -827,7 +1358,7 @@ ProjectUpdate.styles = [
827
1358
  }
828
1359
  span:first-child {
829
1360
  flex: 0.4;
830
- justify-content: end;
1361
+ justify-content: flex-start;
831
1362
  display: flex;
832
1363
  }
833
1364
  span:last-child {
@@ -837,13 +1368,62 @@ ProjectUpdate.styles = [
837
1368
  padding-left: var(--spacing-medium, 8px);
838
1369
  }
839
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
+ }
840
1416
  }
841
1417
 
842
1418
  &[project] {
843
1419
  div[separate-container] {
1420
+ margin-left: 15px;
1421
+
844
1422
  & > div {
1423
+ align-items: center;
1424
+
845
1425
  span:first-child {
846
- flex: 0.6;
1426
+ flex: 0.4;
847
1427
  min-width: 100px;
848
1428
  }
849
1429
  span:last-child {
@@ -886,6 +1466,10 @@ __decorate([
886
1466
  state(),
887
1467
  __metadata("design:type", Array)
888
1468
  ], ProjectUpdate.prototype, "overallSupervisoryList", void 0);
1469
+ __decorate([
1470
+ state(),
1471
+ __metadata("design:type", Boolean)
1472
+ ], ProjectUpdate.prototype, "collectingBasicInfo", void 0);
889
1473
  ProjectUpdate = __decorate([
890
1474
  customElement('project-update')
891
1475
  ], ProjectUpdate);