@things-factory/dataset 6.0.25 → 6.0.27

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 (154) hide show
  1. package/README.md +26 -11
  2. package/assets/images/ooc.png +0 -0
  3. package/assets/images/oos.png +0 -0
  4. package/client/{bootstrap.js → bootstrap.ts} +2 -0
  5. package/client/components/{data-entry-form.js → data-entry-form.ts} +30 -33
  6. package/client/components/data-ooc-activity-view.ts +153 -0
  7. package/client/pages/data-archive/{data-archive-list-page.js → data-archive-list-page.ts} +67 -53
  8. package/client/pages/data-archive/{data-archive-request-popup.js → data-archive-request-popup.ts} +41 -39
  9. package/client/pages/data-entry/{data-entry-list-page.js → data-entry-list-page.ts} +41 -38
  10. package/client/pages/data-key-set/{data-key-item-list.js → data-key-item-list.ts} +31 -39
  11. package/client/pages/data-key-set/data-key-set-importer.ts +95 -0
  12. package/client/pages/data-key-set/{data-key-set-list-page.js → data-key-set-list-page.ts} +54 -35
  13. package/client/pages/data-ooc/{data-ooc-list-page.js → data-ooc-list-page.ts} +50 -36
  14. package/client/pages/data-ooc/{data-ooc-view.js → data-ooc-view.ts} +66 -76
  15. package/client/pages/data-report/{data-report-embed-page.js → data-report-embed-page.ts} +25 -34
  16. package/client/pages/data-report/{data-report-list-page.js → data-report-list-page.ts} +49 -43
  17. package/client/pages/data-report/{data-report-samples-page.js → data-report-samples-page.ts} +29 -43
  18. package/client/pages/data-report/{jasper-report-oocs-page.js → jasper-report-oocs-page.ts} +22 -34
  19. package/client/pages/data-report/{jasper-report-samples-crosstab-page.js → jasper-report-samples-crosstab-page.ts} +22 -34
  20. package/client/pages/data-report/{jasper-report-samples-page.js → jasper-report-samples-page.ts} +22 -34
  21. package/client/pages/data-sample/{data-sample-list-page.js → data-sample-list-page.ts} +49 -36
  22. package/client/pages/data-sample/{data-sample-search-page.js → data-sample-search-page.ts} +53 -39
  23. package/client/pages/data-sample/{data-sample-view.js → data-sample-view.ts} +29 -33
  24. package/client/pages/data-sensor/{data-sensor-list-page.js → data-sensor-list-page.ts} +41 -35
  25. package/client/pages/data-set/{data-item-list.js → data-item-list.ts} +31 -37
  26. package/client/pages/data-set/data-set-importer.ts +96 -0
  27. package/client/pages/data-set/{data-set-list-page.js → data-set-list-page.ts} +62 -36
  28. package/client/{route.js → route.ts} +1 -1
  29. package/client/tsconfig.json +11 -0
  30. package/dist-client/bootstrap.d.ts +3 -0
  31. package/dist-client/bootstrap.js +14 -0
  32. package/dist-client/bootstrap.js.map +1 -0
  33. package/dist-client/components/data-entry-form.d.ts +15 -0
  34. package/dist-client/components/data-entry-form.js +83 -0
  35. package/dist-client/components/data-entry-form.js.map +1 -0
  36. package/dist-client/components/data-ooc-activity-view.d.ts +1 -0
  37. package/dist-client/components/data-ooc-activity-view.js +154 -0
  38. package/dist-client/components/data-ooc-activity-view.js.map +1 -0
  39. package/dist-client/index.d.ts +1 -0
  40. package/dist-client/index.js +2 -0
  41. package/dist-client/index.js.map +1 -0
  42. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +71 -0
  43. package/dist-client/pages/data-archive/data-archive-list-page.js +287 -0
  44. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -0
  45. package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +1 -0
  46. package/dist-client/pages/data-archive/data-archive-request-popup.js +161 -0
  47. package/dist-client/pages/data-archive/data-archive-request-popup.js.map +1 -0
  48. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +36 -0
  49. package/dist-client/pages/data-entry/data-entry-list-page.js +383 -0
  50. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -0
  51. package/dist-client/pages/data-key-set/data-key-item-list.d.ts +18 -0
  52. package/dist-client/pages/data-key-set/data-key-item-list.js +188 -0
  53. package/dist-client/pages/data-key-set/data-key-item-list.js.map +1 -0
  54. package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +9 -0
  55. package/dist-client/pages/data-key-set/data-key-set-importer.js +100 -0
  56. package/dist-client/pages/data-key-set/data-key-set-importer.js.map +1 -0
  57. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +60 -0
  58. package/dist-client/pages/data-key-set/data-key-set-list-page.js +450 -0
  59. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -0
  60. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +58 -0
  61. package/dist-client/pages/data-ooc/data-ooc-list-page.js +473 -0
  62. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -0
  63. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +1 -0
  64. package/dist-client/pages/data-ooc/data-ooc-view.js +179 -0
  65. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -0
  66. package/dist-client/pages/data-report/data-report-embed-page.d.ts +36 -0
  67. package/dist-client/pages/data-report/data-report-embed-page.js +101 -0
  68. package/dist-client/pages/data-report/data-report-embed-page.js.map +1 -0
  69. package/dist-client/pages/data-report/data-report-list-page.d.ts +36 -0
  70. package/dist-client/pages/data-report/data-report-list-page.js +431 -0
  71. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -0
  72. package/dist-client/pages/data-report/data-report-samples-page.d.ts +32 -0
  73. package/dist-client/pages/data-report/data-report-samples-page.js +164 -0
  74. package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -0
  75. package/dist-client/pages/data-report/jasper-report-oocs-page.d.ts +2 -0
  76. package/dist-client/pages/data-report/jasper-report-oocs-page.js +101 -0
  77. package/dist-client/pages/data-report/jasper-report-oocs-page.js.map +1 -0
  78. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.d.ts +2 -0
  79. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js +101 -0
  80. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js.map +1 -0
  81. package/dist-client/pages/data-report/jasper-report-samples-page.d.ts +2 -0
  82. package/dist-client/pages/data-report/jasper-report-samples-page.js +101 -0
  83. package/dist-client/pages/data-report/jasper-report-samples-page.js.map +1 -0
  84. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +58 -0
  85. package/dist-client/pages/data-sample/data-sample-list-page.js +412 -0
  86. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -0
  87. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +63 -0
  88. package/dist-client/pages/data-sample/data-sample-search-page.js +413 -0
  89. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -0
  90. package/dist-client/pages/data-sample/data-sample-view.d.ts +1 -0
  91. package/dist-client/pages/data-sample/data-sample-view.js +109 -0
  92. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -0
  93. package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +49 -0
  94. package/dist-client/pages/data-sensor/data-sensor-list-page.js +419 -0
  95. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -0
  96. package/dist-client/pages/data-set/data-item-list.d.ts +1 -0
  97. package/dist-client/pages/data-set/data-item-list.js +267 -0
  98. package/dist-client/pages/data-set/data-item-list.js.map +1 -0
  99. package/dist-client/pages/data-set/data-set-importer.d.ts +10 -0
  100. package/dist-client/pages/data-set/data-set-importer.js +103 -0
  101. package/dist-client/pages/data-set/data-set-importer.js.map +1 -0
  102. package/dist-client/pages/data-set/data-set-list-page.d.ts +71 -0
  103. package/dist-client/pages/data-set/data-set-list-page.js +759 -0
  104. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -0
  105. package/dist-client/route.d.ts +1 -0
  106. package/dist-client/route.js +47 -0
  107. package/dist-client/route.js.map +1 -0
  108. package/dist-client/tsconfig.tsbuildinfo +1 -0
  109. package/dist-server/controllers/activity-template/activity-ooc.js +59 -0
  110. package/dist-server/controllers/activity-template/activity-ooc.js.map +1 -0
  111. package/dist-server/controllers/create-data-sample.js +38 -1
  112. package/dist-server/controllers/create-data-sample.js.map +1 -1
  113. package/dist-server/controllers/index.js +5 -0
  114. package/dist-server/controllers/index.js.map +1 -1
  115. package/dist-server/index.js +1 -2
  116. package/dist-server/index.js.map +1 -1
  117. package/dist-server/routes.js +2 -2
  118. package/dist-server/routes.js.map +1 -1
  119. package/dist-server/service/data-set/data-set-query.js +5 -4
  120. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  121. package/dist-server/service/data-set/data-set.js +3 -0
  122. package/dist-server/service/data-set/data-set.js.map +1 -1
  123. package/dist-server/service/data-set-history/data-set-history-query.js +4 -3
  124. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  125. package/dist-server/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +15 -12
  127. package/server/controllers/activity-template/activity-ooc.ts +55 -0
  128. package/server/controllers/create-data-sample.ts +48 -3
  129. package/server/controllers/index.ts +9 -0
  130. package/server/index.ts +1 -2
  131. package/server/routes.ts +2 -4
  132. package/server/service/data-set/data-set-query.ts +5 -4
  133. package/server/service/data-set/data-set.ts +3 -0
  134. package/server/service/data-set-history/data-set-history-query.ts +4 -3
  135. package/server/tsconfig.json +10 -0
  136. package/things-factory.config.js +2 -2
  137. package/translations/en.json +1 -1
  138. package/translations/ko.json +1 -1
  139. package/translations/ms.json +1 -0
  140. package/translations/zh.json +1 -0
  141. package/client/pages/data-key-set/data-key-set-importer.js +0 -105
  142. package/client/pages/data-set/data-set-importer.js +0 -103
  143. package/dist-server/middlewares/index.js +0 -8
  144. package/dist-server/middlewares/index.js.map +0 -1
  145. package/dist-server/migrations/index.js +0 -12
  146. package/dist-server/migrations/index.js.map +0 -1
  147. package/server/middlewares/index.ts +0 -3
  148. package/server/migrations/index.ts +0 -9
  149. package/tsconfig.json +0 -9
  150. /package/assets/{data-report.jpg → images/data-report.jpg} +0 -0
  151. /package/assets/{data-samples.jpg → images/data-samples.jpg} +0 -0
  152. /package/assets/{diagram.jpg → images/dataset-diagram.jpg} +0 -0
  153. /package/assets/{glue-table-indices.png → images/glue-table-indices-for-dataset.png} +0 -0
  154. /package/client/{index.js → index.ts} +0 -0
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@things-factory/dataset",
3
- "version": "6.0.25",
3
+ "version": "6.0.27",
4
4
  "main": "dist-server/index.js",
