@dssp/project 0.0.2 → 0.0.5

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 (196) hide show
  1. package/client/pages/checklist/checklist-importer.ts +6 -8
  2. package/client/pages/checklist/checklist-list-page.ts +10 -25
  3. package/client/pages/project/popup/popup-plan-upload.ts +138 -0
  4. package/client/pages/project/{project-create-popup.ts → popup/popup-project-create.ts} +2 -3
  5. package/client/pages/project/project-detail.ts +8 -7
  6. package/client/pages/project/project-list.ts +17 -10
  7. package/client/pages/project/project-plan-management.ts +117 -39
  8. package/client/pages/project/project-schedule-list.ts +2 -0
  9. package/client/pages/project/project-schedule.ts +296 -7
  10. package/client/pages/project/project-setting-list.ts +10 -6
  11. package/client/pages/project/project-update.ts +5 -2
  12. package/client/pages/resource/construction-type-management.ts +192 -0
  13. package/client/pages/resource/manager-management.ts +181 -0
  14. package/client/pages/resource/worker-type-management.ts +194 -0
  15. package/client/pages/task/task-importer.ts +6 -8
  16. package/client/pages/task/task-list-page.ts +10 -25
  17. package/client/route.ts +8 -4
  18. package/dist-client/pages/checklist/checklist-importer.d.ts +1 -0
  19. package/dist-client/pages/checklist/checklist-importer.js +3 -2
  20. package/dist-client/pages/checklist/checklist-importer.js.map +1 -1
  21. package/dist-client/pages/checklist/checklist-list-page.d.ts +1 -0
  22. package/dist-client/pages/checklist/checklist-list-page.js +8 -16
  23. package/dist-client/pages/checklist/checklist-list-page.js.map +1 -1
  24. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +10 -0
  25. package/dist-client/pages/project/popup/popup-plan-upload.js +139 -0
  26. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -0
  27. package/dist-client/pages/project/{project-create-popup.d.ts → popup/popup-project-create.d.ts} +1 -3
  28. package/dist-client/pages/project/{project-create-popup.js → popup/popup-project-create.js} +9 -10
  29. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -0
  30. package/dist-client/pages/project/project-detail.d.ts +5 -4
  31. package/dist-client/pages/project/project-detail.js +7 -6
  32. package/dist-client/pages/project/project-detail.js.map +1 -1
  33. package/dist-client/pages/project/project-list.d.ts +12 -2
  34. package/dist-client/pages/project/project-list.js +11 -14
  35. package/dist-client/pages/project/project-list.js.map +1 -1
  36. package/dist-client/pages/project/project-plan-management.d.ts +9 -4
  37. package/dist-client/pages/project/project-plan-management.js +105 -35
  38. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  39. package/dist-client/pages/project/project-schedule-list.d.ts +1 -0
  40. package/dist-client/pages/project/project-schedule-list.js +1 -0
  41. package/dist-client/pages/project/project-schedule-list.js.map +1 -1
  42. package/dist-client/pages/project/project-schedule.d.ts +10 -3
  43. package/dist-client/pages/project/project-schedule.js +294 -7
  44. package/dist-client/pages/project/project-schedule.js.map +1 -1
  45. package/dist-client/pages/project/project-setting-list.d.ts +3 -2
  46. package/dist-client/pages/project/project-setting-list.js +9 -6
  47. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  48. package/dist-client/pages/project/project-update.d.ts +3 -2
  49. package/dist-client/pages/project/project-update.js +4 -2
  50. package/dist-client/pages/project/project-update.js.map +1 -1
  51. package/dist-client/pages/resource/construction-type-management.d.ts +27 -0
  52. package/dist-client/pages/resource/construction-type-management.js +189 -0
  53. package/dist-client/pages/resource/construction-type-management.js.map +1 -0
  54. package/dist-client/pages/resource/manager-management.d.ts +31 -0
  55. package/dist-client/pages/resource/manager-management.js +175 -0
  56. package/dist-client/pages/resource/manager-management.js.map +1 -0
  57. package/dist-client/pages/resource/worker-type-management.d.ts +27 -0
  58. package/dist-client/pages/resource/worker-type-management.js +191 -0
  59. package/dist-client/pages/resource/worker-type-management.js.map +1 -0
  60. package/dist-client/pages/task/task-importer.d.ts +1 -0
  61. package/dist-client/pages/task/task-importer.js +3 -2
  62. package/dist-client/pages/task/task-importer.js.map +1 -1
  63. package/dist-client/pages/task/task-list-page.d.ts +1 -0
  64. package/dist-client/pages/task/task-list-page.js +8 -16
  65. package/dist-client/pages/task/task-list-page.js.map +1 -1
  66. package/dist-client/route.d.ts +1 -1
  67. package/dist-client/route.js +7 -4
  68. package/dist-client/route.js.map +1 -1
  69. package/dist-client/tsconfig.tsbuildinfo +1 -1
  70. package/dist-server/controllers/index.d.ts +0 -0
  71. package/dist-server/controllers/project-to-excel.d.ts +7 -0
  72. package/dist-server/index.d.ts +2 -0
  73. package/dist-server/middlewares/index.d.ts +1 -0
  74. package/dist-server/routes.d.ts +1 -0
  75. package/dist-server/service/check-item/check-item-mutation.d.ts +10 -0
  76. package/dist-server/service/check-item/check-item-query.d.ts +11 -0
  77. package/dist-server/service/check-item/check-item-type.d.ts +18 -0
  78. package/dist-server/service/check-item/check-item.d.ts +18 -0
  79. package/dist-server/service/check-item/index.d.ts +5 -0
  80. package/dist-server/service/checklist/checklist-mutation.d.ts +10 -0
  81. package/dist-server/service/checklist/checklist-query.d.ts +11 -0
  82. package/dist-server/service/checklist/checklist-type.d.ts +18 -0
  83. package/dist-server/service/checklist/checklist.d.ts +26 -0
  84. package/dist-server/service/checklist/index.d.ts +5 -0
  85. package/dist-server/service/construction-type/construction-type-mutation.d.ts +6 -0
  86. package/dist-server/service/construction-type/construction-type-mutation.js +64 -0
  87. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -0
  88. package/dist-server/service/construction-type/construction-type-query.d.ts +11 -0
  89. package/dist-server/service/construction-type/construction-type-query.js +78 -0
  90. package/dist-server/service/construction-type/construction-type-query.js.map +1 -0
  91. package/dist-server/service/construction-type/construction-type-type.d.ts +11 -0
  92. package/dist-server/service/construction-type/construction-type-type.js +43 -0
  93. package/dist-server/service/construction-type/construction-type-type.js.map +1 -0
  94. package/dist-server/service/construction-type/construction-type.d.ts +16 -0
  95. package/dist-server/service/construction-type/construction-type.js +77 -0
  96. package/dist-server/service/construction-type/construction-type.js.map +1 -0
  97. package/dist-server/service/construction-type/index.d.ts +5 -0
  98. package/dist-server/service/construction-type/index.js +9 -0
  99. package/dist-server/service/construction-type/index.js.map +1 -0
  100. package/dist-server/service/index.d.ts +12 -0
  101. package/dist-server/service/index.js +12 -4
  102. package/dist-server/service/index.js.map +1 -1
  103. package/dist-server/service/manager/index.d.ts +5 -0
  104. package/dist-server/service/manager/index.js +9 -0
  105. package/dist-server/service/manager/index.js.map +1 -0
  106. package/dist-server/service/manager/manager-mutation.d.ts +5 -0
  107. package/dist-server/service/manager/manager-mutation.js +39 -0
  108. package/dist-server/service/manager/manager-mutation.js.map +1 -0
  109. package/dist-server/service/manager/manager-query.d.ts +4 -0
  110. package/dist-server/service/manager/manager-query.js +39 -0
  111. package/dist-server/service/manager/manager-query.js.map +1 -0
  112. package/dist-server/service/manager/manager-type.d.ts +15 -0
  113. package/dist-server/service/manager/manager-type.js +62 -0
  114. package/dist-server/service/manager/manager-type.js.map +1 -0
  115. package/dist-server/service/manager/manager.d.ts +8 -0
  116. package/dist-server/service/manager/manager.js +41 -0
  117. package/dist-server/service/manager/manager.js.map +1 -0
  118. package/dist-server/service/project/index.d.ts +7 -0
  119. package/dist-server/service/project/project-mutation.d.ts +9 -0
  120. package/dist-server/service/project/project-mutation.js +61 -55
  121. package/dist-server/service/project/project-mutation.js.map +1 -1
  122. package/dist-server/service/project/project-query.d.ts +16 -0
  123. package/dist-server/service/project/project-query.js +3 -3
  124. package/dist-server/service/project/project-query.js.map +1 -1
  125. package/dist-server/service/project/project-type.d.ts +29 -0
  126. package/dist-server/service/project/project-type.js +1 -2
  127. package/dist-server/service/project/project-type.js.map +1 -1
  128. package/dist-server/service/project/project.d.ts +35 -0
  129. package/dist-server/service/project/project.js +1 -2
  130. package/dist-server/service/project/project.js.map +1 -1
  131. package/dist-server/service/task/index.d.ts +5 -0
  132. package/dist-server/service/task/task-mutation.d.ts +10 -0
  133. package/dist-server/service/task/task-query.d.ts +11 -0
  134. package/dist-server/service/task/task-type.d.ts +18 -0
  135. package/dist-server/service/task/task.d.ts +25 -0
  136. package/dist-server/service/worker-type/index.d.ts +5 -0
  137. package/dist-server/service/worker-type/index.js +9 -0
  138. package/dist-server/service/worker-type/index.js.map +1 -0
  139. package/dist-server/service/worker-type/worker-type-mutation.d.ts +6 -0
  140. package/dist-server/service/worker-type/worker-type-mutation.js +64 -0
  141. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -0
  142. package/dist-server/service/worker-type/worker-type-query.d.ts +11 -0
  143. package/dist-server/service/{resource/resource-query.js → worker-type/worker-type-query.js} +31 -39
  144. package/dist-server/service/worker-type/worker-type-query.js.map +1 -0
  145. package/dist-server/service/worker-type/worker-type-type.d.ts +11 -0
  146. package/dist-server/service/worker-type/worker-type-type.js +43 -0
  147. package/dist-server/service/worker-type/worker-type-type.js.map +1 -0
  148. package/dist-server/service/worker-type/worker-type.d.ts +16 -0
  149. package/dist-server/service/{resource/resource.js → worker-type/worker-type.js} +35 -20
  150. package/dist-server/service/worker-type/worker-type.js.map +1 -0
  151. package/dist-server/tsconfig.tsbuildinfo +1 -1
  152. package/package.json +3 -3
  153. package/server/service/construction-type/construction-type-mutation.ts +66 -0
  154. package/server/service/construction-type/construction-type-query.ts +47 -0
  155. package/server/service/construction-type/construction-type-type.ts +26 -0
  156. package/server/service/{resource/resource.ts → construction-type/construction-type.ts} +18 -6
  157. package/server/service/construction-type/index.ts +6 -0
  158. package/server/service/index.ts +12 -4
  159. package/server/service/manager/index.ts +6 -0
  160. package/server/service/manager/manager-mutation.ts +42 -0
  161. package/server/service/manager/manager-query.ts +28 -0
  162. package/server/service/manager/manager-type.ts +40 -0
  163. package/server/service/manager/manager.ts +29 -0
  164. package/server/service/project/project-mutation.ts +101 -79
  165. package/server/service/project/project-query.ts +4 -4
  166. package/server/service/worker-type/index.ts +6 -0
  167. package/server/service/worker-type/worker-type-mutation.ts +66 -0
  168. package/server/service/worker-type/worker-type-query.ts +47 -0
  169. package/server/service/worker-type/worker-type-type.ts +26 -0
  170. package/server/service/worker-type/worker-type.ts +68 -0
  171. package/things-factory.config.js +3 -0
  172. package/client/pages/project/ox-progress-circle.ts +0 -133
  173. package/client/pages/resource/resource-importer.ts +0 -96
  174. package/client/pages/resource/resource-list-page.ts +0 -355
  175. package/dist-client/pages/project/ox-progress-circle.d.ts +0 -41
  176. package/dist-client/pages/project/ox-progress-circle.js +0 -182
  177. package/dist-client/pages/project/ox-progress-circle.js.map +0 -1
  178. package/dist-client/pages/project/project-create-popup.js.map +0 -1
  179. package/dist-client/pages/resource/resource-importer.d.ts +0 -9
  180. package/dist-client/pages/resource/resource-importer.js +0 -100
  181. package/dist-client/pages/resource/resource-importer.js.map +0 -1
  182. package/dist-client/pages/resource/resource-list-page.d.ts +0 -62
  183. package/dist-client/pages/resource/resource-list-page.js +0 -331
  184. package/dist-client/pages/resource/resource-list-page.js.map +0 -1
  185. package/dist-server/service/resource/index.js +0 -9
  186. package/dist-server/service/resource/index.js.map +0 -1
  187. package/dist-server/service/resource/resource-mutation.js +0 -129
  188. package/dist-server/service/resource/resource-mutation.js.map +0 -1
  189. package/dist-server/service/resource/resource-query.js.map +0 -1
  190. package/dist-server/service/resource/resource-type.js +0 -69
  191. package/dist-server/service/resource/resource-type.js.map +0 -1
  192. package/dist-server/service/resource/resource.js.map +0 -1
  193. package/server/service/resource/index.ts +0 -6
  194. package/server/service/resource/resource-mutation.ts +0 -139
  195. package/server/service/resource/resource-query.ts +0 -56
  196. package/server/service/resource/resource-type.ts +0 -49
