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

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