@dssp/project 1.0.0-alpha.9 → 1.0.0-y.0

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 (106) 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 +35 -35
  9. package/dist-client/pages/lib/select2-component.js.map +1 -1
  10. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  11. package/dist-client/pages/project/component/pagenation.js +142 -0
  12. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  13. package/dist-client/pages/project/component/project-update-header.js +26 -3
  14. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  15. package/dist-client/pages/project/popup/checklist/{attachment-list-popup.js → task-checklist-attachment-list-popup.js} +15 -15
  16. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  17. package/dist-client/pages/project/popup/checklist/{comment-list-popup.js → task-checklist-comment-list-popup.js} +18 -18
  18. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  19. package/dist-client/pages/project/popup/checklist/{schedule-checklist-create-popup.d.ts → task-checklist-create-popup.d.ts} +0 -1
  20. package/dist-client/pages/project/popup/checklist/{schedule-checklist-create-popup.js → task-checklist-create-popup.js} +35 -38
  21. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  22. package/dist-client/pages/project/popup/checklist/{schedule-checklist-view.d.ts → task-checklist-view.d.ts} +2 -7
  23. package/dist-client/pages/project/popup/checklist/{schedule-checklist-view.js → task-checklist-view.js} +16 -22
  24. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  25. package/dist-client/pages/project/popup/popup-plan-export.js +8 -2
  26. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -1
  27. package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
  28. package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
  29. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  30. package/dist-client/pages/project/project-completed-list.d.ts +5 -0
  31. package/dist-client/pages/project/project-completed-list.js +32 -3
  32. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  33. package/dist-client/pages/project/project-detail.js +50 -20
  34. package/dist-client/pages/project/project-detail.js.map +1 -1
  35. package/dist-client/pages/project/project-list.d.ts +41 -0
  36. package/dist-client/pages/project/project-list.js +66 -3
  37. package/dist-client/pages/project/project-list.js.map +1 -1
  38. package/dist-client/pages/project/project-setting-list.d.ts +5 -0
  39. package/dist-client/pages/project/project-setting-list.js +32 -3
  40. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  41. package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
  42. package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
  43. package/dist-client/pages/project/project-task-list.js.map +1 -0
  44. package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -6
  45. package/dist-client/pages/project/project-task.js +686 -0
  46. package/dist-client/pages/project/project-task.js.map +1 -0
  47. package/dist-client/pages/project/project-update.js +221 -28
  48. package/dist-client/pages/project/project-update.js.map +1 -1
  49. package/dist-client/route.d.ts +1 -1
  50. package/dist-client/route.js +4 -4
  51. package/dist-client/route.js.map +1 -1
  52. package/dist-client/tsconfig.tsbuildinfo +1 -1
  53. package/dist-server/controllers/parse-excel.js.map +1 -1
  54. package/dist-server/service/index.d.ts +2 -2
  55. package/dist-server/service/index.js +5 -2
  56. package/dist-server/service/index.js.map +1 -1
  57. package/dist-server/service/project/project-mutation.js +5 -1
  58. package/dist-server/service/project/project-mutation.js.map +1 -1
  59. package/dist-server/service/project/project-query.d.ts +3 -0
  60. package/dist-server/service/project/project-query.js +48 -0
  61. package/dist-server/service/project/project-query.js.map +1 -1
  62. package/dist-server/service/project/project-type.d.ts +5 -0
  63. package/dist-server/service/project/project-type.js +19 -1
  64. package/dist-server/service/project/project-type.js.map +1 -1
  65. package/dist-server/service/project/project.d.ts +9 -0
  66. package/dist-server/service/project/project.js +31 -1
  67. package/dist-server/service/project/project.js.map +1 -1
  68. package/dist-server/service/task/task-query.d.ts +2 -0
  69. package/dist-server/service/task/task-query.js +11 -0
  70. package/dist-server/service/task/task-query.js.map +1 -1
  71. package/dist-server/service/task/task.d.ts +2 -0
  72. package/dist-server/service/task/task.js +6 -0
  73. package/dist-server/service/task/task.js.map +1 -1
  74. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  75. package/dist-server/service/task-checklist-binding/index.js +9 -0
  76. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  77. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  78. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +186 -0
  79. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  80. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  81. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  82. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  83. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  84. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  85. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  86. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  87. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  88. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  89. package/dist-server/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +5 -3
  91. package/things-factory.config.js +3 -3
  92. package/translations/en.json +10 -9
  93. package/translations/ja.json +15 -1
  94. package/translations/ko.json +3 -0
  95. package/translations/ms.json +15 -1
  96. package/translations/zh.json +15 -1
  97. package/dist-client/pages/project/popup/checklist/attachment-list-popup.js.map +0 -1
  98. package/dist-client/pages/project/popup/checklist/comment-list-popup.js.map +0 -1
  99. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js.map +0 -1
  100. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js.map +0 -1
  101. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
  102. package/dist-client/pages/project/project-schedule-list.js.map +0 -1
  103. package/dist-client/pages/project/project-schedule.js +0 -422
  104. package/dist-client/pages/project/project-schedule.js.map +0 -1
  105. /package/dist-client/pages/project/popup/checklist/{attachment-list-popup.d.ts → task-checklist-attachment-list-popup.d.ts} +0 -0
  106. /package/dist-client/pages/project/popup/checklist/{comment-list-popup.d.ts → task-checklist-comment-list-popup.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-task.js","sourceRoot":"","sources":["../../../client/pages/project/project-task.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/textfield/outlined-text-field.js'\nimport '@material/web/button/filled-button.js'\nimport '@material/web/button/outlined-button.js'\n\nimport { PageView } from '@operato/shell'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { css, html } from 'lit'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport { Project } from './project-list'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { verifyBiometric } from '@things-factory/auth-base/dist-client'\nimport { BuildingInspectionStatus, ChecklistMode } from './popup/checklist/task-checklist-view'\n\nimport '@operato/gantt/ox-gantt.js'\nimport './popup/popup-task-upload'\nimport './popup/checklist/task-checklist-create-popup'\nimport './popup/checklist/task-checklist-view'\n\nconst TaskFragment = gql`\n fragment TaskFragment on Task {\n type\n title: name\n id: code\n duration\n startDate\n endDate\n dependsOn\n progress\n style\n taskChecklistBinding {\n id\n status\n }\n resources {\n type\n allocated\n }\n }\n`\n\n@customElement('project-task')\nexport class ProjectTask extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n color: #4e5055;\n\n width: 100%;\n background-color: var(--md-sys-color-background, #f6f6f6);\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n *[bold] {\n font-weight: bold;\n }\n\n div[header] {\n display: flex;\n margin: 0px var(--spacing-large, 12px);\n\n h2 {\n display: flex;\n gap: 7px;\n flex: 0.5;\n color: #3f71a0;\n font-size: 18px;\n\n md-icon[back] {\n background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);\n color: white;\n padding: 8px;\n border-radius: 50%;\n cursor: pointer;\n box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);\n width: 14px;\n height: 14px;\n --md-icon-size: 20px;\n }\n\n md-icon[back]:hover {\n background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);\n box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);\n }\n }\n\n div[button-container] {\n display: flex;\n align-items: center;\n justify-content: end;\n flex: 0.5;\n\n md-elevated-button {\n margin: 0px;\n margin-left: var(--spacing-small, 4px);\n\n --md-elevated-button-container-height: 32px;\n --md-elevated-button-label-text-size: 16px;\n --md-elevated-button-container-color: #0595e5;\n\n --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);\n }\n }\n }\n\n div[body] {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n margin: var(--spacing-large, 12px);\n margin-top: 0;\n gap: var(--spacing-medium, 8px);\n overflow: hidden;\n\n h3 {\n color: #2e79be;\n font-size: 16px;\n margin: 0px;\n }\n\n & > div {\n display: flex;\n border-radius: 5px;\n }\n\n ox-gantt {\n flex: 1;\n box-sizing: border-box;\n overflow: hidden;\n\n background-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n\n div[select-container] {\n gap: var(--spacing-medium, 8px);\n\n div[date] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: #2ea4df1a;\n border: 1px solid #2ea4df33;\n border-radius: 5px;\n gap: var(--spacing-medium, 8px);\n padding: 12px 36px 12px 15px;\n\n span[name] {\n font-size: 16px;\n font-weight: bold;\n }\n\n input[type='date'] {\n border: 1px solid rgba(51, 51, 51, 0.2);\n padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);\n border-radius: 5px;\n }\n }\n\n div[construction-list-container] {\n flex: 1;\n display: flex;\n border-radius: 5px;\n border: 1px solid #cccccc80;\n background-color: #fff;\n padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);\n gap: var(--spacing-medium, 8px);\n overflow-x: auto;\n\n md-outlined-button {\n --md-outlined-button-container-height: 30px;\n --md-outlined-button-trailing-space: var(--spacing-medium, 8px);\n --md-outlined-button-leading-space: var(--spacing-medium, 8px);\n --md-outlined-button-label-text-color: #586878;\n --md-sys-color-outline: rgba(51, 51, 51, 0.2);\n box-shadow: 1px 1px 1px #0000001a;\n padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);\n font-weight: 700;\n\n &[selected] {\n --md-outlined-button-label-text-color: #0595e5 !important;\n --md-sys-color-outline: #0595e5 !important;\n background-color: #0595e51a !important;\n }\n\n &[pass] {\n --md-outlined-button-label-text-color: #4bbb4a;\n --md-sys-color-outline: #4bbb4a;\n background-color: #4bbb4a1a;\n }\n &[fail] {\n --md-outlined-button-label-text-color: #ff4444;\n --md-sys-color-outline: #ff4444;\n background-color: #ff44441a;\n }\n }\n\n div[icon-container] {\n display: flex;\n align-items: center;\n gap: 4px;\n\n md-icon[request],\n md-icon[pass],\n md-icon[fail] {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n border-radius: 3px;\n font-size: 14px;\n font-weight: 700;\n color: #fff;\n }\n md-icon[request] {\n background-color: #4e5055;\n }\n md-icon[pass] {\n background-color: #4bbb4a;\n }\n md-icon[fail] {\n background-color: #ff4444;\n }\n }\n }\n }\n }\n `\n ]\n\n get context() {\n return {\n title: '공정표'\n }\n }\n\n private defaultProject = {\n name: '',\n buildingComplex: {\n address: '',\n area: 0,\n constructionCompany: '',\n clientCompany: '',\n supervisoryCompany: '',\n designCompany: '',\n constructionType: '',\n buildings: []\n }\n }\n @state() projectId: string = ''\n @state() project: Project = { ...this.defaultProject }\n @state() selectedBuildingIdx: number = 0\n @state() tasks\n @state() constructionTypeList = []\n @state() selectedChecklist: any = {}\n @state() selectedConstructionTypeId: string = ''\n\n @state() private fromDate = '2024-01-01'\n @state() private toDate = '2026-12-31'\n @state() private selectedFromDate = ''\n @state() private selectedToDate = ''\n\n @query('input[name=\"startDate\"]') inputStartDate!: HTMLInputElement\n @query('input[name=\"endDate\"]') inputEndDate!: HTMLInputElement\n\n private timeScale = 'week-day'\n private extendGridLines = false\n\n private columnConfigProvider = function () {\n return [\n { name: 'title', label: i18next.t('label.gantt-task-title') || 'title', visible: true, width: 150, order: 1 },\n {\n name: 'startDate',\n label: i18next.t('label.gantt-task-start-date') || 'start date',\n visible: true,\n width: 100,\n order: 2\n },\n {\n name: 'resources',\n label: i18next.t('label.gantt-task-resources') || 'resources',\n visible: true,\n width: 100,\n order: 3\n },\n {\n name: 'duration',\n label: i18next.t('label.gantt-task-duration') || 'duration',\n visible: true,\n width: 30,\n order: 4\n }\n ]\n }\n\n render() {\n return html`\n <div header>\n <h2>\n <md-icon slot=\"icon\" back @click=${() => history.back()}>arrow_back</md-icon>\n ${this.project.name}\n </h2>\n <div button-container>\n <md-elevated-button @click=${this._openUploadSchedulePopup}>\n <md-icon slot=\"icon\">event_note</md-icon>공정표 관리\n </md-elevated-button>\n </div>\n </div>\n\n <div body>\n <ox-gantt\n from-date=${new Date(this.fromDate).toISOString().split('T')[0]}\n to-date=${new Date(this.toDate).toISOString().split('T')[0]}\n .timeScale=${this.timeScale}\n .tasks=${this.tasks}\n @date-range-selected=${this.onRangeSelected}\n @task-clicked=${(e: CustomEvent) => {\n console.log('task-clicked', e.detail)\n }}\n ?extend-grid-lines=${this.extendGridLines}\n .columnConfigProvider=${this.columnConfigProvider}\n .colorProvider=${task => {\n return task.style || 'gray'\n }}\n >\n </ox-gantt>\n <div select-container>\n <div date>\n <span name>기간선택</span>\n <div @change=${() => this.onChangePeriodRange()}>\n <input type=\"date\" name=\"startDate\" project .value=${this.project.startDate || ''} max=\"9999-12-31\" />\n ~\n <input type=\"date\" name=\"endDate\" project .value=${this.project.endDate || ''} max=\"9999-12-31\" />\n </div>\n </div>\n <div construction-list-container>\n ${this.constructionTypeList?.map(\n (constructionType: any) =>\n html` <md-outlined-button\n id=${constructionType.id}\n ?selected=${this.selectedConstructionTypeId === constructionType.id}\n ?pass=${constructionType.taskChecklistBinding?.status === BuildingInspectionStatus.PASS}\n ?fail=${constructionType.taskChecklistBinding?.status === BuildingInspectionStatus.FAIL}\n @click=${() => this.onClickTaskChecklist(constructionType)}\n >\n <div icon-container>\n ${this._getIconHtmlByStatus(constructionType.taskChecklistBinding?.status)} ${constructionType.title}\n </div>\n </md-outlined-button>`\n )}\n </div>\n </div>\n </div>\n `\n }\n\n async pageInitialized(lifecycle: PageLifecycle) {}\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.projectId = lifecycle.resourceId || ''\n await this.initProject(this.projectId)\n }\n }\n\n async initProject(projectId: string = '') {\n const response = await client.query({\n query: gql`\n query Project($id: String!, $sortings: [Sorting!]) {\n project(id: $id) {\n id\n name\n startDate\n endDate\n rootTasks {\n ...TaskFragment\n children(sortings: $sortings) {\n ...TaskFragment\n children(sortings: $sortings) {\n ...TaskFragment\n }\n }\n }\n scheduleTable {\n id\n name\n }\n buildingComplex {\n id\n planXScale\n planYScale\n taskConstructorEmails\n overallConstructorEmails\n taskSupervisoryEmails\n overallSupervisoryEmails\n buildings {\n id\n name\n drawing {\n id\n name\n }\n buildingLevels {\n id\n floor\n mainDrawing {\n id\n name\n }\n }\n }\n }\n }\n }\n\n ${TaskFragment}\n `,\n variables: {\n id: projectId,\n sortings: [{ name: 'startDate' }]\n }\n })\n\n this.project = response.data?.project\n this.tasks = response.data?.project.rootTasks\n\n if (this.project) {\n this.fromDate = this.project.startDate || '2024-01-01' /* TODO default: start date of this year - 3 */\n this.toDate = this.project.endDate || '2026-12-31' /* TODO defaule: end date of this year + 3 */\n }\n }\n\n onChangePeriodRange() {\n this.fromDate = this.inputStartDate.value\n this.toDate = this.inputEndDate.value\n }\n\n onRangeSelected(event: CustomEvent | null) {\n if (event) {\n this.selectedFromDate = event.detail?.start\n this.selectedToDate = event.detail?.end\n }\n\n const selectedFromDate = new Date(this.selectedFromDate + 'T00:00:00.000Z')\n const selectedToDate = new Date(this.selectedToDate + 'T23:59:59.000Z')\n\n this.constructionTypeList = this.tasks.filter(constuction => {\n const constuctionStartDate = new Date(constuction.startDate)\n const constuctionEndDate = new Date(constuction.endDate)\n\n return constuctionStartDate <= selectedToDate && constuctionEndDate >= selectedFromDate\n })\n }\n\n private _openUploadSchedulePopup() {\n openPopup(\n html`<popup-task-upload\n .projectId=${this.projectId}\n .scheduleTable=${this.project?.scheduleTable}\n @uploaded=${() => this.initProject(this.projectId)}\n ></popup-task-upload>`,\n { backdrop: true, size: 'medium', title: '공정표 업로드' }\n )\n }\n\n private async onClickTaskChecklist(constructionType: any) {\n // 선택된 공종 설정\n this.selectedConstructionTypeId = constructionType.id\n\n // 체크리스트가 있으면 수정 모드, 없으면 생성 모드\n if (constructionType.taskChecklistBinding) {\n const taskChecklistBinding = await this._getTaskChecklistBindingById(constructionType.taskChecklistBinding.id)\n this.selectedChecklist = { ...taskChecklistBinding.checklist, status: taskChecklistBinding.status }\n\n this._openUpdateTaskChecklistPopup(constructionType)\n } else {\n this._openCreateChecklistPopup(constructionType)\n }\n }\n\n private _openCreateChecklistPopup(constructionType: any) {\n openPopup(\n html`<task-checklist-create-popup\n .projectId=${this.projectId}\n .taskCode=${constructionType.id}\n @requestRefresh=\"${async () => {\n await this.initProject(this.projectId)\n this.onRangeSelected(null)\n }}\"\n ></task-checklist-create-popup>`,\n {\n backdrop: true,\n size: 'large',\n title: `체크리스트 생성`\n }\n )\n }\n\n _openUpdateTaskChecklistPopup(constructionType: any) {\n openPopup(\n html`\n <div style=\"overflow-y: auto; height: 100%;\">\n <task-checklist-view\n .mode=${ChecklistMode.EDITOR}\n .status=${this.selectedChecklist.status}\n .checklist=${this.selectedChecklist || {}}\n .buildingComplex=${this.project?.buildingComplex || {}}\n ></task-checklist-view>\n\n <div style=\"text-align: right; margin-right: 20px; margin-bottom: 15px\">\n <md-elevated-button\n ?disabled=${this.selectedChecklist.status == BuildingInspectionStatus.PASS}\n @click=${this._onClickModifyChecklist.bind(this)}\n >\n <md-icon slot=\"icon\">assignment</md-icon>등록\n </md-elevated-button>\n </div>\n </div>\n `,\n { backdrop: true, size: 'large', title: constructionType.title }\n )\n }\n\n private _onClickModifyChecklist() {\n this.validateChecklist(this.selectedChecklist)\n }\n\n private async validateChecklist(checklist: any) {\n try {\n const result = await verifyBiometric()\n if (result.verified) {\n console.log('Verification successful. Proceeding with sensitive action.')\n } else {\n notify({ message: 'Verification failed:' + result.message })\n return\n }\n } catch (error) {\n notify({ message: 'Error during biometric verification:' + error })\n return\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateTaskChecklist($taskChecklist: UpdateTaskChecklistSubmitType!) {\n updateTaskChecklist(taskChecklist: $taskChecklist)\n }\n `,\n variables: {\n taskChecklist: {\n checklistId: checklist.id,\n checklist: {\n id: checklist.id,\n overallConstructorSignature: checklist.overallConstructorSignature,\n taskConstructorSignature: checklist.taskConstructorSignature,\n overallSupervisorySignature: checklist.overallSupervisorySignature,\n taskSupervisorySignature: checklist.taskSupervisorySignature\n },\n checklistItem: checklist.checklistItems.map(item => ({\n id: item.id,\n constructionConfirmStatus: item.constructionConfirmStatus,\n supervisoryConfirmStatus: item.supervisoryConfirmStatus\n }))\n }\n }\n })\n\n if (!response.errors) {\n notify({ message: '검측 요청서를 등록하였습니다.' })\n await this.initProject(this.projectId)\n this.onRangeSelected(null)\n history.back()\n } else {\n notify({ message: response.errors?.[0]?.message || '검측 요청서 등록에 실패하였습니다.', level: 'error' })\n }\n }\n\n private _getIconHtmlByStatus(status: string) {\n if (!status) return ''\n\n if (status == BuildingInspectionStatus.WAIT || status == BuildingInspectionStatus.OVERALL_WAIT) {\n return html`<md-icon request>frame_inspect</md-icon>`\n }\n\n if (status == BuildingInspectionStatus.REQUEST || status == BuildingInspectionStatus.OVERALL_REQUEST) {\n return html`<md-icon request>exclamation</md-icon>`\n }\n\n if (status == BuildingInspectionStatus.PASS) {\n return html`<md-icon pass>check</md-icon>`\n }\n\n return html`<md-icon fail>close</md-icon>`\n }\n\n private async _getTaskChecklistBindingById(id: string) {\n const response = await client.query({\n query: gql`\n query TaskChecklistBinding($id: String!) {\n taskChecklistBinding(id: $id) {\n id\n status\n\n checklist {\n id\n name\n constructionType\n constructionDetailType\n location\n inspectionParts\n documentNo\n constructionInspectionDate\n supervisorInspectionDate\n overallConstructorSignature\n taskConstructorSignature\n overallSupervisorySignature\n taskSupervisorySignature\n\n checklistItems {\n id\n name\n sequence\n mainType\n detailType\n inspctionCriteria\n constructionConfirmStatus\n supervisoryConfirmStatus\n checklistItemCommentCount\n checklistItemAttachmentCount\n }\n }\n\n manager {\n userId\n name\n }\n }\n }\n `,\n variables: { id }\n })\n\n if (response.errors) return\n\n return response.data?.taskChecklistBinding || {}\n }\n}\n"]}