@@ -0,0 +1,181 @@
1
+ import '@operato/data-grist'
2
+
3
+ import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
4
+ import { PageView } from '@operato/shell'
5
+ import { css, html } from 'lit'
6
+ import { customElement, property, query } from 'lit/decorators.js'
7
+ import { DataGrist } from '@operato/data-grist'
8
+ import { client } from '@operato/graphql'
9
+ import { notify } from '@operato/layout'
10
+ import gql from 'graphql-tag'
11
+
12
+ @customElement('manager-management')
13
+ export class ManagerManagement extends PageView {
14
+ static styles = [
15
+ ScrollbarStyles,
16
+ CommonGristStyles,
17
+ css`
18
+ :host {
19
+ display: flex;
20
+ flex-direction: column;
21
+
22
+ width: 100%;
23
+
24
+ --grid-record-emphasized-background-color: red;
25
+ --grid-record-emphasized-color: yellow;
26
+ }
27
+ `
28
+ ]
29
+
30
+ @property({ type: Object }) gristConfig: any
31
+ @query('ox-grist') private grist!: DataGrist
32
+
33
+ get context() {
34
+ return {
35
+ title: '담당자 관리',
36
+ actions: [
37
+ {
38
+ title: '저장',
39
+ action: this._updateManagers.bind(this),
40
+ ...CommonButtonStyles.save
41
+ }
42
+ ]
43
+ }
44
+ }
45
+
46
+ render() {
47
+ return html`
48
+ <ox-grist .mode=${'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
49
+ <div slot="headroom">
50
+ <div>
51
+ <button @click=${this._updateManagers.bind(this)}>저장</button>
52
+ </div>
53
+ </div>
54
+ </ox-grist>
55
+ `
56
+ }
57
+
58
+ async pageInitialized(lifecycle: any) {
59
+ this.gristConfig = {
60
+ columns: [
61
+ { type: 'gutter', gutterName: 'sequence' },
62
+ {
63
+ type: 'string',
64
+ name: 'name',
65
+ header: '이름',
66
+ record: {
67
+ editable: true
68
+ },
69
+ width: 150
70
+ },
71
+ {
72
+ type: 'string',
73
+ name: 'phone',
74
+ header: '휴대폰 번호',
75
+ record: {
76
+ editable: true
77
+ },
78
+ width: 150
79
+ },
80
+ {
81
+ type: 'string',
82
+ name: 'position',
83
+ header: '직위',
84
+ record: {
85
+ editable: true
86
+ },
87
+ width: 150
88
+ },
89
+ {
90
+ type: 'datetime',
91
+ name: 'updatedAt',
92
+ header: '수정 시간',
93
+ record: {
94
+ renderer: value => {
95
+ const date = new Date(value + ' UTC')
96
+
97
+ return new Intl.DateTimeFormat('ko-KR', {
98
+ timeZone: 'Asia/Seoul',
99
+ year: 'numeric',
100
+ month: '2-digit',
101
+ day: '2-digit',
102
+ hour: '2-digit',
103
+ minute: '2-digit',
104
+ second: '2-digit'
105
+ }).format(date)
106
+ }
107
+ },
108
+ width: 200
109
+ }
110
+ ],
111
+ rows: {
112
+ appendable: false
113
+ },
114
+ sorters: [{ name: 'name' }],
115
+ pagination: { infinite: true }
116
+ }
117
+ }
118
+
119
+ async fetchHandler() {
120
+ const response = await client.query({
121
+ query: gql`
122
+ query Managers {
123
+ managers {
124
+ id
125
+ phone
126
+ position
127
+ userId
128
+ name
129
+ updatedAt
130
+ }
131
+ }
132
+ `
133
+ })
134
+
135
+ console.log('response.data.managers :', response.data.managers)
136
+
137
+ if (response.errors) return {}
138
+
139
+ return {
140
+ total: response.data.managers.length || 0,
141
+ records: response.data.managers || []
142
+ }
143
+ }
144
+
145
+ async _updateManagers() {
146
+ let patches = this.grist.dirtyRecords
147
+ if (patches && patches.length) {
148
+ patches = patches.map(patch => {
149
+ let patchField: any = patch.userId ? { userId: patch.userId } : {}
150
+ if (patch.id) patchField['id'] = patch.id
151
+
152
+ const dirtyFields = patch.__dirtyfields__
153
+ for (let key in dirtyFields) {
154
+ patchField[key] = dirtyFields[key].after
155
+ }
156
+
157
+ return patchField
158
+ })
159
+
160
+ const response = await client.mutate({
161
+ mutation: gql`
162
+ mutation UpdateMultipleManager($patches: [ManagerPatch!]!) {
163
+ updateMultipleManager(patches: $patches) {
164
+ id
165
+ }
166
+ }
167
+ `,
168
+ variables: {
169
+ patches
170
+ }
171
+ })
172
+
173
+ if (!response.errors) {
174
+ this.grist.fetch()
175
+ notify({ message: '저장되었습니다.' })
176
+ } else {
177
+ notify({ message: '저장에 실패하였습니다.', level: 'error' })
178
+ }
179
+ }
180
+ }
181
+ }
@@ -0,0 +1,194 @@
1
+ import '@operato/data-grist'
2
+ import '@operato/context/ox-context-page-toolbar.js'
3
+
4
+ import { CommonGristStyles, ScrollbarStyles } from '@operato/styles'
5
+ import { PageView } from '@operato/shell'
6
+ import { css, html } from 'lit'
7
+ import { customElement, property, query } from 'lit/decorators.js'
8
+ import { DataGrist } from '@operato/data-grist'
9
+ import { client } from '@operato/graphql'
10
+ import { notify } from '@operato/layout'
11
+ import gql from 'graphql-tag'
12
+
13
+ @customElement('worker-type-management')
14
+ export class WorkerTypeManagement extends PageView {
15
+ static styles = [
16
+ ScrollbarStyles,
17
+ CommonGristStyles,
18
+ css`
19
+ :host {
20
+ display: flex;
21
+ flex-direction: column;
22
+
23
+ width: 100%;
24
+
25
+ --grid-record-emphasized-background-color: red;
26
+ --grid-record-emphasized-color: yellow;
27
+ }
28
+ `
29
+ ]
30
+
31
+ @property({ type: Object }) gristConfig: any
32
+ @query('ox-grist') private grist!: DataGrist
33
+
34
+ get context() {
35
+ return {
36
+ title: '인력 관리',
37
+ actions: [
38
+ {
39
+ title: '저장',
40
+ action: this._updateWorkerTypes.bind(this),
41
+ icon: 'save'
42
+ },
43
+ {
44
+ title: '삭제',
45
+ action: this._deleteWorkerTypes.bind(this),
46
+ icon: 'delete'
47
+ }
48
+ ]
49
+ }
50
+ }
51
+
52
+ render() {
53
+ return html`
54
+ <ox-grist .mode=${'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
55
+ <div slot="headroom" class="header">
56
+ <ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
57
+ </div>
58
+ </ox-grist>
59
+ <div>
60
+ <button @click=${this._updateWorkerTypes.bind(this)}>저장</button>
61
+ <button @click=${this._deleteWorkerTypes.bind(this)}>삭제</button>
62
+ </div>
63
+ `
64
+ }
65
+
66
+ async pageInitialized(lifecycle: any) {
67
+ this.gristConfig = {
68
+ columns: [
69
+ { type: 'gutter', gutterName: 'sequence' },
70
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
71
+ {
72
+ type: 'string',
73
+ name: 'name',
74
+ header: '이름',
75
+ record: {
76
+ editable: true
77
+ },
78
+ width: 150
79
+ },
80
+ {
81
+ type: 'string',
82
+ name: 'description',
83
+ header: '설명',
84
+ record: {
85
+ editable: true
86
+ },
87
+ width: 200
88
+ },
89
+ {
90
+ type: 'datetime',
91
+ name: 'createdAt',
92
+ header: '생성 시간',
93
+ width: 200
94
+ },
95
+ {
96
+ type: 'datetime',
97
+ name: 'updatedAt',
98
+ header: '수정 시간',
99
+ width: 200
100
+ }
101
+ ],
102
+ pagination: { infinite: true }
103
+ }
104
+ }
105
+
106
+ async fetchHandler() {
107
+ const response = await client.query({
108
+ query: gql`
109
+ query WorkerTypes {
110
+ workerTypes {
111
+ items {
112
+ id
113
+ name
114
+ description
115
+ createdAt
116
+ updatedAt
117
+ }
118
+ total
119
+ }
120
+ }
121
+ `
122
+ })
123
+
124
+ if (response.errors) return {}
125
+
126
+ return {
127
+ total: response.data.workerTypes.total || 0,
128
+ records: response.data.workerTypes.items || []
129
+ }
130
+ }
131
+
132
+ async _updateWorkerTypes() {
133
+ let patches = this.grist.dirtyRecords
134
+ if (patches && patches.length) {
135
+ patches = patches.map(patch => {
136
+ let patchField: any = patch.id ? { id: patch.id } : {}
137
+ const dirtyFields = patch.__dirtyfields__
138
+ for (let key in dirtyFields) {
139
+ patchField[key] = dirtyFields[key].after
140
+ }
141
+ patchField.cuFlag = patch.__dirty__
142
+
143
+ return patchField
144
+ })
145
+
146
+ const response = await client.mutate({
147
+ mutation: gql`
148
+ mutation UpdateMultipleWorkerType($patches: [WorkerTypePatch!]!) {
149
+ updateMultipleWorkerType(patches: $patches) {
150
+ id
151
+ }
152
+ }
153
+ `,
154
+ variables: {
155
+ patches
156
+ }
157
+ })
158
+
159
+ if (!response.errors) {
160
+ this.grist.fetch()
161
+ notify({ message: '저장되었습니다.' })
162
+ } else {
163
+ notify({ message: '저장에 실패하였습니다.', level: 'error' })
164
+ }
165
+ }
166
+ }
167
+
168
+ async _deleteWorkerTypes() {
169
+ if (confirm('삭제하시겠습니까?')) {
170
+ const a = this.grist
171
+ console.log('this.grist :', a)
172
+ console.log('selected : ', a.selected)
173
+
174
+ const ids = this.grist.selected.map(record => record.id)
175
+ if (ids && ids.length > 0) {
176
+ const response = await client.mutate({
177
+ mutation: gql`
178
+ mutation DeleteWorkerTypes($ids: [String!]!) {
179
+ deleteWorkerTypes(ids: $ids)
180
+ }
181
+ `,
182
+ variables: {
183
+ ids
184
+ }
185
+ })
186
+
187
+ if (!response.errors) {
188
+ this.grist.fetch()
189
+ notify({ message: '삭제되었습니다.' })
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
@@ -1,3 +1,4 @@
1
+ import '@material/web/button/elevated-button.js'
1
2
  import '@operato/data-grist'
2
3
 
3
4
  import gql from 'graphql-tag'
@@ -28,7 +29,7 @@ export class TaskImporter extends LitElement {
28
29
  padding: var(--padding-default);
29
30
  }
30
31
 
31
- mwc-button {
32
+ md-elevated-button {
32
33
  margin-left: var(--margin-default);
33
34
  }
34
35
  `
@@ -65,15 +66,13 @@ export class TaskImporter extends LitElement {
65
66
  <ox-grist
66
67
  .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
67
68
  .config=${this.columns}
68
- .data=${
69
- {
70
- records: this.tasks
71
- }
72
- }
69
+ .data=${{
70
+ records: this.tasks
71
+ }}
73
72
  ></ox-grist>
74
73
 
75
74
  <div class="button-container">
76
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
75
+ <md-elevated-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</md-elevated-button>
77
76
  </div>
78
77
  `
79
78
  }
@@ -93,4 +92,3 @@ export class TaskImporter extends LitElement {
93
92
  this.dispatchEvent(new CustomEvent('imported'))
94
93
  }
95
94
  }
96
-
@@ -1,3 +1,4 @@
1
+ import '@material/web/icon/icon.js'
1
2
  import '@operato/data-grist'
2
3
 
3
4
  import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
@@ -5,12 +6,7 @@ import { PageView, store } from '@operato/shell'
5
6
  import { css, html } from 'lit'
6
7
  import { customElement, property, query, state } from 'lit/decorators.js'
7
8
  import { ScopedElementsMixin } from '@open-wc/scoped-elements'
8
- import {
9
- ColumnConfig,
10
- DataGrist,
11
- FetchOption,
12
- SortersControl
13
- } from '@operato/data-grist'
9
+ import { ColumnConfig, DataGrist, FetchOption, SortersControl } from '@operato/data-grist'
14
10
  import { client } from '@operato/graphql'
15
11
  import { i18next, localize } from '@operato/i18n'
16
12
  import { notify, openPopup } from '@operato/layout'
@@ -24,7 +20,6 @@ import { TaskImporter } from './task-importer'
24
20
 
25
21
  @customElement('task-list-page')
26
22
  export class TaskListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
27
-
28
23
  static styles = [
29
24
  ScrollbarStyles,
30
25
  CommonGristStyles,
@@ -93,11 +88,7 @@ export class TaskListPage extends connect(store)(localize(i18next)(ScopedElement
93
88
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
94
89
 
95
90
  return html`
96
- <ox-grist
97
- .mode=${mode}
98
- .config=${this.gristConfig}
99
- .fetchHandler=${this.fetchHandler.bind(this)}
100
- >
91
+ <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
101
92
  <div slot="headroom">
102
93
  <div id="filters">
103
94
  <ox-filters-form autofocus></ox-filters-form>
@@ -105,7 +96,7 @@ export class TaskListPage extends connect(store)(localize(i18next)(ScopedElement
105
96
 
106
97
  <div id="sorters">
107
98
  Sort
108
- <mwc-icon
99
+ <md-icon
109
100
  @click=${e => {
110
101
  const target = e.currentTarget
111
102
  this.sortersControl.open({
@@ -113,7 +104,7 @@ export class TaskListPage extends connect(store)(localize(i18next)(ScopedElement
113
104
  top: target.offsetTop + target.offsetHeight
114
105
  })
115
106
  }}
116
- >expand_more</mwc-icon
107
+ >expand_more</md-icon
117
108
  >
118
109
  <ox-popup id="sorter-control">
119
110
  <ox-sorters-control> </ox-sorters-control>
@@ -121,9 +112,9 @@ export class TaskListPage extends connect(store)(localize(i18next)(ScopedElement
121
112
  </div>
122
113
 
123
114
  <div id="modes">
124
- <mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>
125
- <mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>
126
- <mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>
115
+ <md-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</md-icon>
116
+ <md-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</md-icon>
117
+ <md-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</md-icon>
127
118
  </div>
128
119
  </div>
129
120
  </ox-grist>
@@ -312,12 +303,7 @@ export class TaskListPage extends connect(store)(localize(i18next)(ScopedElement
312
303
 
313
304
  private async exportHandler() {
314
305
  const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
315
- const targetFieldSet = new Set([
316
- 'id',
317
- 'name',
318
- 'description',
319
- 'active'
320
- ])
306
+ const targetFieldSet = new Set(['id', 'name', 'description', 'active'])
321
307
 
322
308
  return exportTargets.map(task => {
323
309
  let tempObj = {}
@@ -346,10 +332,9 @@ export class TaskListPage extends connect(store)(localize(i18next)(ScopedElement
346
332
  title: i18next.t('title.import task')
347
333
  }
348
334
  )
349
-
335
+
350
336
  popup.onclosed = () => {
351
337
  this.grist.fetch()
352
338
  }
353
339
  }
354
340
  }
355
-
package/client/route.ts CHANGED
@@ -28,12 +28,16 @@ export default function route(page: string) {
28
28
  import('./pages/project/project-plan-management')
29
29
  return page
30
30
 
31
- case 'checklist-list':
32
- import('./pages/checklist/checklist-list-page')
31
+ case 'manager-management':
32
+ import('./pages/resource/manager-management')
33
33
  return page
34
34
 
35
- case 'resource-list':
36
- import('./pages/resource/resource-list-page')
35
+ case 'worker-type-management':
36
+ import('./pages/resource/worker-type-management')
37
+
38
+ return page
39
+ case 'construction-type-management':
40
+ import('./pages/resource/construction-type-management')
37
41
  return page
38
42
  }
39
43
  }
@@ -1,3 +1,4 @@
1
+ import '@material/web/button/elevated-button.js';
1
2
  import '@operato/data-grist';
2
3
  import { LitElement } from 'lit';
3
4
  export declare class ChecklistImporter extends LitElement {
@@ -1,4 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/button/elevated-button.js';
2
3
  import '@operato/data-grist';
3
4
  import gql from 'graphql-tag';
4
5
  import { css, html, LitElement } from 'lit';
@@ -46,7 +47,7 @@ export class ChecklistImporter extends LitElement {
46
47
  ></ox-grist>
47
48
 
48
49
  <div class="button-container">
49
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
50
+ <md-elevated-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</md-elevated-button>
50
51
  </div>
51
52
  `;
52
53
  }
@@ -84,7 +85,7 @@ ChecklistImporter.styles = [
84
85
  padding: var(--padding-default);
85
86
  }
86
87
 
87
- mwc-button {
88
+ md-elevated-button {
88
89
  margin-left: var(--margin-default);
89
90
  }
90
91
  `
@@ -1 +1 @@
1
- {"version":3,"file":"checklist-importer.js","sourceRoot":"","sources":["../../../client/pages/checklist/checklist-importer.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAY,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAAjD;;QA0BmB,eAAU,GAAU,EAAE,CAAA;QACtB,YAAO,GAAG;YACzB,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;YACzC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC/B,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;oBACtC,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBACjC,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAA;IAkCH,CAAC;IAhCC,MAAM;QACJ,OAAO,IAAI,CAAA;;gBAEC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;kBAChC,IAAI,CAAC,OAAO;gBAEpB;YACE,OAAO,EAAE,IAAI,CAAC,UAAU;SAE5B;;;;qCAI6B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;;KAEjF,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;;QAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;OAIZ;YACD,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC3C,CAAC,CAAA;QAEF,IAAI,MAAA,QAAQ,CAAC,MAAM,0CAAE,MAAM;YAAE,OAAM;QAEnC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;IACjD,CAAC;;AAlFM,wBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;KAqBF;CACF,CAAA;AAED;IAAC,KAAK,EAAE;;qDAA+B;AACvC;IAAC,KAAK,EAAE;;kDAuBP","sourcesContent":["import '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { isMobileDevice } from '@operato/utils'\n\nexport class ChecklistImporter extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: #fff;\n }\n\n ox-grist {\n flex: 1;\n }\n\n .button-container {\n display: flex;\n margin-left: auto;\n padding: var(--padding-default);\n }\n\n mwc-button {\n margin-left: var(--margin-default);\n }\n `\n ]\n\n @state() private checklists: any[] = []\n @state() private columns = {\n list: { fields: ['name', 'description'] },\n pagination: { infinite: true },\n columns: [\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n width: 200\n },\n {\n type: 'checkbox',\n name: 'active',\n header: i18next.t('field.active'),\n width: 60\n }\n ]\n }\n\n render() {\n return html`\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.columns}\n .data=${\n { \n records: this.checklists \n }\n }\n ></ox-grist>\n\n <div class=\"button-container\">\n <mwc-button raised @click=\"${this.save.bind(this)}\">${i18next.t('button.save')}</mwc-button>\n </div>\n `\n }\n\n private async save() {\n const response = await client.mutate({\n mutation: gql`\n mutation importChecklists($checklists: [ChecklistPatch!]!) {\n importChecklists(checklists: $checklists)\n }\n `,\n variables: { checklists: this.checklists }\n })\n\n if (response.errors?.length) return\n\n this.dispatchEvent(new CustomEvent('imported'))\n }\n}\n\n"]}
1
+ {"version":3,"file":"checklist-importer.js","sourceRoot":"","sources":["../../../client/pages/checklist/checklist-importer.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAChD,OAAO,qBAAqB,CAAA;AAE5B,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAY,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAAjD;;QA0BmB,eAAU,GAAU,EAAE,CAAA;QACtB,YAAO,GAAG;YACzB,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;YACzC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC/B,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;oBACtC,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBACjC,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAA;IAgCH,CAAC;IA9BC,MAAM;QACJ,OAAO,IAAI,CAAA;;gBAEC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;kBAChC,IAAI,CAAC,OAAO;gBACd;YACN,OAAO,EAAE,IAAI,CAAC,UAAU;SACzB;;;;6CAIoC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;;KAEzF,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;;QAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;OAIZ;YACD,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC3C,CAAC,CAAA;QAEF,IAAI,MAAA,QAAQ,CAAC,MAAM,0CAAE,MAAM;YAAE,OAAM;QAEnC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;IACjD,CAAC;;AAhFM,wBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;KAqBF;CACF,CAAA;AAED;IAAC,KAAK,EAAE;;qDAA+B;AACvC;IAAC,KAAK,EAAE;;kDAuBP","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { isMobileDevice } from '@operato/utils'\n\nexport class ChecklistImporter extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: #fff;\n }\n\n ox-grist {\n flex: 1;\n }\n\n .button-container {\n display: flex;\n margin-left: auto;\n padding: var(--padding-default);\n }\n\n md-elevated-button {\n margin-left: var(--margin-default);\n }\n `\n ]\n\n @state() private checklists: any[] = []\n @state() private columns = {\n list: { fields: ['name', 'description'] },\n pagination: { infinite: true },\n columns: [\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n width: 200\n },\n {\n type: 'checkbox',\n name: 'active',\n header: i18next.t('field.active'),\n width: 60\n }\n ]\n }\n\n render() {\n return html`\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.columns}\n .data=${{\n records: this.checklists\n }}\n ></ox-grist>\n\n <div class=\"button-container\">\n <md-elevated-button raised @click=\"${this.save.bind(this)}\">${i18next.t('button.save')}</md-elevated-button>\n </div>\n `\n }\n\n private async save() {\n const response = await client.mutate({\n mutation: gql`\n mutation importChecklists($checklists: [ChecklistPatch!]!) {\n importChecklists(checklists: $checklists)\n }\n `,\n variables: { checklists: this.checklists }\n })\n\n if (response.errors?.length) return\n\n this.dispatchEvent(new CustomEvent('imported'))\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import '@material/web/icon/icon.js';
1
2
  import '@operato/data-grist';
2
3
  import { PageView } from '@operato/shell';
3
4
  import { FetchOption } from '@operato/data-grist';
@@ -1,4 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/icon/icon.js';
2
3
  import '@operato/data-grist';
3
4
  import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles';
4
5
  import { PageView, store } from '@operato/shell';
@@ -55,11 +56,7 @@ let ChecklistListPage = class ChecklistListPage extends connect(store)(localize(
55
56
  render() {
56
57
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID');
57
58
  return html `
58
- <ox-grist
59
- .mode=${mode}
60
- .config=${this.gristConfig}
61
- .fetchHandler=${this.fetchHandler.bind(this)}
62
- >
59
+ <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
63
60
  <div slot="headroom">
64
61
  <div id="filters">
65
62
  <ox-filters-form autofocus></ox-filters-form>
@@ -67,7 +64,7 @@ let ChecklistListPage = class ChecklistListPage extends connect(store)(localize(
67
64
 
68
65
  <div id="sorters">
69
66
  Sort
70
- <mwc-icon
67
+ <md-icon
71
68
  @click=${e => {
72
69
  const target = e.currentTarget;
73
70
  this.sortersControl.open({
@@ -75,7 +72,7 @@ let ChecklistListPage = class ChecklistListPage extends connect(store)(localize(
75
72
  top: target.offsetTop + target.offsetHeight
76
73
  });
77
74
  }}
78
- >expand_more</mwc-icon
75
+ >expand_more</md-icon
79
76
  >
80
77
  <ox-popup id="sorter-control">
81
78
  <ox-sorters-control> </ox-sorters-control>
@@ -83,9 +80,9 @@ let ChecklistListPage = class ChecklistListPage extends connect(store)(localize(
83
80
  </div>
84
81
 
85
82
  <div id="modes">
86
- <mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>
87
- <mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>
88
- <mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>
83
+ <md-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</md-icon>
84
+ <md-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</md-icon>
85
+ <md-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</md-icon>
89
86
  </div>
90
87
  </div>
91
88
  </ox-grist>
@@ -261,12 +258,7 @@ let ChecklistListPage = class ChecklistListPage extends connect(store)(localize(
261
258
  }
262
259
  async exportHandler() {
263
260
  const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records;
264
- const targetFieldSet = new Set([
265
- 'id',
266
- 'name',
267
- 'description',
268
- 'active'
269
- ]);
261
+ const targetFieldSet = new Set(['id', 'name', 'description', 'active']);
270
262
  return exportTargets.map(checklist => {
271
263
  let tempObj = {};
272
264
  for (const field of targetFieldSet) {