5
- "browser": "client/index.js",
5
+ "browser": "dist-client/index.js",
6
6
  "things-factory": true,
7
7
  "author": "heartyoh <heartyoh@hatiolab.com>",
8
8
  "description": "module for handling data collection",
@@ -16,10 +16,12 @@
16
16
  "directory": "packages/dataset"
17
17
  },
18
18
  "scripts": {
19
- "build": "tsc --p tsconfig.json",
20
- "build:server": "npm run clean:server && tsc",
21
- "clean:server": "rm -rf dist-server",
22
- "clean": "npm run clean:server",
19
+ "build": "npm run build:server && npm run build:client",
20
+ "build:client": "npx tsc --p ./client/tsconfig.json",
21
+ "build:server": "npx tsc --p ./server/tsconfig.json",
22
+ "clean:client": "npx rimraf dist-client",
23
+ "clean:server": "npx rimraf dist-server",
24
+ "clean": "npm run clean:server && npm run clean:client",
23
25
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
24
26
  },
25
27
  "dependencies": {
@@ -33,14 +35,15 @@
33
35
  "@operato/shell": "^1.0.1",
34
36
  "@operato/styles": "^1.0.0",
35
37
  "@operato/utils": "^1.0.1",
36
- "@things-factory/auth-base": "^6.0.25",
37
- "@things-factory/aws-base": "^6.0.25",
38
- "@things-factory/board-service": "^6.0.25",
38
+ "@things-factory/auth-base": "^6.0.27",
39
+ "@things-factory/aws-base": "^6.0.27",
40
+ "@things-factory/board-service": "^6.0.27",
39
41
  "@things-factory/env": "^6.0.7",
40
- "@things-factory/shell": "^6.0.25",
41
- "@things-factory/work-shift": "^6.0.25",
42
+ "@things-factory/shell": "^6.0.27",
43
+ "@things-factory/work-shift": "^6.0.27",
44
+ "@things-factory/worklist": "^6.0.27",
42
45
  "cron-parser": "^4.3.0",
43
46
  "moment-timezone": "^0.5.40"
44
47
  },