@@ -9,6 +9,7 @@ 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';
14
15
  let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
@@ -16,6 +17,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
16
17
  super(...arguments);
17
18
  this.defaultProject = {
18
19
  name: '',
20
+ documentNaming: '',
19
21
  buildingComplex: {
20
22
  address: '',
21
23
  area: 0,
@@ -41,7 +43,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
41
43
  };
42
44
  }
43
45
  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, _31;
46
+ 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
47
  return html `
46
48
  <project-update-header .projectId=${this.project.id || ''} title="프로젝트 정보 관리" @custom-click=${this._saveProject}>
47
49
  </project-update-header>
@@ -61,6 +63,25 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
61
63
  ></md-outlined-text-field>
62
64
  </span>
63
65
  </div>
66
+ <div row>
67
+ <span>프로젝트 문서 네이밍</span>
68
+ <span>
69
+ <md-outlined-text-field
70
+ type="text"
71
+ name="documentNaming"
72
+ project
73
+ .value=${this.project.documentNaming || ''}
74
+ @input=${this._onInputChange}
75
+ placeholder="프로젝트 문서 네이밍"
76
+ ></md-outlined-text-field>
77
+ </span>
78
+ </div>
79
+ <div row>
80
+ <span></span>
81
+ <span>
82
+ <div document-preview>📄 문서 생성 예시: <br />${this.project.documentNaming} 검측 제01-00001호</div>
83
+ </span>
84
+ </div>
64
85
  <div row>
65
86
  <span>프로젝트 주소</span>
66
87
  <span>
@@ -100,7 +121,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
100
121
  </span>
101
122
  </div>
102
123
  <div row>
103
- <span>면적</span>
124
+ <span>연 면적</span>
104
125
  <span align-end
105
126
  ><md-outlined-text-field
106
127
  type="text"
@@ -109,10 +130,56 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
109
130
  building-complex
110
131
  .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
132
  @input=${this._onInputChange}
133
+ suffix-text="㎡"
134
+ ></md-outlined-text-field>
135
+ </span>
136
+ </div>
137
+
138
+ <div row>
139
+ <span>건폐율</span>
140
+ <span align-end>
141
+ <md-outlined-text-field
142
+ type="text"
143
+ name="coverageRatio"
144
+ numeric
145
+ building-complex
146
+ .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()) || ''}
147
+ @input=${this._onInputChange}
148
+ suffix-text="%"
112
149
  ></md-outlined-text-field>
113
- ㎡</span
114
- >
150
+ </span>
115
151
  </div>
152
+ <div row>
153
+ <span>용적률</span>
154
+ <span align-end>
155
+ <md-outlined-text-field
156
+ type="text"
157
+ name="floorAreaRatio"
158
+ numeric
159
+ building-complex
160
+ .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()) || ''}
161
+ @input=${this._onInputChange}
162
+ suffix-text="%"
163
+ ></md-outlined-text-field>
164
+ </span>
165
+ </div>
166
+
167
+ <div row>
168
+ <span>현장유형</span>
169
+ <span
170
+ ><md-filled-select name="siteType" building-complex @change=${this._onInputChange}>
171
+ ${Object.entries(SITE_TYPE_DISPLAY).map(([key, display]) => {
172
+ var _a, _b;
173
+ return html `
174
+ <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}>
175
+ <div slot="headline">${display}</div>
176
+ </md-select-option>
177
+ `;
178
+ })}
179
+ </md-filled-select>
180
+ </span>
181
+ </div>
182
+
116
183
  <div row>
117
184
  <span>착공일정 ~ 준공일정</span>
118
185
  <span
@@ -142,7 +209,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
142
209
  type="text"
143
210
  name="clientCompany"
144
211
  building-complex
145
- .value=${((_o = (_m = this.project) === null || _m === void 0 ? void 0 : _m.buildingComplex) === null || _o === void 0 ? void 0 : _o.clientCompany) || ''}
212
+ .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.clientCompany) || ''}
146
213
  @input=${this._onInputChange}
147
214
  ></md-outlined-text-field>
148
215
  </span>
@@ -154,7 +221,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
154
221
  type="text"
155
222
  name="constructionCompany"
156
223
  building-complex
157
- .value=${((_q = (_p = this.project) === null || _p === void 0 ? void 0 : _p.buildingComplex) === null || _q === void 0 ? void 0 : _q.constructionCompany) || ''}
224
+ .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionCompany) || ''}
158
225
  @input=${this._onInputChange}
159
226
  ></md-outlined-text-field>
160
227
  </span>
@@ -166,7 +233,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
166
233
  type="text"
167
234
  name="designCompany"
168
235
  building-complex
169
- .value=${((_s = (_r = this.project) === null || _r === void 0 ? void 0 : _r.buildingComplex) === null || _s === void 0 ? void 0 : _s.designCompany) || ''}
236
+ .value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.buildingComplex) === null || _y === void 0 ? void 0 : _y.designCompany) || ''}
170
237
  @input=${this._onInputChange}
171
238
  ></md-outlined-text-field>
172
239
  </span>
@@ -178,7 +245,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
178
245
  type="text"
179
246
  name="supervisoryCompany"
180
247
  building-complex
181
- .value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.supervisoryCompany) || ''}
248
+ .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.supervisoryCompany) || ''}
182
249
  @input=${this._onInputChange}
183
250
  ></md-outlined-text-field>
184
251
  </span>
@@ -190,17 +257,30 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
190
257
  type="text"
191
258
  name="constructionType"
192
259
  building-complex
193
- .value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionType) || ''}
260
+ .value=${((_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionType) || ''}
194
261
  @input=${this._onInputChange}
195
262
  ></md-outlined-text-field>
196
263
  </span>
197
264
  </div>
265
+ <div row>
266
+ <span>구조 유형</span>
267
+ <span
268
+ ><md-outlined-text-field
269
+ type="text"
270
+ name="structureType"
271
+ building-complex
272
+ .value=${((_4 = (_3 = this.project) === null || _3 === void 0 ? void 0 : _3.buildingComplex) === null || _4 === void 0 ? void 0 : _4.structureType) || ''}
273
+ @input=${this._onInputChange}
274
+ ></md-outlined-text-field>
275
+ </span>
276
+ </div>
277
+
198
278
  <div row>
199
279
  <span>대표사진 업로드</span>
200
280
  <span>
201
281
  <ox-input-image
202
282
  name="mainPhoto"
203
- value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.mainPhoto) === null || _y === void 0 ? void 0 : _y.fullpath) || ''}
283
+ value=${((_6 = (_5 = this.project) === null || _5 === void 0 ? void 0 : _5.mainPhoto) === null || _6 === void 0 ? void 0 : _6.fullpath) || ''}
204
284
  @change=${this.onCreateAttachment.bind(this)}
205
285
  ></ox-input-image>
206
286
  </span>
@@ -212,7 +292,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
212
292
  name="drawing"
213
293
  label=" "
214
294
  description="IFC 업로드"
215
- .value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.drawing) || ''}
295
+ .value=${((_8 = (_7 = this.project) === null || _7 === void 0 ? void 0 : _7.buildingComplex) === null || _8 === void 0 ? void 0 : _8.drawing) || ''}
216
296
  @change=${this.onCreateAttachment.bind(this)}
217
297
  ></ox-input-file>
218
298
  </span>
@@ -225,8 +305,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
225
305
  name="constructionCost"
226
306
  numeric
227
307
  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()) || ''}
308
+ .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()) || ''}
229
309
  @input=${this._onInputChange}
310
+ suffix-text="원"
311
+ ></md-outlined-text-field>
312
+ </span>
313
+ </div>
314
+ <div row>
315
+ <span>투입 인력</span>
316
+ <span
317
+ ><md-outlined-text-field
318
+ type="text"
319
+ name="workerCount"
320
+ numeric
321
+ building-complex
322
+ .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()) || ''}
323
+ @input=${this._onInputChange}
324
+ suffix-text="명"
230
325
  ></md-outlined-text-field>
231
326
  </span>
232
327
  </div>
@@ -237,7 +332,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
237
332
  type="textarea"
238
333
  name="etc"
239
334
  building-complex
240
- .value=${((_5 = (_4 = this.project) === null || _4 === void 0 ? void 0 : _4.buildingComplex) === null || _5 === void 0 ? void 0 : _5.etc) || ''}
335
+ .value=${((_16 = (_15 = this.project) === null || _15 === void 0 ? void 0 : _15.buildingComplex) === null || _16 === void 0 ? void 0 : _16.etc) || ''}
241
336
  @input=${this._onInputChange}
242
337
  ></md-outlined-text-field>
243
338
  </span>
@@ -249,7 +344,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
249
344
  placeholder="총괄 시공 관리자 리스트"
250
345
  name="overallConstructorEmails"
251
346
  .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) || []}
347
+ .selectedValues=${((_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.overallConstructorEmails) || []}
253
348
  @selection-changed=${this._handleSelectionChange}
254
349
  ></select2-component>
255
350
  </span>
@@ -261,7 +356,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
261
356
  placeholder="공종별 시공 관리자 리스트"
262
357
  name="taskConstructorEmails"
263
358
  .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) || []}
359
+ .selectedValues=${((_20 = (_19 = this.project) === null || _19 === void 0 ? void 0 : _19.buildingComplex) === null || _20 === void 0 ? void 0 : _20.taskConstructorEmails) || []}
265
360
  @selection-changed=${this._handleSelectionChange}
266
361
  ></select2-component>
267
362
  </span>
@@ -273,7 +368,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
273
368
  placeholder="총괄 감리 책임자 리스트"
274
369
  name="overallSupervisoryEmails"
275
370
  .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) || []}
371
+ .selectedValues=${((_22 = (_21 = this.project) === null || _21 === void 0 ? void 0 : _21.buildingComplex) === null || _22 === void 0 ? void 0 : _22.overallSupervisoryEmails) || []}
277
372
  @selection-changed=${this._handleSelectionChange}
278
373
  ></select2-component>
279
374
  </span>
@@ -285,7 +380,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
285
380
  placeholder="공종별 감리 책임자 리스트"
286
381
  name="taskSupervisoryEmails"
287
382
  .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) || []}
383
+ .selectedValues=${((_24 = (_23 = this.project) === null || _23 === void 0 ? void 0 : _23.buildingComplex) === null || _24 === void 0 ? void 0 : _24.taskSupervisoryEmails) || []}
289
384
  @selection-changed=${this._handleSelectionChange}
290
385
  ></select2-component
291
386
  ></span>
@@ -303,7 +398,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
303
398
  numeric
304
399
  building-complex
305
400
  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()) || ''}
401
+ .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
402
  @input=${this._onInputChange}
308
403
  ></md-outlined-text-field>
309
404
  </span>
@@ -316,7 +411,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
316
411
  numeric
317
412
  building-complex
318
413
  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()) || ''}
414
+ 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
415
  @input=${this._onInputChange}
321
416
  ></md-outlined-text-field>
322
417
  <md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>
@@ -325,7 +420,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
325
420
  <hr />
326
421
  <div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>
327
422
  <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) => {
423
+ ${(_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) => {
329
424
  var _a, _b;
330
425
  return html `
