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

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 (97) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +3 -3
  3. package/client/bootstrap.ts +0 -0
  4. package/client/index.ts +0 -0
  5. package/client/pages/lib/select2-component.ts +0 -175
  6. package/client/pages/lib/waether.ts +0 -159
  7. package/client/pages/project/component/project-update-header.ts +0 -88
  8. package/client/pages/project/popup/popup-plan-upload.ts +0 -138
  9. package/client/pages/project/popup/popup-project-create.ts +0 -147
  10. package/client/pages/project/popup/popup-schedule-upload.ts +0 -102
  11. package/client/pages/project/project-completed-list.ts +0 -281
  12. package/client/pages/project/project-detail.ts +0 -738
  13. package/client/pages/project/project-list.ts +0 -418
  14. package/client/pages/project/project-plan-management.ts +0 -476
  15. package/client/pages/project/project-schedule-list.ts +0 -294
  16. package/client/pages/project/project-schedule.ts +0 -393
  17. package/client/pages/project/project-setting-list.ts +0 -393
  18. package/client/pages/project/project-update.ts +0 -876
  19. package/client/pages/resource/construction-detail-type-popup.ts +0 -201
  20. package/client/pages/resource/construction-type-management.ts +0 -212
  21. package/client/pages/resource/inspection-drawing-type-management.ts +0 -245
  22. package/client/pages/resource/inspection-part-popup.ts +0 -201
  23. package/client/pages/resource/resource-importer.ts +0 -97
  24. package/client/pages/resource/resource-list-page.ts +0 -356
  25. package/client/pages/resource/worker-type-management.ts +0 -192
  26. package/client/pages/task/task-importer.ts +0 -94
  27. package/client/pages/task/task-list-page.ts +0 -340
  28. package/client/pages/task-resource/task-resource-importer.ts +0 -97
  29. package/client/pages/task-resource/task-resource-list-page.ts +0 -356
  30. package/client/route.ts +0 -55
  31. package/client/tsconfig.json +0 -11
  32. package/server/controllers/export-tasks.ts +0 -40
  33. package/server/controllers/import-task.ts +0 -134
  34. package/server/controllers/index.ts +0 -0
  35. package/server/controllers/parse-excel.ts +0 -86
  36. package/server/controllers/types.ts +0 -20
  37. package/server/index.ts +0 -4
  38. package/server/middlewares/index.ts +0 -3
  39. package/server/migrations/1723861466413-seed-roles.ts +0 -128
  40. package/server/migrations/1723861466414-seed-codes.ts +0 -157
  41. package/server/migrations/1723861476419-seed-resources.ts +0 -62
  42. package/server/migrations/1723861478420-seed-/bsample-project.ts +0 -87
  43. package/server/migrations/1723861478421-seed-/bsample-tasks.ts +0 -194
  44. package/server/migrations/index.ts +0 -9
  45. package/server/routes.ts +0 -108
  46. package/server/service/construction-detail-type/construction-detail-type-mutation.ts +0 -57
  47. package/server/service/construction-detail-type/construction-detail-type-query.ts +0 -31
  48. package/server/service/construction-detail-type/construction-detail-type-type.ts +0 -26
  49. package/server/service/construction-detail-type/construction-detail-type.ts +0 -52
  50. package/server/service/construction-detail-type/index.ts +0 -6
  51. package/server/service/construction-type/construction-type-mutation.ts +0 -66
  52. package/server/service/construction-type/construction-type-query.ts +0 -56
  53. package/server/service/construction-type/construction-type-type.ts +0 -26
  54. package/server/service/construction-type/construction-type.ts +0 -74
  55. package/server/service/construction-type/index.ts +0 -6
  56. package/server/service/index.ts +0 -56
  57. package/server/service/inspection-drawing-type/index.ts +0 -6
  58. package/server/service/inspection-drawing-type/inspection-drawing-type-mutation.ts +0 -69
  59. package/server/service/inspection-drawing-type/inspection-drawing-type-query.ts +0 -55
  60. package/server/service/inspection-drawing-type/inspection-drawing-type-type.ts +0 -23
  61. package/server/service/inspection-drawing-type/inspection-drawing-type.ts +0 -68
  62. package/server/service/inspection-part/index.ts +0 -6
  63. package/server/service/inspection-part/inspection-part-mutation.ts +0 -52
  64. package/server/service/inspection-part/inspection-part-query.ts +0 -41
  65. package/server/service/inspection-part/inspection-part-type.ts +0 -26
  66. package/server/service/inspection-part/inspection-part.ts +0 -51
  67. package/server/service/manager/index.ts +0 -6
  68. package/server/service/manager/manager-mutation.ts +0 -42
  69. package/server/service/manager/manager-query.ts +0 -28
  70. package/server/service/manager/manager-type.ts +0 -40
  71. package/server/service/manager/manager.ts +0 -29
  72. package/server/service/project/index.ts +0 -6
  73. package/server/service/project/project-mutation.ts +0 -255
  74. package/server/service/project/project-query.ts +0 -105
  75. package/server/service/project/project-type.ts +0 -72
  76. package/server/service/project/project.ts +0 -134
  77. package/server/service/resource/index.ts +0 -7
  78. package/server/service/resource/resource-mutation.ts +0 -137
  79. package/server/service/resource/resource-query.ts +0 -50
  80. package/server/service/resource/resource-type.ts +0 -41
  81. package/server/service/resource/resource.ts +0 -82
  82. package/server/service/task/index.ts +0 -6
  83. package/server/service/task/task-mutation.ts +0 -135
  84. package/server/service/task/task-query.ts +0 -169
  85. package/server/service/task/task-type.ts +0 -75
  86. package/server/service/task/task.ts +0 -130
  87. package/server/service/task-resource/index.ts +0 -7
  88. package/server/service/task-resource/task-resource-mutation.ts +0 -140
  89. package/server/service/task-resource/task-resource-query.ts +0 -36
  90. package/server/service/task-resource/task-resource-type.ts +0 -41
  91. package/server/service/task-resource/task-resource.ts +0 -51
  92. package/server/service/worker-type/index.ts +0 -6
  93. package/server/service/worker-type/worker-type-mutation.ts +0 -66
  94. package/server/service/worker-type/worker-type-query.ts +0 -47
  95. package/server/service/worker-type/worker-type-type.ts +0 -26
  96. package/server/service/worker-type/worker-type.ts +0 -68
  97. package/server/tsconfig.json +0 -10