45
- "gitHead": "8a987a42de944dc915b8cfddb047eb7bc0d4ba41"
48
+ "gitHead": "684784a4f3e450e9ce07dcd51db70b8a2d2c2a0f"
46
49
  }
@@ -0,0 +1,55 @@
1
+ export const ActivityOoc = {
2
+ name: 'OOC Review',
3
+ description: 'Task to take remedial action based on Out Of Control data',
4
+ release: '1.0.0',
5
+ provider: 'hatiolab.com',
6
+ category: 'quality',
7
+ activityType: 'user',
8
+ startable: true,
9
+ model: [
10
+ {
11
+ name: 'dataOocId',
12
+ description: 'OOC id',
13
+ tag: 'dataOocId',
14
+ hidden: true,
15
+ mandatory: true,
16
+ inout: 'in',
17
+ type: 'string',
18
+ options: {},
19
+ unit: null,
20
+ quantifier: [1],
21
+ spec: {}
22
+ },
23
+ {
24
+ name: 'Instruction',
25
+ description: 'Instructions for preventing OOC',
26
+ tag: 'instruction',
27
+ hidden: false,
28
+ mandatory: true,
29
+ inout: 'in',
30
+ type: 'textarea',
31
+ options: {},
32
+ unit: null,
33
+ quantifier: [1],
34
+ spec: {}
35
+ },
36
+ {
37
+ name: 'action',
38
+ description: 'Action Description',
39
+ tag: 'action',
40
+ hidden: false,
41
+ mandatory: true,
42
+ inout: 'out',
43
+ type: 'textarea',
44
+ options: {},
45
+ unit: null,
46
+ quantifier: [1],
47
+ spec: {}
48
+ }
49
+ ],
50
+ uiType: 'custom-element',
51
+ uiSource: 'data-ooc-activity-view',
52
+ reportType: 'page',
53
+ reportSource: 'data-ooc-report-page',
54
+ thumbnail: '/assets/images/ooc.png'
55
+ }
@@ -1,8 +1,8 @@
1
1
  import moment from 'moment-timezone'