331
426
  <div>
@@ -393,7 +488,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
393
488
  numeric
394
489
  project
395
490
  name="totalProgress"
396
- .value=${((_23 = this.project.totalProgress) === null || _23 === void 0 ? void 0 : _23.toString()) || ''}
491
+ .value=${((_34 = this.project.totalProgress) === null || _34 === void 0 ? void 0 : _34.toString()) || ''}
397
492
  @input=${this._onInputChange}
398
493
  suffix-text="%"
399
494
  ></md-outlined-text-field>
@@ -407,7 +502,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
407
502
  numeric
408
503
  project
409
504
  name="inspPassRate"
410
- .value=${((_24 = this.project.inspPassRate) === null || _24 === void 0 ? void 0 : _24.toString()) || ''}
505
+ .value=${((_35 = this.project.inspPassRate) === null || _35 === void 0 ? void 0 : _35.toString()) || ''}
411
506
  @input=${this._onInputChange}
412
507
  suffix-text="%"
413
508
  ></md-outlined-text-field>
@@ -423,7 +518,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
423
518
  numeric
424
519
  project
425
520
  name="weeklyProgress"
426
- .value=${((_25 = this.project.weeklyProgress) === null || _25 === void 0 ? void 0 : _25.toString()) || ''}
521
+ .value=${((_36 = this.project.weeklyProgress) === null || _36 === void 0 ? void 0 : _36.toString()) || ''}
427
522
  @input=${this._onInputChange}