@@ -1,393 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@material/web/button/elevated-button.js'
3
- import '@material/web/button/outlined-button.js'
4
- import '@material/web/progress/linear-progress.js'
5
- import '@material/web/textfield/filled-text-field.js'
6
-
7
- import { PageView } from '@operato/shell'
8
- import { css, html } from 'lit'
9
- import { customElement, state } from 'lit/decorators.js'
10
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
11
- import { client } from '@operato/graphql'
12
- import { openPopup } from '@operato/layout'
13
-
14
- import gql from 'graphql-tag'
15
- import './popup/popup-project-create'
16
- import { Project } from './project-list'
17
-
18
- @customElement('project-setting-list')
19
- export class ProjectSettingList extends ScopedElementsMixin(PageView) {
20
- static styles = [
21
- css`
22
- :host {
23
- display: flex;
24
- flex-direction: column;
25
- overflow-y: auto;
26
-
27
- width: 100%;
28
- height: 100%;
29
- background-color: var(--md-sys-color-background, #f6f6f6);
30
-
31
- --grid-record-emphasized-background-color: red;
32
- --grid-record-emphasized-color: yellow;
33
- }
34
-
35
- div[management-header-container] {
36
- display: flex;
37
- margin: var(--spacing-large, 12px);
38
- margin-bottom:0;
39
- gap: var(--spacing-medium, 8px);
40
- overflow-x: auto;
41
-
42
- a {
43
- flex:1;
44
- text-align: center;
45
- padding: var(--spacing-medium, 8px);
46
- background-color: var(--md-sys-color-on-primary);
47
- color: var(--md-sys-color-tertiary);
48
- font-weight: 700;
49
- border-radius: var(--md-sys-shape-corner-small, 5px);
50
- display: flex;
51
- flex-direction: column;
52
- justify-content: center;
53
- align-items: center;
54
- gap: var(--spacing-small, 4px);
55
- border: solid 1px #0000004d;
56
- text-decoration: none;
57
- cursor: pointer;
58
-
59
- md-icon {
60
- font-size: 35px;
61
- width: auto;
62
- height: auto;
63
- }
64
- div[label] {
65
- font-size: 14px;
66
- line-height:1.3;
67
- }
68
- }
69
-
70
- a[green] {
71
- background-color: #24be7b;
72
- color: var(--md-sys-color-on-primary);
73
- }
74
- }
75
-
76
- div[header] {
77
- display: flex;
78
- align-items: center;
79
- background-color: #2ea4df1a;
80
- border: 1px solid #2ea4df33;
81
- margin: var(--spacing-large, 12px);
82
- margin-bottom:var(--spacing-small, 5px);
83
- padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);
84
- border-radius: var(--md-sys-shape-corner-small, 5px);
85
-
86
- md-filled-text-field[type='search'] {
87
- --md-filled-text-field-container-shape: 0px;
88
- --md-filled-text-field-container-color: transparent;
89
- --md-filled-text-field-label-text-color: #999999;
90
- --md-filled-text-field-input-text-color: #4e5055;
91
- }
92
- strong{
93
- flex:1;
94
- padding-right:var(--spacing-medium, 8px);
95
- text-align:right
96
- }
97
-
98
- md-elevated-button[add-project] {
99
- font-weight: bold;
100
- font-size: 16px;
101
- margin-left: 17px;
102
- padding: 13px 20px;
103
-
104
- --md-elevated-button-container-color: #24be7b;
105
- --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
106
- --md-elevated-button-hover-label-text-color:var(--md-sys-color-on-primary);
107
- --md-elevated-button-pressed-label-text-color:var(--md-sys-color-on-primary);
108
- --md-elevated-button-focus-label-text-color:var(--md-sys-color-on-primary);
109
- --md-elevated-button-icon-color:var(--md-sys-color-on-primary);
110
- --md-elevated-button-hover-icon-color:var(--md-sys-color-on-primary);
111
- --md-elevated-button-pressed-icon-color:var(--md-sys-color-on-primary);
112
- --md-elevated-button-focus-icon-color:var(--md-sys-color-on-primary);
113
-
114
- --md-elevated-button-container-shape: 7px;
115
- }
116
- }
117
-
118
- div[body] {
119
- div[project-container] {
120
- display: flex;
121
- flex-direction: row;
122
- min-height: 130px;
123
- margin: var(--spacing-large, 12px);
124
- background-color: var(--md-sys-color-on-primary);
125
- border: 1px solid #cccccc80;
126
- border-radius: var(--md-sys-shape-corner-small, 5px);
127
- align-items: center;
128
- gap: var(--spacing-medium, 8px);
129
- overflow:hidden;
130
-
131
- img[project-img] {
132
- width: 240px;
133
- height: 130px;
134
- aspect-ratio: 2;
135
- background-color: #cccccc80;
136
- }
137
- img[project-img][no-image] {
138
- object-fit: contain;
139
- opacity: 0.5;
140
- }
141
-
142
- span[project-info] {
143
- flex: 0.5;
144
- padding: var(--spacing-small, 4px);
145
- font-size: 14px;
146
-
147
- white-space: nowrap;
148
- overflow: hidden;
149
- text-overflow: ellipsis;
150
-
151
- div[name] {
152
- color: #2e79be;
153
- font-weight: bold;
154
- font-size: 18px;
155
- }
156
- }
157
-
158
- span[project-state] {
159
- flex: 0.5;
160
- padding: var(--spacing-medium, 8px);
161
- min-width: 340px;
162
-
163
- & > div {
164
- margin-bottom: var(--spacing-small, 4px);
165
- }
166
-
167
- div[progress] {
168
- position: relative;
169
-
170
- md-linear-progress {
171
- margin:var(--spacing-tiny, 2px) 0;
172
- --md-linear-progress-track-height: 18px;
173
- --md-linear-progress-active-indicator-height: 18px;
174
- --md-linear-progress-track-shape: 5px;
175
- --md-linear-progress-active-indicator-color: #0595e526;
176
- --md-linear-progress-track-color: #0595e52a;
177
- }
178
-
179
- span {
180
- position: absolute;
181
- top: 0;
182
- left: var(--spacing-large, 12px);
183
- font-size: 12px;
184
- font-weight: bold;
185
- color: #2e79be;
186
-
187
- &:last-child {
188
- left: unset;
189
- right: var(--spacing-large, 12px);
190
- }
191
- }
192
- }
193
-
194
- div[filled] div {
195
- margin-right: var(--spacing-large, 12px);
196
- display: inline-block;
197
- }
198
-
199
- strong[filled] {
200
- color: #1bb401;
201
- }
202
- strong[not-filled] {
203
- color: #ff4444;
204
- }
205
-
206
- md-outlined-button {
207
- min-height: 33px;
208
- padding: 0 var(--spacing-large, 12px);
209
- margin-right: var(--spacing-tiny, 2px);
210
- box-shadow: 1px 1px 1px 1px #0000001a;
211
- --md-outlined-button-label-text-color: #586878;
212
- --md-outlined-button-label-text-weight: bold;
213
- --md-sys-color-outline: rgba(51,51,51,.20);
214
- }
215
- }
216
- }
217
- }
218
- `
219
- ]
220
-
221
- get context() {
222
- return {
223
- title: '셋팅'
224
- }
225
- }
226
-
227
- @state() private projectName: string = ''
228
- @state() private projectList: Project[] = []
229
- @state() private projectCount: number = 0
230
-
231
- render() {
232
- return html`
233
- <div management-header>
234
- <div management-header-container>
235
- <a @click=${this._openCreateProjectPopup} green>
236
- <md-icon slot="leading-icon">add</md-icon>
237
- <div label>신규 프로젝트 생성</div>
238
- </a>
239
- <a href="employee-list">
240
- <md-icon slot="leading-icon">badge</md-icon>
241
- <div label>인력 관리</div>
242
- </a>
243
- <a href="construction-type-management">
244
- <md-icon slot="leading-icon">construction</md-icon>
245
- <div label>공종 관리</div>
246
- </a>
247
- <a href="inspection-drawing-type-management">
248
- <md-icon slot="leading-icon">stacks</md-icon>
249
- <div label>도면타입/검측부위<br/>관리</div>
250
- </a>
251
- <a href="checklist-type-management">
252
- <md-icon slot="leading-icon">rule</md-icon>
253
- <div label>체크리스트 구분 관리</div>
254
- </a>
255
- <a href="checklist-template-list">
256
- <md-icon slot="leading-icon">fact_check</md-icon>
257
- <div label>체크리스트 템플릿<br/>관리</div>
258
- </a>
259
- </div>
260
- </div>
261
-
262
- <div header>
263
- <md-filled-text-field
264
- name="projectName"
265
- type="search"
266
- label="프로젝트 이름"
267
- .value=${this.projectName}
268
- @input=${this._onInputChange}
269
- @keypress=${this._onKeypress}
270
- >
271
- <md-icon slot="leading-icon">search</md-icon>
272
- </md-filled-text-field>
273
-
274
- <strong>총 ${this.projectCount}개</strong>
275
- </div>
276
-
277
- <div body>
278
- ${this.projectList?.map((project: Project) => {
279
- const filledText = html`<strong filled>등록완료</strong>`
280
- const nonFilledText = html`<strong not-filled>미등록</strong>`
281
-
282
- const projectFilledState = project.buildingComplex.address ? filledText : nonFilledText
283
- const supervisoryFilledState = true ? filledText : nonFilledText
284
- const taskFilledState = false ? filledText : nonFilledText
285
-
286
- return html`
287
- <div project-container>
288
- <img
289
- ?no-image=${!project.mainPhoto?.fullpath}
290
- project-img
291
- src=${project.mainPhoto?.fullpath || '/assets/images/no-image.png'}
292
- />
293
-
294
- <span project-info>
295
- <div name>${project.name}</div>
296
- <div content>${project.buildingComplex.address}</div>
297
- <div content>면적: ${project.buildingComplex?.area?.toLocaleString() || ''}㎡</div>
298
- <div content>착공~준공: ${project.startDate}~${project.endDate}</div>
299
- <div content>발주처: <strong>${project.buildingComplex.clientCompany}</strong></div>
300
- </span>
301
-
302
- <span project-state>
303
- <div progress>
304
- <md-linear-progress buffer="100" max="100" value=${project.totalProgress || 0}> </md-linear-progress>
305
- <span>${project.totalProgress == 100 ? '완료' : '진행중'}</span>
306
- <span>${project.totalProgress || 0}%</span>
307
- </div>
308
- <div filled>
309
- <div>프로젝트 정보 ${projectFilledState}</div>
310
- <div>시공감리 자료 ${supervisoryFilledState}</div>
311
- <div>공정표 ${taskFilledState}</div>
312
- </div>
313
- <div>
314
- <md-outlined-button href="project-update/${project.id}">프로젝트 정보 수정</md-outlined-button>
315
- <md-outlined-button href="project-plan-management/${project.id}">도면 관리</md-outlined-button>
316
- <md-outlined-button href="project-task-management/${project.id}">공정표 관리</md-outlined-button>
317
- </div>
318
- </span>
319
- </div>
320
- `
321
- })}
322
- </div>
323
- `
324
- }
325
-
326
- async pageUpdated(changes: any, lifecycle: any) {
327
- if (this.active) {
328
- this.getProjectList()
329
- }
330
- }
331
-
332
- async getProjectList() {
333
- const response = await client.query({
334
- query: gql`
335
- query Projects($filters: [Filter!]) {
336
- projects(filters: $filters) {
337
- items {
338
- id
339
- name
340
- mainPhoto {
341
- fullpath
342
- }
343
- startDate
344
- endDate
345
- totalProgress
346
- buildingComplex {
347
- address
348
- area
349
- clientCompany
350
- }
351
- }
352
- total
353
- }
354
- }
355
- `,
356
- variables: {
357
- filters: this.projectName
358
- ? [
359
- {
360
- name: 'name',
361
- operator: 'search',
362
- value: `%${this.projectName}%`
363
- }
364
- ]
365
- : []
366
- }
367
- })
368
-
369
- this.projectList = response.data.projects?.items || []
370
- this.projectCount = response.data.projects?.total || 0
371
- }
372
-
373
- private _openCreateProjectPopup() {
374
- openPopup(html`<popup-project-create .refreshFn=${this.getProjectList.bind(this)}></popup-project-create>`, {
375
- backdrop: true,
376
- size: 'small',
377
- title: '신규 프로젝트 생성'
378
- })
379
- }
380
-
381
- // Input 요소의 값이 변경될 때 호출되는 콜백 함수
382
- private _onInputChange(event: InputEvent) {
383
- const target = event.target as HTMLInputElement
384
- this[target.name] = target.value
385
- }
386
-
387
- // 검색창에서 엔터입력시 검색
388
- private _onKeypress(event: KeyboardEvent) {
389
- if (event.code === 'Enter') {
390
- this.getProjectList()
391
- }
392
- }
393
- }