@dssp/project 0.0.36 → 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 (100) hide show
  1. package/dist-client/pages/project/project-schedule.js +31 -22
  2. package/dist-client/pages/project/project-schedule.js.map +1 -1
  3. package/dist-client/tsconfig.tsbuildinfo +1 -1
  4. package/dist-server/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +11 -11
  6. package/client/bootstrap.ts +0 -0
  7. package/client/index.ts +0 -0
  8. package/client/pages/lib/select2-component.ts +0 -175
  9. package/client/pages/lib/waether.ts +0 -159
  10. package/client/pages/project/component/project-update-header.ts +0 -88
  11. package/client/pages/project/popup/popup-plan-upload.ts +0 -138
  12. package/client/pages/project/popup/popup-project-create.ts +0 -147
  13. package/client/pages/project/popup/popup-schedule-upload.ts +0 -102
  14. package/client/pages/project/project-completed-list.ts +0 -281
  15. package/client/pages/project/project-detail.ts +0 -738
  16. package/client/pages/project/project-list.ts +0 -418
  17. package/client/pages/project/project-plan-management.ts +0 -476
  18. package/client/pages/project/project-schedule-list.ts +0 -294
  19. package/client/pages/project/project-schedule.ts +0 -393
  20. package/client/pages/project/project-setting-list.ts +0 -393
  21. package/client/pages/project/project-update.ts +0 -876
  22. package/client/pages/resource/construction-detail-type-popup.ts +0 -201
  23. package/client/pages/resource/construction-type-management.ts +0 -212
  24. package/client/pages/resource/inspection-drawing-type-management.ts +0 -245
  25. package/client/pages/resource/inspection-part-popup.ts +0 -201
  26. package/client/pages/resource/resource-importer.ts +0 -97
  27. package/client/pages/resource/resource-list-page.ts +0 -356
  28. package/client/pages/resource/worker-type-management.ts +0 -192
  29. package/client/pages/task/task-importer.ts +0 -94
  30. package/client/pages/task/task-list-page.ts +0 -340
  31. package/client/pages/task-resource/task-resource-importer.ts +0 -97
  32. package/client/pages/task-resource/task-resource-list-page.ts +0 -356
  33. package/client/route.ts +0 -55
  34. package/client/tsconfig.json +0 -11
  35. package/server/controllers/export-tasks.ts +0 -40
  36. package/server/controllers/import-task.ts +0 -134
  37. package/server/controllers/index.ts +0 -0
  38. package/server/controllers/parse-excel.ts +0 -86
  39. package/server/controllers/types.ts +0 -20
  40. package/server/index.ts +0 -4
  41. package/server/middlewares/index.ts +0 -3
  42. package/server/migrations/1723861466413-seed-roles.ts +0 -128
  43. package/server/migrations/1723861466414-seed-codes.ts +0 -157
  44. package/server/migrations/1723861476419-seed-resources.ts +0 -62
  45. package/server/migrations/1723861478420-seed-/bsample-project.ts +0 -87
  46. package/server/migrations/1723861478421-seed-/bsample-tasks.ts +0 -194
  47. package/server/migrations/index.ts +0 -9
  48. package/server/routes.ts +0 -108
  49. package/server/service/construction-detail-type/construction-detail-type-mutation.ts +0 -57
  50. package/server/service/construction-detail-type/construction-detail-type-query.ts +0 -31
  51. package/server/service/construction-detail-type/construction-detail-type-type.ts +0 -26
  52. package/server/service/construction-detail-type/construction-detail-type.ts +0 -52
  53. package/server/service/construction-detail-type/index.ts +0 -6
  54. package/server/service/construction-type/construction-type-mutation.ts +0 -66
  55. package/server/service/construction-type/construction-type-query.ts +0 -56
  56. package/server/service/construction-type/construction-type-type.ts +0 -26
  57. package/server/service/construction-type/construction-type.ts +0 -74
  58. package/server/service/construction-type/index.ts +0 -6
  59. package/server/service/index.ts +0 -56
  60. package/server/service/inspection-drawing-type/index.ts +0 -6
  61. package/server/service/inspection-drawing-type/inspection-drawing-type-mutation.ts +0 -69
  62. package/server/service/inspection-drawing-type/inspection-drawing-type-query.ts +0 -55
  63. package/server/service/inspection-drawing-type/inspection-drawing-type-type.ts +0 -23
  64. package/server/service/inspection-drawing-type/inspection-drawing-type.ts +0 -68
  65. package/server/service/inspection-part/index.ts +0 -6
  66. package/server/service/inspection-part/inspection-part-mutation.ts +0 -52
  67. package/server/service/inspection-part/inspection-part-query.ts +0 -41
  68. package/server/service/inspection-part/inspection-part-type.ts +0 -26
  69. package/server/service/inspection-part/inspection-part.ts +0 -51
  70. package/server/service/manager/index.ts +0 -6
  71. package/server/service/manager/manager-mutation.ts +0 -42
  72. package/server/service/manager/manager-query.ts +0 -28
  73. package/server/service/manager/manager-type.ts +0 -40
  74. package/server/service/manager/manager.ts +0 -29
  75. package/server/service/project/index.ts +0 -6
  76. package/server/service/project/project-mutation.ts +0 -255
  77. package/server/service/project/project-query.ts +0 -105
  78. package/server/service/project/project-type.ts +0 -72
  79. package/server/service/project/project.ts +0 -134
  80. package/server/service/resource/index.ts +0 -7
  81. package/server/service/resource/resource-mutation.ts +0 -137
  82. package/server/service/resource/resource-query.ts +0 -50
  83. package/server/service/resource/resource-type.ts +0 -41
  84. package/server/service/resource/resource.ts +0 -82
  85. package/server/service/task/index.ts +0 -6
  86. package/server/service/task/task-mutation.ts +0 -135
  87. package/server/service/task/task-query.ts +0 -169
  88. package/server/service/task/task-type.ts +0 -75
  89. package/server/service/task/task.ts +0 -130
  90. package/server/service/task-resource/index.ts +0 -7
  91. package/server/service/task-resource/task-resource-mutation.ts +0 -140
  92. package/server/service/task-resource/task-resource-query.ts +0 -36
  93. package/server/service/task-resource/task-resource-type.ts +0 -41
  94. package/server/service/task-resource/task-resource.ts +0 -51
  95. package/server/service/worker-type/index.ts +0 -6
  96. package/server/service/worker-type/worker-type-mutation.ts +0 -66
  97. package/server/service/worker-type/worker-type-query.ts +0 -47
  98. package/server/service/worker-type/worker-type-type.ts +0 -26
  99. package/server/service/worker-type/worker-type.ts +0 -68
  100. 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
- }