428
523
  suffix-text="%"
429
524
  ></md-outlined-text-field>
@@ -437,7 +532,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
437
532
  numeric
438
533
  project
439
534
  name="robotProgressRate"
440
- .value=${((_26 = this.project.robotProgressRate) === null || _26 === void 0 ? void 0 : _26.toString()) || ''}
535
+ .value=${((_37 = this.project.robotProgressRate) === null || _37 === void 0 ? void 0 : _37.toString()) || ''}
441
536
  @input=${this._onInputChange}
442
537
  suffix-text="%"
443
538
  ></md-outlined-text-field>
@@ -453,7 +548,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
453
548
  numeric
454
549
  project
455
550
  name="kpi"
456
- .value=${((_27 = this.project.kpi) === null || _27 === void 0 ? void 0 : _27.toString()) || ''}
551
+ .value=${((_38 = this.project.kpi) === null || _38 === void 0 ? void 0 : _38.toString()) || ''}
457
552
  @input=${this._onInputChange}
458
553
  suffix-text="%"
459
554
  ></md-outlined-text-field>
@@ -467,7 +562,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
467
562
  numeric
468
563
  project
469
564
  name="structuralSafetyRate"
470
- .value=${((_28 = this.project.structuralSafetyRate) === null || _28 === void 0 ? void 0 : _28.toString()) || ''}
565
+ .value=${((_39 = this.project.structuralSafetyRate) === null || _39 === void 0 ? void 0 : _39.toString()) || ''}
471
566
  @input=${this._onInputChange}
