@things-factory/dataset 6.2.118 → 6.2.120
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.
- package/client/pages/data-ooc/data-ooc-list-page.ts +22 -5
- package/client/pages/data-sample/data-sample-list-page.ts +23 -6
- package/client/pages/data-sensor/data-sensor-list-page.ts +28 -6
- package/dist-client/pages/data-ooc/data-ooc-list-page.js +22 -5
- package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-list-page.js +23 -6
- package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
- package/dist-client/pages/data-sensor/data-sensor-list-page.js +28 -6
- package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/activities/activity-data-collect.js.map +1 -1
- package/dist-server/activities/activity-ooc-review.js +1 -1
- package/dist-server/activities/activity-ooc-review.js.map +1 -1
- package/dist-server/controllers/issue-collect-data.js +55 -0
- package/dist-server/controllers/issue-collect-data.js.map +1 -0
- package/dist-server/engine/index.js +4 -0
- package/dist-server/engine/index.js.map +1 -0
- package/dist-server/engine/task/create-data-sample.js +80 -0
- package/dist-server/engine/task/create-data-sample.js.map +1 -0
- package/dist-server/engine/task/index.js +5 -0
- package/dist-server/engine/task/index.js.map +1 -0
- package/dist-server/engine/task/issue-collect-data.js +40 -0
- package/dist-server/engine/task/issue-collect-data.js.map +1 -0
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/routes.js +36 -65
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +2 -1
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor-query.js +16 -1
- package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor-type.js +8 -0
- package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor.js +15 -1
- package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +2 -2
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/dataset/task/create-data-sample.ja.md +28 -0
- package/helps/dataset/task/create-data-sample.ko.md +28 -0
- package/helps/dataset/task/create-data-sample.md +28 -0
- package/helps/dataset/task/create-data-sample.ms.md +30 -0
- package/helps/dataset/task/create-data-sample.zh.md +28 -0
- package/helps/dataset/task/issue-collect-data.ja.md +35 -0
- package/helps/dataset/task/issue-collect-data.ko.md +32 -0
- package/helps/dataset/task/issue-collect-data.md +32 -0
- package/helps/dataset/task/issue-collect-data.ms.md +34 -0
- package/helps/dataset/task/issue-collect-data.zh.md +32 -0
- package/package.json +11 -11
- package/server/activities/activity-data-collect.ts +3 -11
- package/server/activities/activity-ooc-review.ts +1 -1
- package/server/controllers/issue-collect-data.ts +61 -0
- package/server/engine/index.ts +1 -0
- package/server/engine/task/create-data-sample.ts +92 -0
- package/server/engine/task/index.ts +2 -0
- package/server/engine/task/issue-collect-data.ts +45 -0
- package/server/index.ts +1 -0
- package/server/routes.ts +47 -76
- package/server/service/data-sample/data-sample.ts +3 -2
- package/server/service/data-sensor/data-sensor-query.ts +13 -1
- package/server/service/data-sensor/data-sensor-type.ts +6 -0
- package/server/service/data-sensor/data-sensor.ts +13 -11
- package/server/service/data-set/data-set-query.ts +7 -7
- package/translations/en.json +6 -0
- package/translations/ja.json +6 -0
- package/translations/ko.json +6 -0
- package/translations/ms.json +6 -0
- package/translations/zh.json +6 -0
package/server/routes.ts
CHANGED
@@ -2,13 +2,13 @@ import { In } from 'typeorm'
|
|
2
2
|
|
3
3
|
import { Domain, getDataSource } from '@things-factory/shell'
|
4
4
|
import { User } from '@things-factory/auth-base'
|
5
|
-
import {
|
6
|
-
import { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'
|
5
|
+
import { runScenario } from '@things-factory/integration-base'
|
7
6
|
import { ScheduleRegisterRequest } from '@things-factory/scheduler-client'
|
8
7
|
|
9
8
|
import { createDataSample } from './controllers/create-data-sample'
|
10
9
|
import { renderJasperReport } from './controllers/jasper-report'
|
11
10
|
import { renderShinyReport } from './controllers/shiny-report'
|
11
|
+
import { issueCollectData } from './controllers/issue-collect-data'
|
12
12
|
import { DataSensor } from './service/data-sensor/data-sensor'
|
13
13
|
import { DataSet } from './service/data-set/data-set'
|
14
14
|
|
@@ -23,8 +23,8 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
23
23
|
globalPublicRouter.post('/sensor-data', async (context, next) => {
|
24
24
|
// 데이타 검증
|
25
25
|
const { deviceId, data, rawData, timestamp = Date.now() } = context.request.body
|
26
|
-
if (!deviceId
|
27
|
-
throw new Error(`deviceId(${deviceId})
|
26
|
+
if (!deviceId) {
|
27
|
+
throw new Error(`The deviceId(${deviceId}) property are mandatory`)
|
28
28
|
}
|
29
29
|
|
30
30
|
// make new data-sample
|
@@ -32,7 +32,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
32
32
|
// find sensor through deviceId
|
33
33
|
const sensor = await tx.getRepository(DataSensor).findOne({
|
34
34
|
where: { deviceId },
|
35
|
-
relations: ['domain', 'appliance', 'dataSet']
|
35
|
+
relations: ['domain', 'appliance', 'dataSet', 'decoder']
|
36
36
|
})
|
37
37
|
|
38
38
|
if (!sensor) {
|
@@ -47,18 +47,18 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
47
47
|
throw new Error(`Appliance of the sensor given deviceId(${deviceId}) is not set up`)
|
48
48
|
}
|
49
49
|
|
50
|
-
if (!sensor.dataSet) {
|
51
|
-
|
52
|
-
}
|
50
|
+
// if (!sensor.dataSet) {
|
51
|
+
// throw new Error(`DataSet of the sensor given deviceId(${deviceId}) is not set up`)
|
52
|
+
// }
|
53
53
|
|
54
54
|
const domain = sensor.domain
|
55
55
|
const dataSet = sensor.dataSet
|
56
|
-
const user: User = await tx.getRepository(User).findOne({
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
})
|
56
|
+
// const user: User = await tx.getRepository(User).findOne({
|
57
|
+
// where: {
|
58
|
+
// reference: sensor.appliance.id,
|
59
|
+
// userType: 'appliance'
|
60
|
+
// }
|
61
|
+
// })
|
62
62
|
|
63
63
|
context.state = {
|
64
64
|
...context.state,
|
@@ -66,19 +66,40 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
66
66
|
tx
|
67
67
|
}
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
var decoded
|
70
|
+
if (sensor.decoder) {
|
71
|
+
const { name: scenarioName } = sensor.decoder
|
72
|
+
const variables = {
|
73
|
+
dataSensor: sensor,
|
74
|
+
source: deviceId,
|
72
75
|
data,
|
73
76
|
rawData,
|
74
|
-
|
75
|
-
|
76
|
-
},
|
77
|
-
context
|
78
|
-
)
|
79
|
-
})
|
77
|
+
timestamp
|
78
|
+
}
|
80
79
|
|
81
|
-
|
80
|
+
decoded = (await runScenario(null, scenarioName, variables, context))?.result
|
81
|
+
}
|
82
|
+
|
83
|
+
if (dataSet) {
|
84
|
+
await createDataSample(
|
85
|
+
{
|
86
|
+
dataSet,
|
87
|
+
data,
|
88
|
+
rawData,
|
89
|
+
source: deviceId,
|
90
|
+
collectedAt: new Date(timestamp),
|
91
|
+
...decoded
|
92
|
+
},
|
93
|
+
context
|
94
|
+
)
|
95
|
+
}
|
96
|
+
|
97
|
+
context.status = 200
|
98
|
+
context.body = {
|
99
|
+
data,
|
100
|
+
...decoded
|
101
|
+
}
|
102
|
+
})
|
82
103
|
})
|
83
104
|
|
84
105
|
/* When a callback occurs from the scheduler when a scheduled dataset is on schedule, data collection task for the dataset should be issued. */
|
@@ -95,55 +116,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
95
116
|
throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`)
|
96
117
|
}
|
97
118
|
|
98
|
-
await
|
99
|
-
const domain = await tx.getRepository(Domain).findOneBy({ id: domainId })
|
100
|
-
|
101
|
-
if (!domain) {
|
102
|
-
throw new Error(`domain(${domainId}) not found`)
|
103
|
-
}
|
104
|
-
|
105
|
-
const dataSet = await tx
|
106
|
-
.getRepository(DataSet)
|
107
|
-
.findOne({ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId } })
|
108
|
-
|
109
|
-
const activity = (await tx.getRepository(Activity).findOneBy({
|
110
|
-
domain: { id: domainId },
|
111
|
-
name: 'Collect Data'
|
112
|
-
})) as Activity
|
113
|
-
|
114
|
-
if (activity) {
|
115
|
-
const { assignees } = dataSet
|
116
|
-
|
117
|
-
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset assignees에게 할당한다. */
|
118
|
-
if (assignees && assignees instanceof Array && assignees.length > 0) {
|
119
|
-
const activityInstance = {
|
120
|
-
name: `[Data 수집] ${dataSet.name}`,
|
121
|
-
description: dataSet.description,
|
122
|
-
activityId: activity.id,
|
123
|
-
dueAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
|
124
|
-
input: {
|
125
|
-
dataSetId: dataSet.id,
|
126
|
-
dataSetName: dataSet.name
|
127
|
-
},
|
128
|
-
assignees
|
129
|
-
}
|
130
|
-
|
131
|
-
context.state = {
|
132
|
-
...context.state,
|
133
|
-
domain,
|
134
|
-
tx
|
135
|
-
}
|
136
|
-
|
137
|
-
await issue(activityInstance, context)
|
138
|
-
} else {
|
139
|
-
throw new Error(
|
140
|
-
`Assignees not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`
|
141
|
-
)
|
142
|
-
}
|
143
|
-
} else {
|
144
|
-
throw new Error(`Data Collect Activity is not installed.`)
|
145
|
-
}
|
146
|
-
})
|
119
|
+
await issueCollectData(domainId, dataSetId, context)
|
147
120
|
|
148
121
|
context.status = 200
|
149
122
|
})
|
@@ -169,9 +142,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
169
142
|
throw new Error(`domain(${domainId}) not found`)
|
170
143
|
}
|
171
144
|
|
172
|
-
const dataSet = await tx
|
173
|
-
.getRepository(DataSet)
|
174
|
-
.findOne({ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId } })
|
145
|
+
const dataSet = await tx.getRepository(DataSet).findOne({ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId } })
|
175
146
|
|
176
147
|
// do what you gotta do
|
177
148
|
})
|
@@ -3,7 +3,7 @@ import { Column, CreateDateColumn, Entity, Index, JoinColumn, ManyToOne, OneToOn
|
|
3
3
|
|
4
4
|
import { User } from '@things-factory/auth-base'
|
5
5
|
import { config } from '@things-factory/env'
|
6
|
-
import { Domain, ScalarObject } from '@things-factory/shell'
|
6
|
+
import { Domain, ScalarObject, json5Transformer } from '@things-factory/shell'
|
7
7
|
import { ActivityInstance } from '@things-factory/worklist'
|
8
8
|
|
9
9
|
import { DataItem } from '../data-set/data-item-type'
|
@@ -74,7 +74,8 @@ export class DataSample {
|
|
74
74
|
|
75
75
|
@Column({
|
76
76
|
nullable: true,
|
77
|
-
type: DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? 'longtext' : DATABASE_TYPE == 'oracle' ? 'clob' : 'varchar'
|
77
|
+
type: DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? 'longtext' : DATABASE_TYPE == 'oracle' ? 'clob' : 'varchar',
|
78
|
+
transformer: json5Transformer
|
78
79
|
})
|
79
80
|
@Field({ nullable: true })
|
80
81
|
rawData?: string
|
@@ -2,6 +2,7 @@ import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graph
|
|
2
2
|
|
3
3
|
import { Appliance, User } from '@things-factory/auth-base'
|
4
4
|
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
5
|
+
import { Scenario } from '@things-factory/integration-base'
|
5
6
|
|
6
7
|
import { DataSet } from '../data-set/data-set'
|
7
8
|
import { DataSensor } from './data-sensor'
|
@@ -39,11 +40,22 @@ export class DataSensorQuery {
|
|
39
40
|
return dataSensor.applianceId && (await getRepository(Appliance).findOneBy({ id: dataSensor.applianceId }))
|
40
41
|
}
|
41
42
|
|
42
|
-
@FieldResolver(type =>
|
43
|
+
@FieldResolver(type => DataSet)
|
43
44
|
async dataSet(@Root() dataSensor: DataSensor): Promise<DataSet> {
|
44
45
|
return dataSensor.dataSetId && (await getRepository(DataSet).findOneBy({ id: dataSensor.dataSetId }))
|
45
46
|
}
|
46
47
|
|
48
|
+
@FieldResolver(type => Scenario)
|
49
|
+
async decoder(@Root() dataSensor: DataSensor): Promise<Scenario> {
|
50
|
+
return (
|
51
|
+
dataSensor.decoder ||
|
52
|
+
(dataSensor.decoderId &&
|
53
|
+
(await getRepository(Scenario).findOneBy({
|
54
|
+
id: dataSensor.decoderId
|
55
|
+
})))
|
56
|
+
)
|
57
|
+
}
|
58
|
+
|
47
59
|
@FieldResolver(type => Domain)
|
48
60
|
async domain(@Root() dataSensor: DataSensor): Promise<Domain> {
|
49
61
|
return dataSensor.domainId && (await getRepository(Domain).findOneBy({ id: dataSensor.domainId }))
|
@@ -41,6 +41,9 @@ export class NewDataSensor {
|
|
41
41
|
|
42
42
|
@Field(type => ObjectRef, { nullable: true })
|
43
43
|
dataSet?: ObjectRef
|
44
|
+
|
45
|
+
@Field(type => ObjectRef, { nullable: true })
|
46
|
+
decoder?: ObjectRef
|
44
47
|
}
|
45
48
|
|
46
49
|
@InputType()
|
@@ -84,6 +87,9 @@ export class DataSensorPatch {
|
|
84
87
|
@Field(type => ObjectRef, { nullable: true })
|
85
88
|
dataSet?: ObjectRef
|
86
89
|
|
90
|
+
@Field(type => ObjectRef, { nullable: true })
|
91
|
+
decoder?: ObjectRef
|
92
|
+
|
87
93
|
@Field()
|
88
94
|
cuFlag: string
|
89
95
|
}
|
@@ -1,17 +1,9 @@
|
|
1
1
|
import { Field, ID, ObjectType } from 'type-graphql'
|
2
|
-
import {
|
3
|
-
Column,
|
4
|
-
CreateDateColumn,
|
5
|
-
Entity,
|
6
|
-
Index,
|
7
|
-
ManyToOne,
|
8
|
-
PrimaryGeneratedColumn,
|
9
|
-
RelationId,
|
10
|
-
UpdateDateColumn
|
11
|
-
} from 'typeorm'
|
2
|
+
import { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'
|
12
3
|
|
13
|
-
import { Appliance, User } from '@things-factory/auth-base'
|
14
4
|
import { Domain } from '@things-factory/shell'
|
5
|
+
import { Appliance, User } from '@things-factory/auth-base'
|
6
|
+
import { Scenario } from '@things-factory/integration-base'
|
15
7
|
|
16
8
|
import { DataSet } from '../data-set/data-set'
|
17
9
|
|
@@ -91,6 +83,16 @@ export class DataSensor {
|
|
91
83
|
@RelationId((dataSensor: DataSensor) => dataSensor.dataSet)
|
92
84
|
dataSetId?: string
|
93
85
|
|
86
|
+
@ManyToOne(type => Scenario, { nullable: true })
|
87
|
+
@Field(type => Scenario, {
|
88
|
+
nullable: true,
|
89
|
+
description: 'The decoder scenario that automatically executes based on the trigger of raw data collection'
|
90
|
+
})
|
91
|
+
decoder?: Scenario
|
92
|
+
|
93
|
+
@RelationId((dataSensor: DataSensor) => dataSensor.decoder)
|
94
|
+
decoderId?: string
|
95
|
+
|
94
96
|
@CreateDateColumn()
|
95
97
|
@Field({ nullable: true })
|
96
98
|
createdAt?: Date
|
@@ -243,21 +243,21 @@ export class DataSetQuery {
|
|
243
243
|
}
|
244
244
|
|
245
245
|
@FieldResolver(type => Board, { nullable: true })
|
246
|
-
async entryBoard(@Root() dataSet: DataSet) {
|
246
|
+
async entryBoard(@Root() dataSet: DataSet): Promise<Board> {
|
247
247
|
if (dataSet.entryType == 'board' && dataSet.entryView) {
|
248
248
|
return await getRepository(Board).findOneBy({ id: dataSet.entryView })
|
249
249
|
}
|
250
250
|
}
|
251
251
|
|
252
252
|
@FieldResolver(type => Board, { nullable: true })
|
253
|
-
async monitorBoard(@Root() dataSet: DataSet) {
|
253
|
+
async monitorBoard(@Root() dataSet: DataSet): Promise<Board> {
|
254
254
|
if (dataSet.monitorType == 'board' && dataSet.monitorView) {
|
255
255
|
return await getRepository(Board).findOneBy({ id: dataSet.monitorView })
|
256
256
|
}
|
257
257
|
}
|
258
258
|
|
259
259
|
@FieldResolver(type => DataKeySet, { nullable: true })
|
260
|
-
async dataKeySet(@Root() dataSet: DataSet) {
|
260
|
+
async dataKeySet(@Root() dataSet: DataSet): Promise<DataKeySet> {
|
261
261
|
return (
|
262
262
|
dataSet.dataKeySet ||
|
263
263
|
(dataSet.dataKeySetId &&
|
@@ -267,8 +267,8 @@ export class DataSetQuery {
|
|
267
267
|
)
|
268
268
|
}
|
269
269
|
|
270
|
-
@FieldResolver(type =>
|
271
|
-
async normalScenario(@Root() dataSet: DataSet): Promise<
|
270
|
+
@FieldResolver(type => Scenario)
|
271
|
+
async normalScenario(@Root() dataSet: DataSet): Promise<Scenario> {
|
272
272
|
return (
|
273
273
|
dataSet.normalScenario ||
|
274
274
|
(dataSet.normalScenarioId &&
|
@@ -278,8 +278,8 @@ export class DataSetQuery {
|
|
278
278
|
)
|
279
279
|
}
|
280
280
|
|
281
|
-
@FieldResolver(type =>
|
282
|
-
async outlierScenario(@Root() dataSet: DataSet): Promise<
|
281
|
+
@FieldResolver(type => Scenario)
|
282
|
+
async outlierScenario(@Root() dataSet: DataSet): Promise<Scenario> {
|
283
283
|
return (
|
284
284
|
dataSet.outlierScenario ||
|
285
285
|
(dataSet.outlierScenarioId &&
|
package/translations/en.json
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
"field.data-sample": "data sample",
|
28
28
|
"field.data-set": "data set",
|
29
29
|
"field.date": "date",
|
30
|
+
"field.decoder": "decoder",
|
31
|
+
"field.decoder-scenario": "decoder scenario",
|
30
32
|
"field.device-id": "device id",
|
31
33
|
"field.download-url": "download url",
|
32
34
|
"field.entry-role": "entry role",
|
@@ -85,6 +87,7 @@
|
|
85
87
|
"label.corrective action": "corrective action",
|
86
88
|
"label.corrective instruction": "corrective instruction",
|
87
89
|
"label.critical-limits": "critical limits",
|
90
|
+
"label.data-set": "data set",
|
88
91
|
"label.data-set-type": "type",
|
89
92
|
"label.datasample review timeline": "data sample review timeline",
|
90
93
|
"label.end-date": "end date",
|
@@ -99,11 +102,13 @@
|
|
99
102
|
"label.period-this-month": "this month",
|
100
103
|
"label.period-this-year": "this year",
|
101
104
|
"label.period-today": "today",
|
105
|
+
"label.raw-data": "raw data",
|
102
106
|
"label.start-date": "start date",
|
103
107
|
"label.state-corrected": "corrected",
|
104
108
|
"label.state-issued": "issued",
|
105
109
|
"label.state-reviewed": "reviewed",
|
106
110
|
"label.target-limits": "target limits",
|
111
|
+
"label.timestamp": "timestamp",
|
107
112
|
"text.automatically collected": "automatically collected",
|
108
113
|
"text.corrective action placeholder": "Please enter details for implementing corrective and preventive actions",
|
109
114
|
"text.corrective instruction placeholder": "Please enter instructions for corrective and preventive actions",
|
@@ -145,6 +150,7 @@
|
|
145
150
|
"title.edit duration": "edit duration",
|
146
151
|
"title.edit hashtag": "edit hashtag",
|
147
152
|
"title.edit json": "edit json",
|
153
|
+
"title.lookup scenario": "lookup scenario",
|
148
154
|
"title.open data sample report page": "open data sample report page",
|
149
155
|
"title.open data sample search page": "open data sample search page",
|
150
156
|
"title.open data sample view": "open data sample view",
|
package/translations/ja.json
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
"field.data-sample": "データ サンプル",
|
28
28
|
"field.data-set": "データ セット",
|
29
29
|
"field.date": "日時",
|
30
|
+
"field.decoder": "デコーダー",
|
31
|
+
"field.decoder-scenario": "デコーダーシナリオ",
|
30
32
|
"field.device-id": "デバイスID",
|
31
33
|
"field.download-url": "ダウンロード アドレス",
|
32
34
|
"field.entry-role": "入力担当ロール",
|
@@ -85,6 +87,7 @@
|
|
85
87
|
"label.corrective action": "是正措置",
|
86
88
|
"label.corrective instruction": "是正指示",
|
87
89
|
"label.critical-limits": "許容限界範囲",
|
90
|
+
"label.data-set": "データ セット",
|
88
91
|
"label.data-set-type": "タイプ",
|
89
92
|
"label.datasample review timeline": "データサンプルレビュータイムライン",
|
90
93
|
"label.end-date": "終了日",
|
@@ -99,11 +102,13 @@
|
|
99
102
|
"label.period-this-month": "今月",
|
100
103
|
"label.period-this-year": "今年",
|
101
104
|
"label.period-today": "今日",
|
105
|
+
"label.raw-data": "生データ",
|
102
106
|
"label.start-date": "開始日",
|
103
107
|
"label.state-corrected": "修正済",
|
104
108
|
"label.state-issued": "発行済",
|
105
109
|
"label.state-reviewed": "審査済",
|
106
110
|
"label.target-limits": "管理目標範囲",
|
111
|
+
"label.timestamp": "タイムスタンプ",
|
107
112
|
"text.automatically collected": "自動収集",
|
108
113
|
"text.corrective action placeholder": "是正及び予防措置の実施事項を入力してください",
|
109
114
|
"text.corrective instruction placeholder": "是正及び予防措置の指示事項を入力してください",
|
@@ -144,6 +149,7 @@
|
|
144
149
|
"title.edit duration": "周期編集",
|
145
150
|
"title.edit hashtag": "ハッシュタグ編集",
|
146
151
|
"title.edit json": "JSON編集",
|
152
|
+
"title.lookup scenario": "ルックアップシナリオ",
|
147
153
|
"title.open data sample report page": "データ サンプル レポート ページを開く",
|
148
154
|
"title.open data sample search page": "データ サンプル検索ページを開く",
|
149
155
|
"title.open data sample view": "データ サンプル ビューページを開く",
|
package/translations/ko.json
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
"field.data-sample": "데이타 샘플",
|
28
28
|
"field.data-set": "데이타셋",
|
29
29
|
"field.date": "일자",
|
30
|
+
"field.decoder": "디코더",
|
31
|
+
"field.decoder-scenario": "디코더 시나리오",
|
30
32
|
"field.device-id": "디바이스 아이디",
|
31
33
|
"field.download-url": "다운로드 주소",
|
32
34
|
"field.entry-role": "입력담당 역할",
|
@@ -85,6 +87,7 @@
|
|
85
87
|
"label.corrective action": "수정 조치",
|
86
88
|
"label.corrective instruction": "수정 지시",
|
87
89
|
"label.critical-limits": "허용 한계범위",
|
90
|
+
"label.data-set": "데이타셋",
|
88
91
|
"label.data-set-type": "유형",
|
89
92
|
"label.datasample review timeline": "데이타샘플 리뷰 타임라인",
|
90
93
|
"label.end-date": "종료일",
|
@@ -99,11 +102,13 @@
|
|
99
102
|
"label.period-this-month": "이번달",
|
100
103
|
"label.period-this-year": "올해",
|
101
104
|
"label.period-today": "오늘",
|
105
|
+
"label.raw-data": "원시 데이타",
|
102
106
|
"label.start-date": "시작일",
|
103
107
|
"label.state-corrected": "조치완료",
|
104
108
|
"label.state-issued": "발생",
|
105
109
|
"label.state-reviewed": "검토완료",
|
106
110
|
"label.target-limits": "관리 목표범위",
|
111
|
+
"label.timestamp": "타임스탬프",
|
107
112
|
"text.automatically collected": "자동 수집",
|
108
113
|
"text.corrective action placeholder": "시정 및 예방을 위한 조치 이행 사항을 입력해주세요",
|
109
114
|
"text.corrective instruction placeholder": "시정 및 예방을 위한 조치 지시 사항을 입력해주세요",
|
@@ -144,6 +149,7 @@
|
|
144
149
|
"title.edit duration": "주기 편집",
|
145
150
|
"title.edit hashtag": "해시태그 편집",
|
146
151
|
"title.edit json": "JSON 편집",
|
152
|
+
"title.lookup scenario": "시나리오 선택",
|
147
153
|
"title.open data sample report page": "데이타 샘플 레포트 페이지 열기",
|
148
154
|
"title.open data sample search page": "데이타 샘플 검색 페이지 열기",
|
149
155
|
"title.open data sample view": "데이타 샘플 뷰페이지 열기",
|
package/translations/ms.json
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
"field.data-sample": "sampel data",
|
28
28
|
"field.data-set": "set data",
|
29
29
|
"field.date": "tarikh",
|
30
|
+
"field.decoder": "Pengekod",
|
31
|
+
"field.decoder-scenario": "Skenario Pengekod",
|
30
32
|
"field.device-id": "id peranti",
|
31
33
|
"field.download-url": "url muat turun",
|
32
34
|
"field.entry-role": "peranan masukan",
|
@@ -85,6 +87,7 @@
|
|
85
87
|
"label.corrective action": "tindakan pembetulan",
|
86
88
|
"label.corrective instruction": "instruksi pembetulan",
|
87
89
|
"label.critical-limits": "had kritikal",
|
90
|
+
"label.data-set": "set data",
|
88
91
|
"label.data-set-type": "jenis",
|
89
92
|
"label.datasample review timeline": "garis masa ulasan sampel data",
|
90
93
|
"label.end-date": "tarikh tamat",
|
@@ -99,11 +102,13 @@
|
|
99
102
|
"label.period-this-month": "bulan ini",
|
100
103
|
"label.period-this-year": "tahun ini",
|
101
104
|
"label.period-today": "hari ini",
|
105
|
+
"label.raw-data": "data mentah",
|
102
106
|
"label.start-date": "tarikh mula",
|
103
107
|
"label.state-corrected": "diperbetulkan",
|
104
108
|
"label.state-issued": "dikeluarkan",
|
105
109
|
"label.state-reviewed": "disemak",
|
106
110
|
"label.target-limits": "had sasaran",
|
111
|
+
"label.timestamp": "Cap waktu",
|
107
112
|
"text.automatically collected": "dikumpulkan secara automatik",
|
108
113
|
"text.corrective action placeholder": "Sila masukkan butiran pelaksanaan tindakan pembetulan dan pencegahan",
|
109
114
|
"text.corrective instruction placeholder": "Sila masukkan arahan tindakan pembetulan dan pencegahan",
|
@@ -145,6 +150,7 @@
|
|
145
150
|
"title.edit duration": "edit tempoh",
|
146
151
|
"title.edit hashtag": "edit hashtag",
|
147
152
|
"title.edit json": "edit json",
|
153
|
+
"title.lookup scenario": "skenario carian",
|
148
154
|
"title.open data sample report page": "buka laman laporan sampel data",
|
149
155
|
"title.open data sample search page": "buka laman pencarian sampel data",
|
150
156
|
"title.open data sample view": "buka paparan sampel data",
|
package/translations/zh.json
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
"field.data-sample": "数据样本",
|
28
28
|
"field.data-set": "数据集",
|
29
29
|
"field.date": "日期",
|
30
|
+
"field.decoder": "解码器",
|
31
|
+
"field.decoder-scenario": "解码器场景",
|
30
32
|
"field.device-id": "设备ID",
|
31
33
|
"field.download-url": "下载地址",
|
32
34
|
"field.entry-role": "输入负责角色",
|
@@ -85,6 +87,7 @@
|
|
85
87
|
"label.corrective action": "纠正措施",
|
86
88
|
"label.corrective instruction": "纠正指示",
|
87
89
|
"label.critical-limits": "临界限制",
|
90
|
+
"label.data-set": "数据集",
|
88
91
|
"label.data-set-type": "类型",
|
89
92
|
"label.datasample review timeline": "数据样本审查时间线",
|
90
93
|
"label.end-date": "结束日期",
|
@@ -99,11 +102,13 @@
|
|
99
102
|
"label.period-this-month": "本月",
|
100
103
|
"label.period-this-year": "今年",
|
101
104
|
"label.period-today": "今天",
|
105
|
+
"label.raw-data": "原始数据",
|
102
106
|
"label.start-date": "开始日期",
|
103
107
|
"label.state-corrected": "已处理",
|
104
108
|
"label.state-issued": "发生",
|
105
109
|
"label.state-reviewed": "审核完成",
|
106
110
|
"label.target-limits": "管理目标范围",
|
111
|
+
"label.timestamp": "时间戳",
|
107
112
|
"text.automatically collected": "自动收集",
|
108
113
|
"text.corrective action placeholder": "请输入实施纠正和预防措施的事项",
|
109
114
|
"text.corrective instruction placeholder": "请输入纠正和预防措施的指示事项",
|
@@ -144,6 +149,7 @@
|
|
144
149
|
"title.edit duration": "周期编辑",
|
145
150
|
"title.edit hashtag": "哈希标签编辑",
|
146
151
|
"title.edit json": "JSON编辑",
|
152
|
+
"title.lookup scenario": "查找场景",
|
147
153
|
"title.open data sample report page": "打开数据样本报告页面",
|
148
154
|
"title.open data sample search page": "打开数据样本搜索页面",
|
149
155
|
"title.open data sample view": "打开数据样本视图页面",
|