2
2
  import { EntityManager } from 'typeorm'
3
3
 
4
- import { User } from '@things-factory/auth-base'
5
- import { Domain, getRedirectSubdomainPath, pubsub } from '@things-factory/shell'
4
+ import { User, Role } from '@things-factory/auth-base'
5
+ import { Domain, getRedirectSubdomainPath, getRepository, pubsub } from '@things-factory/shell'
6
6
  import { getWorkDateAndShift } from '@things-factory/work-shift'
7
7
 
8
8
  import { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc'
@@ -10,6 +10,9 @@ import { DataSample } from '../service/data-sample/data-sample'
10
10
  import { NewDataSample } from '../service/data-sample/data-sample-type'
11
11
  import { DataSet } from '../service/data-set/data-set'
12
12
  import { DataUseCase } from './data-use-case'
13
+ import { Activity } from '@things-factory/worklist'
14
+
15
+ import { draft } from '@things-factory/worklist/dist-server/controllers/activity-instance/draft'
13
16
 
14
17
  // See README.md at ## Data Samples
15
18
  process.env.TZ = 'UTC'
@@ -128,6 +131,48 @@ export async function createDataSample(
128
131
  state: DataOocStatus.CREATED
129
132
  })
130
133
 
134
+ // 여기쯤에서, worklist로 TODO로 보낸다.
135
+ // 입력담당역할에게 assign한다.
136
+ // 결재라인은 시설관리자을 포함한다. 결재라인을 dataset에 추가한다.
137
+ // Dataset용 Installable Activity 를 만든다.
138
+
139
+ const activity = (await tx.getRepository(Activity).findOneBy({
140
+ domain: { id: domain.id },
141
+ name: 'OOC Review'
142
+ })) as Activity
143
+
144
+ if (activity) {
145
+ const assignee =
146
+ dataSet.entryRoleId &&
147
+ (await tx.getRepository(Role)).findOneBy({ domain: { id: domain.id }, id: dataSet.entryRoleId })
148
+
149
+ const approver =
150
+ dataSet.supervisoryRoleId &&
151
+ (await tx.getRepository(Role)).findOneBy({ domain: { id: domain.id }, id: dataSet.supervisoryRoleId })
152
+
153
+ const assignees = dataSet.entryRoleId ? [{ type: 'Role', value: dataSet.entryRoleId, assignee }] : []
154
+ const approvalLine = dataSet.supervisoryRoleId
155
+ ? [{ type: 'Role', value: dataSet.supervisoryRoleId, approver }]
156
+ : []
157
+
158
+ const activityInstance = {
159
+ name: `[OOC] ${dataSet.name}`,
160
+ activityId: activity.id,
161
+ description: `Data OOC occurred on '${dataSet.name}'`,
162
+ dueAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
163
+ input: {
164
+ dataOocId: dataOoc.id
165
+ },
166
+ assignees,
167
+ approvalLine
168
+ }
169
+
170
+ draft(activityInstance, context)
171
+ } else {
172
+ console.warn('OOC Review Activity not installed.')
173
+ }
174
+ //
175
+
131
176
  pubsub.publish('data-ooc', {
132
177
  dataOoc,
133
178
  supervisoryRoleId: dataSet.supervisoryRoleId
@@ -137,7 +182,7 @@ export async function createDataSample(
137
182
  notification: {
138
183
  domain,
139
184
  type: 'error',
140
- title: `Data OOC occurred on '${dataSet.name}'`,
185
+ title: `[OOC] ${dataSet.name}`,
141
186
  body: `Data OOC occurred on '${dataSet.name}'`,
142
187
  url: getRedirectSubdomainPath(context, domain.subdomain, `/data-ooc/${dataOoc.id}`),
143
188
  timestamp: collectedAt
@@ -1,2 +1,11 @@
1
+ import { ActivityInstallations } from '@things-factory/worklist'
2
+
3
+ import { ActivityOoc } from './activity-template/activity-ooc'
4
+
5
+ /* activity templates installation */
6
+ ;[ActivityOoc].forEach(template => {
7
+ ActivityInstallations.installActivityTemplate(template)
8
+ })
9
+
1
10
  export * from './create-data-sample'
2
11
  export * from './data-use-case'
package/server/index.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import './routes'
2
+ // import './controllers'
2
3
 
3
4
  export * from './controllers'
4
- export * from './migrations'
5
- export * from './middlewares'
6
5
  export * from './service'
7
6
 
8
7
  export * from './service/data-spec/data-spec-manager'
package/server/routes.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { getConnection } from 'typeorm'
2
-
1
+ import { getDataSource } from '@things-factory/shell'
3
2
  import { User } from '@things-factory/auth-base'
4
3
 
5
4
  import { createDataSample } from './controllers/create-data-sample'
@@ -23,7 +22,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
23
22
  }
24
23
 
25
24
  // make new data-sample
26
- await getConnection().transaction(async tx => {
25
+ await getDataSource().transaction(async tx => {
27
26
  // find sensor through deviceId
28
27
  const sensor = await tx.getRepository(DataSensor).findOne({
29
28
  where: { deviceId },
@@ -99,5 +98,4 @@ process.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRo
99
98
  let { reportType } = context.params
100
99
  context.body = `${reportType} Not Implemented.`
101
100
  })
102
-
103
101
  })
@@ -150,9 +150,10 @@ export class DataSetQuery {
150
150
  async dataKeySet(@Root() dataSet: DataSet) {
151
151
  return (
152
152
  dataSet.dataKeySet ||
153
- (await getRepository(DataKeySet).findOneBy({
154
- id: dataSet.dataKeySetId
155
- }))
153
+ (dataSet.dataKeySetId &&
154
+ (await getRepository(DataKeySet).findOneBy({
155
+ id: dataSet.dataKeySetId
156
+ })))
156
157
  )
157
158
  }
158
159
 
@@ -174,7 +175,7 @@ export class DataSetQuery {
174
175
  @FieldResolver(type => Date, { nullable: true })
175
176
  async latestCollectedAt(@Root() dataSet: DataSet): Promise<Date> {
176
177
  const sample = await getRepository(DataSample).findOne({
177
- select: ['collectedAt'],
178
+ select: ['id', 'collectedAt'],
178
179
  where: { dataSet: { id: dataSet.id } },
179
180
  order: { collectedAt: 'DESC' }
180
181
  })
@@ -20,6 +20,7 @@ import { DataItem } from './data-item-type'
20
20
  export enum DataSetEntryType {
21
21
  Generated = 'generated',
22
22
  Board = 'board',
23
+ CustomElement = 'custom-element',
23
24
  Page = 'page',
24
25
  ExternalURL = 'external',
25
26
  Jasper = 'jasper',
@@ -34,6 +35,7 @@ registerEnumType(DataSetEntryType, {
34
35
  export enum DataSetMonitorType {
35
36
  Generated = 'generated',
36
37
  Board = 'board',
38
+ CustomElement = 'custom-element',
37
39
  Page = 'page',
38
40
  ExternalURL = 'external'
39
41
  }
@@ -46,6 +48,7 @@ registerEnumType(DataSetMonitorType, {
46
48
  export enum DataSetReportType {
47
49
  Generated = 'generated',
48
50
  Board = 'board',
51
+ CustomElement = 'custom-element',
49
52
  Page = 'page',
50
53
  ExternalURL = 'external'
51
54
  }
@@ -83,9 +83,10 @@ export class DataSetHistoryQuery {
83
83
  async dataKeySet(@Root() dataSet: DataSet) {
84
84
  return (
85
85
  dataSet.dataKeySet ||
86
- (await getRepository(DataKeySet).findOneBy({
87
- id: dataSet.dataKeySetId
88
- }))
86
+ (dataSet.dataKeySetId &&
87
+ (await getRepository(DataKeySet).findOneBy({
88
+ id: dataSet.dataKeySetId
89
+ })))
89
90
  )
90
91
  }
91
92
 
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../tsconfig-base.json",
3
+ "compilerOptions": {
4
+ "strict": false,
5
+ "module": "commonjs",
6
+ "outDir": "../dist-server",
7
+ "baseUrl": "./"
8
+ },
9
+ "include": ["./**/*"]
10
+ }
@@ -1,5 +1,5 @@
1
- import bootstrap from './client/bootstrap'
2
- import route from './client/route'
1
+ import bootstrap from './dist-client/bootstrap'
2
+ import route from './dist-client/route'
3
3
 
4
4
  export default {
5
5
  route,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "button.corrected": "corrected",
3
- "button.request": "request",
3
+ "button.request-archive": "request archive",
4
4
  "button.reviewed": "reviewed",
5
5
  "field.appliance": "appliance",
6
6
  "field.collected_at": "collected at",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "button.corrected": "조치완료",
3
3
  "button.reviewed": "검토완료",
4
- "button.request": "요청",
4
+ "button.request-archive": "자료보관 신규 요청",
5
5
  "field.appliance": "어플라이언스",
6
6
  "field.collected_at": "수집일시",
7
7
  "field.corrected-at": "조치 시간",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "button.corrected": "corrected",
3
+ "button.request-archive": "request archive",
3
4
  "button.reviewed": "reviewed",
4
5
  "field.appliance": "appliance",
5
6
  "field.collected_at": "collected at",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "button.corrected": "corrected",
3
+ "button.request-archive": "request archive",
3
4
  "button.reviewed": "reviewed",
4
5
  "field.appliance": "appliance",
5
6
  "field.collected_at": "collected at",
@@ -1,105 +0,0 @@
1
- import '@operato/data-grist'
2
-
3
- import gql from 'graphql-tag'
4
- import { css, html, LitElement } from 'lit'
5
-
6
- import { client } from '@operato/graphql'
7
- import { i18next } from '@operato/i18n'
8
- import { isMobileDevice } from '@operato/utils'
9
-
10
- export class DataKeySetImporter extends LitElement {
11
- static get properties() {
12
- return {
13
- columns: Object,
14
- dataKeySets: Array
15
- }
16
- }
17
-
18
- constructor() {
19
- super()
20
- this.columns = {
21
- list: { fields: ['name', 'description'] },
22
- pagination: { infinite: true },
23
- columns: [
24
- {
25
- type: 'string',
26
- name: 'name',
27
- header: i18next.t('field.name'),
28
- width: 150
29
- },
30
- {
31
- type: 'string',
32
- name: 'description',
33
- header: i18next.t('field.description'),
34
- width: 200
35
- },
36
- {
37
- type: 'checkbox',
38
- name: 'active',
39
- header: i18next.t('field.active'),
40
- width: 60
41
- }
42
- ]
43
- }
44
- }
45
-
46
- static get styles() {
47
- return [
48
- css`
49
- :host {
50
- display: flex;
51
- flex-direction: column;
52
-
53
- background-color: #fff;
54
- }
55
-
56
- ox-grist {
57
- flex: 1;
58
- }
59
-
60
- .button-container {
61
- display: flex;
62
- margin-left: auto;
63
- padding: var(--padding-default);
64
- }
65
-
66
- mwc-button {
67
- margin-left: var(--margin-default);
68
- }
69
- `
70
- ]
71
- }
72
-
73
- render() {
74
- return html`
75
- <ox-grist
76
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
77
- .config=${this.columns}
78
- .data=${{
79
- records: this.dataKeySets
80
- }}
81
- ></ox-grist>
82
-
83
- <div class="button-container">
84
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
85
- </div>
86
- `
87
- }
88
-
89
- async save() {
90
- const response = await client.mutate({
91
- mutation: gql`
92
- mutation importDataKeySets($dataKeySets: [DataKeySetPatch!]!) {
93
- importDataKeySets(dataKeySets: $dataKeySets)
94
- }
95
- `,
96
- variables: { dataKeySets: this.dataKeySets }
97
- })
98
-
99
- if (response.errors?.length) return
100
-
101
- this.dispatchEvent(new CustomEvent('imported'))
102
- }
103
- }
104
-
105
- window.customElements.define('data-key-set-importer', DataKeySetImporter)
@@ -1,103 +0,0 @@
1
- import '@operato/data-grist'
2
-
3
- import gql from 'graphql-tag'
4
- import { css, html, LitElement } from 'lit'
5
-
6
- import { client } from '@operato/graphql'
7
- import { i18next } from '@operato/i18n'
8
- import { isMobileDevice } from '@operato/utils'
9
-
10
- export class DataSetImporter extends LitElement {
11
- static get properties() {
12
- return {
13
- columns: Object,
14
- scenarios: Array
15
- }
16
- }
17
-
18
- constructor() {
19
- super()
20
- this.columns = {
21
- list: { fields: ['name', 'description'] },
22
- pagination: { infinite: true },
23
- columns: [
24
- {
25
- type: 'string',
26
- name: 'name',
27
- header: i18next.t('field.name'),
28
- width: 150
29
- },
30
- {
31
- type: 'string',
32
- name: 'description',
33
- header: i18next.t('field.description'),
34
- width: 200
35
- },
36
- {
37
- type: 'checkbox',
38
- name: 'active',
39
- header: i18next.t('field.active'),
40
- width: 60
41
- }
42
- ]
43
- }
44
- }
45
-
46
- static get styles() {
47
- return [
48
- css`
49
- :host {
50
- display: flex;
51
- flex-direction: column;
52
-
53
- background-color: #fff;
54
- }
55
-
56
- ox-grist {
57
- flex: 1;
58
- }
59
-
60
- .button-container {
61
- display: flex;
62
- margin-left: auto;
63
- padding: var(--padding-default);
64
- }
65
-
66
- mwc-button {
67
- margin-left: var(--margin-default);
68
- }
69
- `
70
- ]
71
- }
72
-
73
- render() {
74
- return html`
75
- <ox-grist
76
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
77
- .config=${this.columns}
78
- .data="${{ records: this.scenarios }}"
79
- ></ox-grist>
80
-
81
- <div class="button-container">
82
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
83
- </div>
84
- `
85
- }
86
-
87
- async save() {
88
- const response = await client.mutate({
89
- mutation: gql`
90
- mutation importDataSets($dataSets: [DataSetPatch!]!) {
91
- importDataSets(dataSets: $dataSets)
92
- }
93
- `,
94
- variables: { dataSets: this.dataSets }
95
- })
96
-
97
- if (response.errors?.length) return
98
-
99
- this.dispatchEvent(new CustomEvent('imported'))
100
- }
101
- }
102
-
103
- customElements.define('data-set-importer', DataSetImporter)
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initMiddlewares = void 0;
4
- function initMiddlewares(app) {
5
- /* can add middlewares into app */
6
- }
7
- exports.initMiddlewares = initMiddlewares;
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/middlewares/index.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe,CAAC,GAAG;IACjC,kCAAkC;AACpC,CAAC;AAFD,0CAEC","sourcesContent":["export function initMiddlewares(app) {\n /* can add middlewares into app */\n}\n"]}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.migrations = void 0;
4
- const glob = require('glob');
5
- const path = require('path');
6
- exports.migrations = [];
7
- glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {
8
- if (file.indexOf('index.js') !== -1)
9
- return;
10
- exports.migrations = exports.migrations.concat(Object.values(require(path.resolve(file))) || []);
11
- });
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/migrations/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB,QAAA,UAAU,GAAG,EAAE,CAAA;AAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAS,IAAI;IACzE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAM;IAC3C,kBAAU,GAAG,kBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA","sourcesContent":["const glob = require('glob')\nconst path = require('path')\n\nexport var migrations = []\n\nglob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {\n if (file.indexOf('index.js') !== -1) return\n migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])\n})\n"]}
@@ -1,3 +0,0 @@
1
- export function initMiddlewares(app) {
2
- /* can add middlewares into app */
3
- }
@@ -1,9 +0,0 @@
1
- const glob = require('glob')
2
- const path = require('path')
3
-
4
- export var migrations = []
5
-
6
- glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {
7
- if (file.indexOf('index.js') !== -1) return
8
- migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])
9
- })
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "../tsconfig-base.json",
3
- "compilerOptions": {
4
- "outDir": "./dist-server",
5
- "baseUrl": "./"
6
- },
7
- "include": ["./server/**/*"],
8
- "exclude": ["**/*.spec.ts"]
9
- }
File without changes