472
567
  suffix-text="%"
473
568
  ></md-outlined-text-field>
@@ -484,8 +579,57 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
484
579
  numeric
485
580
  project
486
581
  name="robotCount"
487
- .value=${((_29 = this.project.robotCount) === null || _29 === void 0 ? void 0 : _29.toString()) || ''}
582
+ .value=${((_40 = this.project.robotCount) === null || _40 === void 0 ? void 0 : _40.toString()) || ''}
583
+ @input=${this._onInputChange}
584
+ ></md-outlined-text-field>
585
+ </span>
586
+ </div>
587
+ </div>
588
+
589
+ <hr />
590
+
591
+ <div row separate-container>
592
+ <div>
593
+ <span>설계 변경 횟수</span>
594
+ <span
595
+ ><md-outlined-text-field
596
+ type="text"
597
+ numeric
598
+ building-complex
599
+ name="designChangeCount"
600
+ .value=${((_42 = (_41 = this.project.buildingComplex) === null || _41 === void 0 ? void 0 : _41.designChangeCount) === null || _42 === void 0 ? void 0 : _42.toString()) || ''}
601
+ @input=${this._onInputChange}
602
+ ></md-outlined-text-field>
603
+ </span>
604
+ </div>
605
+ <div>
606
+ <span>계획 공정률</span>
607
+ <span
608
+ ><md-outlined-text-field
609
+ type="text"
610
+ numeric
611
+ building-complex
612
+ name="plannedProgress"
613
+ .value=${((_44 = (_43 = this.project.buildingComplex) === null || _43 === void 0 ? void 0 : _43.plannedProgress) === null || _44 === void 0 ? void 0 : _44.toString()) || ''}
614
+ @input=${this._onInputChange}
615
+ suffix-text="%"
616
+ ></md-outlined-text-field>
617
+ </span>
618
+ </div>
619
+ </div>
620
+
621
+ <div row separate-container>
622
+ <div>
623
+ <span>실제 공정률</span>
624
+ <span
625
+ ><md-outlined-text-field
626
+ type="text"
627
+ numeric
628
+ building-complex
629
+ name="actualProgress"
630
+ .value=${((_46 = (_45 = this.project.buildingComplex) === null || _45 === void 0 ? void 0 : _45.actualProgress) === null || _46 === void 0 ? void 0 : _46.toString()) || ''}
488
631
  @input=${this._onInputChange}
632
+ suffix-text="%"
489
633
  ></md-outlined-text-field>
490
634
  </span>
491
635
  </div>
@@ -501,7 +645,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
501
645
  type="textarea"
502
646
  name="notice"
503
647
  building-complex
504
- .value=${((_31 = (_30 = this.project) === null || _30 === void 0 ? void 0 : _30.buildingComplex) === null || _31 === void 0 ? void 0 : _31.notice) || ''}
648
+ .value=${((_48 = (_47 = this.project) === null || _47 === void 0 ? void 0 : _47.buildingComplex) === null || _48 === void 0 ? void 0 : _48.notice) || ''}
649
+ @input=${this._onInputChange}
650
+ ></md-outlined-text-field>
651
+ </span>
652
+ </div>
653
+ </div>
654
+
655
+ <div>
656
+ <h3>Virtual Tour Link</h3>
657
+ <div>
658
+ <span></span>
659
+ <span>
660
+ <md-outlined-text-field
661
+ type="text"
662
+ name="virtualTourLink"
663
+ building-complex
664
+ .value=${((_50 = (_49 = this.project) === null || _49 === void 0 ? void 0 : _49.buildingComplex) === null || _50 === void 0 ? void 0 : _50.virtualTourLink) || ''}
505
665
  @input=${this._onInputChange}
506
666
  ></md-outlined-text-field>
507
667
  </span>
@@ -526,6 +686,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
526
686
  project(id: $id) {
527
687
  id
528
688
  name
689
+ documentNaming
529
690
  startDate
530
691
  endDate
531
692
  mainPhoto {
@@ -541,9 +702,17 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
541
702
  buildingComplex {
542
703
  id
543
704
  address
705
+ siteType
544
706
  latitude
545
707
  longitude
546
708
  area
709
+ coverageRatio
710
+ floorAreaRatio
711
+ structureType
712
+ workerCount
713
+ designChangeCount
714
+ plannedProgress
715
+ actualProgress
547
716
  clientCompany
548
717
  constructionCompany
549
718
  supervisoryCompany
@@ -562,6 +731,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
562
731
  taskConstructorEmails
563
732
  overallSupervisoryEmails
564
733
  taskSupervisoryEmails
734
+ virtualTourLink
565
735
  buildings {
566
736
  id
567
737
  name
@@ -670,6 +840,10 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
670
840
  }
671
841
  if (target.hasAttribute('project')) {
672
842
  this.project[target.name] = inputVal;
843
+ // documentNaming 필드가 변경되면 실시간으로 미리보기 업데이트
844
+ if (target.name === 'documentNaming') {
845
+ this.requestUpdate();
846
+ }
673
847
  }
674
848
  else if (target.hasAttribute('building-complex')) {
675
849
  this.project.buildingComplex[target.name] = inputVal;
@@ -737,6 +911,13 @@ ProjectUpdate.styles = [
737
911
  select2-component {
738
912
  width: 100%;
739
913
  }
914
+ md-filled-select {
915
+ width: 100%;
916
+ --md-filled-select-text-field-container-color: transparent;
917
+ --md-filled-select-text-field-active-indicator-color: #999;
918
+ --md-filled-select-text-field-input-text-size: 14px;
919
+ --md-filled-select-text-field-input-text-line-height: 6px;
920
+ }
740
921
  input[type='date'] {
741
922
  border: 1px solid rgba(51, 51, 51, 0.2);
742
923
  padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
@@ -808,6 +989,18 @@ ProjectUpdate.styles = [
808
989
  flex: 0.55;
809
990
  }
810
991
 
992
+ div[document-preview] {
993
+ width: 100%;
994
+ font-size: 12px;
995
+ color: #2e79be;
996
+ font-weight: 500;
997
+ background-color: #f8f9fa;
998
+ padding: 8px 12px;
999
+ border-radius: 4px;
1000
+ border-left: 3px solid #2e79be;
1001
+ margin-top: 4px;
1002
+ }
1003
+
811
1004
  div[detail-info] {
812
1005
  flex: 0.45;
813
1006
  padding: 0px;