@uns-kit/cli 0.0.41 → 0.0.45
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/dist/index.js +23 -0
- package/package.json +2 -2
- package/templates/default/README.md +2 -0
- package/templates/default/package.json +3 -1
- package/templates/default/src/examples/data-example.ts +23 -21
- package/templates/default/src/examples/table-example.ts +12 -12
- package/templates/default/src/uns/uns-dictionary.generated.ts +166 -0
- package/templates/uns-dictionary/uns-dictionary.json +510 -0
package/dist/index.js
CHANGED
|
@@ -122,6 +122,17 @@ async function main() {
|
|
|
122
122
|
}
|
|
123
123
|
return;
|
|
124
124
|
}
|
|
125
|
+
if (command === "configure-uns-dictionary") {
|
|
126
|
+
const targetPath = args[1];
|
|
127
|
+
try {
|
|
128
|
+
await configureUnsDictionary(targetPath);
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error(error.message);
|
|
132
|
+
process.exitCode = 1;
|
|
133
|
+
}
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
125
136
|
if (command === "create") {
|
|
126
137
|
const projectName = args[1];
|
|
127
138
|
if (!projectName) {
|
|
@@ -156,6 +167,7 @@ function printHelp() {
|
|
|
156
167
|
" configure-cron [dir] Copy UNS cron examples and add @uns-kit/cron\n" +
|
|
157
168
|
" configure-temporal [dir] Copy UNS Temporal examples and add @uns-kit/temporal\n" +
|
|
158
169
|
" configure-python [dir] Copy Python gateway client scaffolding\n" +
|
|
170
|
+
" configure-uns-dictionary [dir] Copy UNS dictionary example (object/attribute metadata)\n" +
|
|
159
171
|
" help Show this message\n");
|
|
160
172
|
}
|
|
161
173
|
async function createProject(projectName) {
|
|
@@ -532,6 +544,13 @@ async function configurePython(targetPath) {
|
|
|
532
544
|
label: "UNS Python client",
|
|
533
545
|
});
|
|
534
546
|
}
|
|
547
|
+
async function configureUnsDictionary(targetPath) {
|
|
548
|
+
await configurePlugin({
|
|
549
|
+
targetPath,
|
|
550
|
+
templateName: "uns-dictionary",
|
|
551
|
+
label: "UNS dictionary (object/attribute metadata)",
|
|
552
|
+
});
|
|
553
|
+
}
|
|
535
554
|
const configureFeatureHandlers = {
|
|
536
555
|
devops: configureDevops,
|
|
537
556
|
vscode: configureVscode,
|
|
@@ -541,6 +560,7 @@ const configureFeatureHandlers = {
|
|
|
541
560
|
cron: configureCron,
|
|
542
561
|
temporal: configureTemporal,
|
|
543
562
|
python: configurePython,
|
|
563
|
+
"uns-dictionary": configureUnsDictionary,
|
|
544
564
|
};
|
|
545
565
|
const AVAILABLE_CONFIGURE_FEATURES = Object.keys(configureFeatureHandlers);
|
|
546
566
|
const configureFeatureLabels = {
|
|
@@ -552,6 +572,7 @@ const configureFeatureLabels = {
|
|
|
552
572
|
cron: "UNS cron resources",
|
|
553
573
|
temporal: "UNS Temporal resources",
|
|
554
574
|
python: "Python client scaffolding",
|
|
575
|
+
"uns-dictionary": "UNS dictionary (object/attribute metadata)",
|
|
555
576
|
};
|
|
556
577
|
async function runConfigureCommand(args) {
|
|
557
578
|
const { targetPath, features } = parseConfigureArgs(args);
|
|
@@ -624,6 +645,8 @@ const configureFeatureAliases = {
|
|
|
624
645
|
"configure-temporal": "temporal",
|
|
625
646
|
python: "python",
|
|
626
647
|
"configure-python": "python",
|
|
648
|
+
"uns-dictionary": "uns-dictionary",
|
|
649
|
+
"configure-uns-dictionary": "uns-dictionary",
|
|
627
650
|
};
|
|
628
651
|
function resolveConfigureFeatureName(input) {
|
|
629
652
|
if (typeof input !== "string") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uns-kit/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.45",
|
|
4
4
|
"description": "Command line scaffolding tool for UNS applications",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"azure-devops-node-api": "^15.1.1",
|
|
29
|
-
"@uns-kit/core": "1.0.
|
|
29
|
+
"@uns-kit/core": "1.0.9"
|
|
30
30
|
},
|
|
31
31
|
"unsKitPackages": {
|
|
32
32
|
"@uns-kit/core": "0.0.36",
|
|
@@ -13,6 +13,7 @@ pnpm run start # run the compiled entrypoint
|
|
|
13
13
|
pnpm run generate-config-schema # regenerate config.schema.json and AppConfig augmentations
|
|
14
14
|
pnpm run codegen # regenerate typed GraphQL operations (after configure-codegen)
|
|
15
15
|
pnpm run refresh-uns # rebuild UNS topics/tags from the live schema
|
|
16
|
+
pnpm run generate-uns-dictionary # generate typed object/attribute dictionary from uns-dictionary.json
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
## Configuration
|
|
@@ -27,6 +28,7 @@ Update `config.json` with your broker, UNS URLs, and credentials. The generated
|
|
|
27
28
|
- Run `uns-kit configure-devops` to add the Azure DevOps pull-request tooling.
|
|
28
29
|
- Run `uns-kit configure-vscode` to copy workspace/launch configuration for VS Code.
|
|
29
30
|
- Run `uns-kit configure-codegen` to scaffold GraphQL code generation and UNS refresh scripts.
|
|
31
|
+
- Edit `uns-dictionary.json` (object types/attributes + descriptions) and run `pnpm run generate-uns-dictionary` to emit `src/uns/uns-dictionary.generated.ts` for IDE hints/metadata.
|
|
30
32
|
- Run `uns-kit configure-api` / `configure-cron` / `configure-temporal` to pull in example stubs and install the matching UNS plugins.
|
|
31
33
|
- Run `uns-kit configure-python` to copy the Python gateway client template (examples, scripts, proto).
|
|
32
34
|
- Commit your new project and start building!
|
|
@@ -23,7 +23,9 @@
|
|
|
23
23
|
"build": "pnpm run clean && tsc -p tsconfig.json",
|
|
24
24
|
"dev": "tsx watch src/index.ts",
|
|
25
25
|
"start": "node dist/index.js",
|
|
26
|
-
"generate-config-schema": "node ./node_modules/@uns-kit/core/dist/tools/generate-config-schema.js"
|
|
26
|
+
"generate-config-schema": "node ./node_modules/@uns-kit/core/dist/tools/generate-config-schema.js",
|
|
27
|
+
"refresh-uns": "node ./node_modules/@uns-kit/core/dist/tools/refresh-uns.js",
|
|
28
|
+
"generate-uns-dictionary": "node ./node_modules/@uns-kit/core/dist/tools/generate-uns-dictionary.js --input uns-dictionary.json --output src/uns/uns-dictionary.generated.ts"
|
|
27
29
|
},
|
|
28
30
|
"dependencies": {
|
|
29
31
|
"@uns-kit/core": "__UNS_KIT_CORE_VERSION__",
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
* Change this file according to your specifications and rename it to index.ts
|
|
3
3
|
*/
|
|
4
4
|
import { UnsProxyProcess, ConfigFile, logger, type IUnsMessage } from "@uns-kit/core";
|
|
5
|
-
import {
|
|
5
|
+
import { PhysicalMeasurements } from "@uns-kit/core/uns/uns-measurements.js";
|
|
6
6
|
import { UnsPacket } from "@uns-kit/core/uns/uns-packet.js";
|
|
7
|
-
import { UnsTags } from "@uns-kit/core/uns/uns-tags.js";
|
|
8
7
|
import { UnsTopics } from "@uns-kit/core/uns/uns-topics.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
8
|
+
import {
|
|
9
|
+
GeneratedObjectTypes,
|
|
10
|
+
GeneratedObjectTypeDescriptions,
|
|
11
|
+
GeneratedAttributeDescriptions,
|
|
12
|
+
GeneratedAttributes,
|
|
13
|
+
} from "../uns/uns-dictionary.generated.js";
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Load the configuration from a file.
|
|
@@ -49,19 +52,17 @@ mqttInput.event.on("input", async (event) => {
|
|
|
49
52
|
const message: IUnsMessage = {
|
|
50
53
|
data: { dataGroup, time, value: numberValue, uom: PhysicalMeasurements.None },
|
|
51
54
|
};
|
|
52
|
-
const topic: UnsTopics = "
|
|
53
|
-
const
|
|
54
|
-
const objectId = "main";
|
|
55
|
-
const tags: UnsTags[] = [];
|
|
56
|
-
const packet = await UnsPacket.unsPacketFromUnsMessage(message);
|
|
55
|
+
const topic: UnsTopics = "enterprise/site/area/line/";
|
|
56
|
+
const currentPacket = await UnsPacket.unsPacketFromUnsMessage(message);
|
|
57
57
|
mqttOutput.publishMqttMessage({
|
|
58
58
|
topic,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
tags
|
|
59
|
+
asset:"asset",
|
|
60
|
+
objectType: GeneratedObjectTypes["energy-resource"],
|
|
61
|
+
objectId: "main",
|
|
62
|
+
attribute: GeneratedAttributes["current"] ?? "current",
|
|
63
|
+
description: GeneratedAttributeDescriptions["current"] ?? "Simulated current sensor value",
|
|
64
|
+
tags: [],
|
|
65
|
+
packet: currentPacket
|
|
65
66
|
});
|
|
66
67
|
|
|
67
68
|
const sensorMessage: IUnsMessage = {
|
|
@@ -70,12 +71,13 @@ mqttInput.event.on("input", async (event) => {
|
|
|
70
71
|
const sensorPacket = await UnsPacket.unsPacketFromUnsMessage(sensorMessage);
|
|
71
72
|
mqttOutput.publishMqttMessage({
|
|
72
73
|
topic,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
tags,
|
|
74
|
+
asset:"asset",
|
|
75
|
+
objectType: GeneratedObjectTypes["energy-resource"],
|
|
76
|
+
objectId: "main",
|
|
77
|
+
attribute: GeneratedAttributes["voltage"] ?? "voltage",
|
|
78
|
+
description: GeneratedAttributeDescriptions["voltage"] ?? "Simulated voltage sensor value",
|
|
79
|
+
tags: [],
|
|
80
|
+
packet: sensorPacket
|
|
79
81
|
});
|
|
80
82
|
}
|
|
81
83
|
} catch (error) {
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
import { UnsProxyProcess, ConfigFile, logger, type IUnsMessage } from "@uns-kit/core";
|
|
6
6
|
import { UnsPacket } from "@uns-kit/core/uns/uns-packet.js";
|
|
7
|
-
import { UnsTags } from "@uns-kit/core/uns/uns-tags.js";
|
|
8
7
|
import { UnsTopics } from "@uns-kit/core/uns/uns-topics.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
8
|
+
import {
|
|
9
|
+
GeneratedObjectTypes,
|
|
10
|
+
GeneratedAttributes,
|
|
11
|
+
GeneratedAttributeDescriptions,
|
|
12
|
+
} from "../uns/uns-dictionary.generated.js";
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Load the configuration from a file.
|
|
@@ -55,19 +57,17 @@ mqttInput.event.on("input", async (event) => {
|
|
|
55
57
|
const time = UnsPacket.formatToISO8601(new Date(timestamp));
|
|
56
58
|
// const message: IUnsMessage = { table: {dataGroup:"demo_table", values:jsonObject, columnTypes, time}};
|
|
57
59
|
const message: IUnsMessage = { table: {dataGroup:"demo_table", values:jsonObject, time}};
|
|
58
|
-
const topic: UnsTopics = "
|
|
59
|
-
const objectType = ObjectTypes.Line;
|
|
60
|
-
const objectId = "line-1";
|
|
61
|
-
const tags: UnsTags[] = [];
|
|
60
|
+
const topic: UnsTopics = "enterprise/site/area/line/";
|
|
62
61
|
const packet = await UnsPacket.unsPacketFromUnsMessage(message);
|
|
63
62
|
mqttOutput.publishMqttMessage({
|
|
64
63
|
topic,
|
|
65
|
-
|
|
64
|
+
asset:"asset",
|
|
65
|
+
objectType: GeneratedObjectTypes["line"] ?? "line",
|
|
66
|
+
objectId: "main",
|
|
67
|
+
attribute: GeneratedAttributes["status"] ?? "status",
|
|
68
|
+
description: GeneratedAttributeDescriptions["status"] ?? "Table",
|
|
69
|
+
tags: [],
|
|
66
70
|
packet,
|
|
67
|
-
description: "Table",
|
|
68
|
-
objectType,
|
|
69
|
-
objectId,
|
|
70
|
-
tags
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
} catch (error) {
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/* Auto-generated placeholder. Run `pnpm run generate-uns-dictionary` to regenerate. */
|
|
2
|
+
export const GeneratedObjectTypes = {
|
|
3
|
+
"equipment": "equipment",
|
|
4
|
+
"material": "material",
|
|
5
|
+
"personnel": "personnel",
|
|
6
|
+
"process-segment": "process-segment",
|
|
7
|
+
"product-definition": "product-definition",
|
|
8
|
+
"product-quality": "product-quality",
|
|
9
|
+
"work-definition": "work-definition",
|
|
10
|
+
"resource-status": "resource-status",
|
|
11
|
+
"energy-resource": "energy-resource",
|
|
12
|
+
"utility-resource": "utility-resource",
|
|
13
|
+
"fluid-resource": "fluid-resource",
|
|
14
|
+
"consumable-resource": "consumable-resource",
|
|
15
|
+
} as const;
|
|
16
|
+
|
|
17
|
+
export const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {
|
|
18
|
+
"equipment": "Fizi\u010dna oprema (stroji, pe\u010di, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.",
|
|
19
|
+
"material": "Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, koli\u010dine in premike.",
|
|
20
|
+
"personnel": "Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.",
|
|
21
|
+
"process-segment": "Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.",
|
|
22
|
+
"product-definition": "Definicija izdelka, recepture, tehni\u010dni opisi. Za metapodatke izdelka in revizije.",
|
|
23
|
+
"product-quality": "Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).",
|
|
24
|
+
"work-definition": "Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.",
|
|
25
|
+
"resource-status": "Status kateregakoli vira (material, osebje, oprema). Za razpolo\u017eljivost, okvare, izrabo.",
|
|
26
|
+
"energy-resource": "Energija (elektrika, para, plin).",
|
|
27
|
+
"utility-resource": "Utility viri (voda, zrak, du\u0161ik, stisnjeni plini).",
|
|
28
|
+
"fluid-resource": "Teko\u010dine in plini, ki niso energenti.",
|
|
29
|
+
"consumable-resource": "Maziva, olja, \u010distila, ki se porabijo in niso del izdelka.",
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const GeneratedAttributes = {
|
|
33
|
+
"status": "status",
|
|
34
|
+
"temperature": "temperature",
|
|
35
|
+
"vibration": "vibration",
|
|
36
|
+
"operating-hours": "operating-hours",
|
|
37
|
+
"fault-code": "fault-code",
|
|
38
|
+
"speed": "speed",
|
|
39
|
+
"energy-consumption": "energy-consumption",
|
|
40
|
+
"lot-id": "lot-id",
|
|
41
|
+
"batch-number": "batch-number",
|
|
42
|
+
"material-type": "material-type",
|
|
43
|
+
"quantity": "quantity",
|
|
44
|
+
"location": "location",
|
|
45
|
+
"presence": "presence",
|
|
46
|
+
"task-id": "task-id",
|
|
47
|
+
"role": "role",
|
|
48
|
+
"authorization-level": "authorization-level",
|
|
49
|
+
"start-time": "start-time",
|
|
50
|
+
"end-time": "end-time",
|
|
51
|
+
"duration": "duration",
|
|
52
|
+
"output-quantity": "output-quantity",
|
|
53
|
+
"operator-id": "operator-id",
|
|
54
|
+
"product-code": "product-code",
|
|
55
|
+
"revision": "revision",
|
|
56
|
+
"specification": "specification",
|
|
57
|
+
"target-parameters": "target-parameters",
|
|
58
|
+
"material-composition": "material-composition",
|
|
59
|
+
"version-history": "version-history",
|
|
60
|
+
"inspection-result": "inspection-result",
|
|
61
|
+
"deviation": "deviation",
|
|
62
|
+
"pass-fail": "pass-fail",
|
|
63
|
+
"surface-defect": "surface-defect",
|
|
64
|
+
"hardness": "hardness",
|
|
65
|
+
"tensile-strength": "tensile-strength",
|
|
66
|
+
"work-order-id": "work-order-id",
|
|
67
|
+
"task-list": "task-list",
|
|
68
|
+
"planned-start": "planned-start",
|
|
69
|
+
"planned-end": "planned-end",
|
|
70
|
+
"assigned-to": "assigned-to",
|
|
71
|
+
"instruction-url": "instruction-url",
|
|
72
|
+
"availability": "availability",
|
|
73
|
+
"utilization": "utilization",
|
|
74
|
+
"downtime": "downtime",
|
|
75
|
+
"maintenance-status": "maintenance-status",
|
|
76
|
+
"power": "power",
|
|
77
|
+
"energy": "energy",
|
|
78
|
+
"voltage": "voltage",
|
|
79
|
+
"current": "current",
|
|
80
|
+
"frequency": "frequency",
|
|
81
|
+
"cost": "cost",
|
|
82
|
+
"pressure": "pressure",
|
|
83
|
+
"flow": "flow",
|
|
84
|
+
"consumption": "consumption",
|
|
85
|
+
"alarm": "alarm",
|
|
86
|
+
"total-flow": "total-flow",
|
|
87
|
+
"conductivity": "conductivity",
|
|
88
|
+
"ph": "ph",
|
|
89
|
+
"level": "level",
|
|
90
|
+
"consumption-rate": "consumption-rate",
|
|
91
|
+
"refill-required": "refill-required",
|
|
92
|
+
"last-refill": "last-refill",
|
|
93
|
+
} as const;
|
|
94
|
+
|
|
95
|
+
export const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {
|
|
96
|
+
"status": "Trenutno stanje vira ali opreme.",
|
|
97
|
+
"temperature": "Temperatura vira/opreme.",
|
|
98
|
+
"vibration": "Merjena vibracija.",
|
|
99
|
+
"operating-hours": "\u0160tevilo obratovalnih ur.",
|
|
100
|
+
"fault-code": "Koda napake.",
|
|
101
|
+
"speed": "Hitrost delovanja.",
|
|
102
|
+
"energy-consumption": "Poraba energije.",
|
|
103
|
+
"lot-id": "Identifikator lota.",
|
|
104
|
+
"batch-number": "\u0160tevilka serije (batch).",
|
|
105
|
+
"material-type": "Tip materiala.",
|
|
106
|
+
"quantity": "Koli\u010dina materiala.",
|
|
107
|
+
"location": "Lokacija materiala ali opreme.",
|
|
108
|
+
"presence": "Prisotnost osebja.",
|
|
109
|
+
"task-id": "Identifikator naloge.",
|
|
110
|
+
"role": "Vloga osebja.",
|
|
111
|
+
"authorization-level": "Nivo pooblastil.",
|
|
112
|
+
"start-time": "\u010cas za\u010detka.",
|
|
113
|
+
"end-time": "\u010cas zaklju\u010dka.",
|
|
114
|
+
"duration": "Trajanje faze ali naloge.",
|
|
115
|
+
"output-quantity": "Izhodna koli\u010dina.",
|
|
116
|
+
"operator-id": "Identifikator operaterja.",
|
|
117
|
+
"product-code": "Koda izdelka.",
|
|
118
|
+
"revision": "Revizija izdelka.",
|
|
119
|
+
"specification": "Tehni\u010dne specifikacije.",
|
|
120
|
+
"target-parameters": "Ciljni parametri izdelka ali procesa.",
|
|
121
|
+
"material-composition": "Sestava materiala.",
|
|
122
|
+
"version-history": "Zgodovina verzij.",
|
|
123
|
+
"inspection-result": "Rezultat pregleda.",
|
|
124
|
+
"deviation": "Odstopanje od specifikacije.",
|
|
125
|
+
"pass-fail": "Uspe\u0161no/neuspe\u0161no (pass/fail).",
|
|
126
|
+
"surface-defect": "Povr\u0161inska napaka.",
|
|
127
|
+
"hardness": "Trdota materiala.",
|
|
128
|
+
"tensile-strength": "Natezna trdnost.",
|
|
129
|
+
"work-order-id": "Identifikator delovnega naloga.",
|
|
130
|
+
"task-list": "Seznam nalog.",
|
|
131
|
+
"planned-start": "Planirani za\u010detek.",
|
|
132
|
+
"planned-end": "Planirani zaklju\u010dek.",
|
|
133
|
+
"assigned-to": "Dodeljeno osebi ali ekipi.",
|
|
134
|
+
"instruction-url": "Povezava do navodil.",
|
|
135
|
+
"availability": "Razpolo\u017eljivost vira.",
|
|
136
|
+
"utilization": "Izraba vira.",
|
|
137
|
+
"downtime": "Zastoj/izpad.",
|
|
138
|
+
"maintenance-status": "Stanje vzdr\u017eevanja.",
|
|
139
|
+
"power": "Mo\u010d.",
|
|
140
|
+
"energy": "Energija.",
|
|
141
|
+
"voltage": "Napetost.",
|
|
142
|
+
"current": "Tok.",
|
|
143
|
+
"frequency": "Frekvenca.",
|
|
144
|
+
"cost": "Stro\u0161ek.",
|
|
145
|
+
"pressure": "Tlak.",
|
|
146
|
+
"flow": "Pretok.",
|
|
147
|
+
"consumption": "Poraba.",
|
|
148
|
+
"alarm": "Alarmni signal.",
|
|
149
|
+
"total-flow": "Skupni pretok.",
|
|
150
|
+
"conductivity": "Prevodnost.",
|
|
151
|
+
"ph": "pH vrednost.",
|
|
152
|
+
"level": "Nivo zaloge ali rezervoarja.",
|
|
153
|
+
"consumption-rate": "Hitrost porabe.",
|
|
154
|
+
"refill-required": "Potrebno dolivanje/dopolnitev.",
|
|
155
|
+
"last-refill": "Zadnje polnjenje.",
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
export type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;
|
|
159
|
+
export function getGeneratedObjectTypeDescription(name: string): string | undefined {
|
|
160
|
+
return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export type GeneratedAttributeName = keyof typeof GeneratedAttributes;
|
|
164
|
+
export function getGeneratedAttributeDescription(name: string): string | undefined {
|
|
165
|
+
return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];
|
|
166
|
+
}
|
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
{
|
|
2
|
+
"objectTypes": {
|
|
3
|
+
"equipment": {
|
|
4
|
+
"description": "Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.",
|
|
5
|
+
"descriptions": {
|
|
6
|
+
"sl": "Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.",
|
|
7
|
+
"en": "Physical equipment (machines, furnaces, sensors). Used to monitor status, measurements, and events."
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"material": {
|
|
11
|
+
"description": "Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.",
|
|
12
|
+
"descriptions": {
|
|
13
|
+
"sl": "Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.",
|
|
14
|
+
"en": "Material lots/batches/raw materials for traceability, quantities, and movements."
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"personnel": {
|
|
18
|
+
"description": "Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.",
|
|
19
|
+
"descriptions": {
|
|
20
|
+
"sl": "Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.",
|
|
21
|
+
"en": "Personnel (operators/supervisors/technologists). Track presence, tasks, and status."
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"process-segment": {
|
|
25
|
+
"description": "Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.",
|
|
26
|
+
"descriptions": {
|
|
27
|
+
"sl": "Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.",
|
|
28
|
+
"en": "Process step or activity (e.g., rolling, cooling, analysis)."
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"product-definition": {
|
|
32
|
+
"description": "Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.",
|
|
33
|
+
"descriptions": {
|
|
34
|
+
"sl": "Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.",
|
|
35
|
+
"en": "Product definitions/recipes/specifications and revisions."
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"product-quality": {
|
|
39
|
+
"description": "Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).",
|
|
40
|
+
"descriptions": {
|
|
41
|
+
"sl": "Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).",
|
|
42
|
+
"en": "Product quality indicators/results and deviations."
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"work-definition": {
|
|
46
|
+
"description": "Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.",
|
|
47
|
+
"descriptions": {
|
|
48
|
+
"sl": "Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.",
|
|
49
|
+
"en": "Work/task definitions or workflows with plans and instructions."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"resource-status": {
|
|
53
|
+
"description": "Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.",
|
|
54
|
+
"descriptions": {
|
|
55
|
+
"sl": "Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.",
|
|
56
|
+
"en": "Status of any resource (material/personnel/equipment)."
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"energy-resource": {
|
|
60
|
+
"description": "Energija (elektrika, para, plin).",
|
|
61
|
+
"descriptions": {
|
|
62
|
+
"sl": "Energija (elektrika, para, plin).",
|
|
63
|
+
"en": "Energy carriers (electricity/steam/gas)."
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"utility-resource": {
|
|
67
|
+
"description": "Utility viri (voda, zrak, dušik, stisnjeni plini).",
|
|
68
|
+
"descriptions": {
|
|
69
|
+
"sl": "Utility viri (voda, zrak, dušik, stisnjeni plini).",
|
|
70
|
+
"en": "Utilities (water/air/nitrogen/etc.)."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"fluid-resource": {
|
|
74
|
+
"description": "Tekočine in plini, ki niso energenti.",
|
|
75
|
+
"descriptions": {
|
|
76
|
+
"sl": "Tekočine in plini, ki niso energenti.",
|
|
77
|
+
"en": "Fluids/gases (non-energy) used in process."
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"consumable-resource": {
|
|
81
|
+
"description": "Maziva, olja, čistila, ki se porabijo in niso del izdelka.",
|
|
82
|
+
"descriptions": {
|
|
83
|
+
"sl": "Maziva, olja, čistila, ki se porabijo in niso del izdelka.",
|
|
84
|
+
"en": "Consumables (lubricants/cleaners)."
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"attributes": {
|
|
89
|
+
"status": {
|
|
90
|
+
"description": "Trenutno stanje vira ali opreme.",
|
|
91
|
+
"descriptions": {
|
|
92
|
+
"sl": "Trenutno stanje vira ali opreme.",
|
|
93
|
+
"en": "Current status of the resource."
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"temperature": {
|
|
97
|
+
"description": "Temperatura vira/opreme.",
|
|
98
|
+
"descriptions": {
|
|
99
|
+
"sl": "Temperatura vira/opreme.",
|
|
100
|
+
"en": "Temperature of the resource."
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"vibration": {
|
|
104
|
+
"description": "Merjena vibracija.",
|
|
105
|
+
"descriptions": {
|
|
106
|
+
"sl": "Merjena vibracija.",
|
|
107
|
+
"en": "Measured vibration."
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"operating-hours": {
|
|
111
|
+
"description": "Število obratovalnih ur.",
|
|
112
|
+
"descriptions": {
|
|
113
|
+
"sl": "Število obratovalnih ur.",
|
|
114
|
+
"en": "Operating hours."
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"fault-code": {
|
|
118
|
+
"description": "Koda napake.",
|
|
119
|
+
"descriptions": {
|
|
120
|
+
"sl": "Koda napake.",
|
|
121
|
+
"en": "Fault code."
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"speed": {
|
|
125
|
+
"description": "Hitrost delovanja.",
|
|
126
|
+
"descriptions": {
|
|
127
|
+
"sl": "Hitrost delovanja.",
|
|
128
|
+
"en": "Operating speed."
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"energy-consumption": {
|
|
132
|
+
"description": "Poraba energije.",
|
|
133
|
+
"descriptions": {
|
|
134
|
+
"sl": "Poraba energije.",
|
|
135
|
+
"en": "Energy consumption."
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"lot-id": {
|
|
139
|
+
"description": "Identifikator lota.",
|
|
140
|
+
"descriptions": {
|
|
141
|
+
"sl": "Identifikator lota.",
|
|
142
|
+
"en": "Lot identifier."
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"batch-number": {
|
|
146
|
+
"description": "Številka serije (batch).",
|
|
147
|
+
"descriptions": {
|
|
148
|
+
"sl": "Številka serije (batch).",
|
|
149
|
+
"en": "Batch number."
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"material-type": {
|
|
153
|
+
"description": "Tip materiala.",
|
|
154
|
+
"descriptions": {
|
|
155
|
+
"sl": "Tip materiala.",
|
|
156
|
+
"en": "Material type."
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"quantity": {
|
|
160
|
+
"description": "Količina materiala.",
|
|
161
|
+
"descriptions": {
|
|
162
|
+
"sl": "Količina materiala.",
|
|
163
|
+
"en": "Material quantity."
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"location": {
|
|
167
|
+
"description": "Lokacija materiala ali opreme.",
|
|
168
|
+
"descriptions": {
|
|
169
|
+
"sl": "Lokacija materiala ali opreme.",
|
|
170
|
+
"en": "Location of the resource."
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"presence": {
|
|
174
|
+
"description": "Prisotnost osebja.",
|
|
175
|
+
"descriptions": {
|
|
176
|
+
"sl": "Prisotnost osebja.",
|
|
177
|
+
"en": "Personnel presence."
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"task-id": {
|
|
181
|
+
"description": "Identifikator naloge.",
|
|
182
|
+
"descriptions": {
|
|
183
|
+
"sl": "Identifikator naloge.",
|
|
184
|
+
"en": "Task identifier."
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"role": {
|
|
188
|
+
"description": "Vloga osebja.",
|
|
189
|
+
"descriptions": {
|
|
190
|
+
"sl": "Vloga osebja.",
|
|
191
|
+
"en": "Personnel role."
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"authorization-level": {
|
|
195
|
+
"description": "Nivo pooblastil.",
|
|
196
|
+
"descriptions": {
|
|
197
|
+
"sl": "Nivo pooblastil.",
|
|
198
|
+
"en": "Authorization level."
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"start-time": {
|
|
202
|
+
"description": "Čas začetka.",
|
|
203
|
+
"descriptions": {
|
|
204
|
+
"sl": "Čas začetka.",
|
|
205
|
+
"en": "Start time."
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"end-time": {
|
|
209
|
+
"description": "Čas zaključka.",
|
|
210
|
+
"descriptions": {
|
|
211
|
+
"sl": "Čas zaključka.",
|
|
212
|
+
"en": "End time."
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"duration": {
|
|
216
|
+
"description": "Trajanje faze ali naloge.",
|
|
217
|
+
"descriptions": {
|
|
218
|
+
"sl": "Trajanje faze ali naloge.",
|
|
219
|
+
"en": "Duration of phase/task."
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
"output-quantity": {
|
|
223
|
+
"description": "Izhodna količina.",
|
|
224
|
+
"descriptions": {
|
|
225
|
+
"sl": "Izhodna količina.",
|
|
226
|
+
"en": "Output quantity."
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"operator-id": {
|
|
230
|
+
"description": "Identifikator operaterja.",
|
|
231
|
+
"descriptions": {
|
|
232
|
+
"sl": "Identifikator operaterja.",
|
|
233
|
+
"en": "Operator identifier."
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"product-code": {
|
|
237
|
+
"description": "Koda izdelka.",
|
|
238
|
+
"descriptions": {
|
|
239
|
+
"sl": "Koda izdelka.",
|
|
240
|
+
"en": "Product code."
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"revision": {
|
|
244
|
+
"description": "Revizija izdelka.",
|
|
245
|
+
"descriptions": {
|
|
246
|
+
"sl": "Revizija izdelka.",
|
|
247
|
+
"en": "Product revision."
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"specification": {
|
|
251
|
+
"description": "Tehnične specifikacije.",
|
|
252
|
+
"descriptions": {
|
|
253
|
+
"sl": "Tehnične specifikacije.",
|
|
254
|
+
"en": "Technical specifications."
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"target-parameters": {
|
|
258
|
+
"description": "Ciljni parametri izdelka ali procesa.",
|
|
259
|
+
"descriptions": {
|
|
260
|
+
"sl": "Ciljni parametri izdelka ali procesa.",
|
|
261
|
+
"en": "Target parameters."
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"material-composition": {
|
|
265
|
+
"description": "Sestava materiala.",
|
|
266
|
+
"descriptions": {
|
|
267
|
+
"sl": "Sestava materiala.",
|
|
268
|
+
"en": "Material composition."
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"version-history": {
|
|
272
|
+
"description": "Zgodovina verzij.",
|
|
273
|
+
"descriptions": {
|
|
274
|
+
"sl": "Zgodovina verzij.",
|
|
275
|
+
"en": "Version history."
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
"inspection-result": {
|
|
279
|
+
"description": "Rezultat pregleda.",
|
|
280
|
+
"descriptions": {
|
|
281
|
+
"sl": "Rezultat pregleda.",
|
|
282
|
+
"en": "Inspection result."
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
"deviation": {
|
|
286
|
+
"description": "Odstopanje od specifikacije.",
|
|
287
|
+
"descriptions": {
|
|
288
|
+
"sl": "Odstopanje od specifikacije.",
|
|
289
|
+
"en": "Deviation from specification."
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"pass-fail": {
|
|
293
|
+
"description": "Uspešno/neuspešno (pass/fail).",
|
|
294
|
+
"descriptions": {
|
|
295
|
+
"sl": "Uspešno/neuspešno (pass/fail).",
|
|
296
|
+
"en": "Pass/fail result."
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
"surface-defect": {
|
|
300
|
+
"description": "Površinska napaka.",
|
|
301
|
+
"descriptions": {
|
|
302
|
+
"sl": "Površinska napaka.",
|
|
303
|
+
"en": "Surface defect."
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
"hardness": {
|
|
307
|
+
"description": "Trdota materiala.",
|
|
308
|
+
"descriptions": {
|
|
309
|
+
"sl": "Trdota materiala.",
|
|
310
|
+
"en": "Material hardness."
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"tensile-strength": {
|
|
314
|
+
"description": "Natezna trdnost.",
|
|
315
|
+
"descriptions": {
|
|
316
|
+
"sl": "Natezna trdnost.",
|
|
317
|
+
"en": "Tensile strength."
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
"work-order-id": {
|
|
321
|
+
"description": "Identifikator delovnega naloga.",
|
|
322
|
+
"descriptions": {
|
|
323
|
+
"sl": "Identifikator delovnega naloga.",
|
|
324
|
+
"en": "Work order ID."
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
"task-list": {
|
|
328
|
+
"description": "Seznam nalog.",
|
|
329
|
+
"descriptions": {
|
|
330
|
+
"sl": "Seznam nalog.",
|
|
331
|
+
"en": "Task list."
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"planned-start": {
|
|
335
|
+
"description": "Planirani začetek.",
|
|
336
|
+
"descriptions": {
|
|
337
|
+
"sl": "Planirani začetek.",
|
|
338
|
+
"en": "Planned start."
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
"planned-end": {
|
|
342
|
+
"description": "Planirani zaključek.",
|
|
343
|
+
"descriptions": {
|
|
344
|
+
"sl": "Planirani zaključek.",
|
|
345
|
+
"en": "Planned end."
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
"assigned-to": {
|
|
349
|
+
"description": "Dodeljeno osebi ali ekipi.",
|
|
350
|
+
"descriptions": {
|
|
351
|
+
"sl": "Dodeljeno osebi ali ekipi.",
|
|
352
|
+
"en": "Assigned to person/team."
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
"instruction-url": {
|
|
356
|
+
"description": "Povezava do navodil.",
|
|
357
|
+
"descriptions": {
|
|
358
|
+
"sl": "Povezava do navodil.",
|
|
359
|
+
"en": "Instruction URL."
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
"availability": {
|
|
363
|
+
"description": "Razpoložljivost vira.",
|
|
364
|
+
"descriptions": {
|
|
365
|
+
"sl": "Razpoložljivost vira.",
|
|
366
|
+
"en": "Resource availability."
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
"utilization": {
|
|
370
|
+
"description": "Izraba vira.",
|
|
371
|
+
"descriptions": {
|
|
372
|
+
"sl": "Izraba vira.",
|
|
373
|
+
"en": "Resource utilization."
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
"downtime": {
|
|
377
|
+
"description": "Zastoj/izpad.",
|
|
378
|
+
"descriptions": {
|
|
379
|
+
"sl": "Zastoj/izpad.",
|
|
380
|
+
"en": "Downtime."
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
"maintenance-status": {
|
|
384
|
+
"description": "Stanje vzdrževanja.",
|
|
385
|
+
"descriptions": {
|
|
386
|
+
"sl": "Stanje vzdrževanja.",
|
|
387
|
+
"en": "Maintenance status."
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
"power": {
|
|
391
|
+
"description": "Moč.",
|
|
392
|
+
"descriptions": {
|
|
393
|
+
"sl": "Moč.",
|
|
394
|
+
"en": "Power."
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"energy": {
|
|
398
|
+
"description": "Energija.",
|
|
399
|
+
"descriptions": {
|
|
400
|
+
"sl": "Energija.",
|
|
401
|
+
"en": "Energy."
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
"voltage": {
|
|
405
|
+
"description": "Napetost.",
|
|
406
|
+
"descriptions": {
|
|
407
|
+
"sl": "Napetost.",
|
|
408
|
+
"en": "Voltage."
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
"current": {
|
|
412
|
+
"description": "Tok.",
|
|
413
|
+
"descriptions": {
|
|
414
|
+
"sl": "Tok.",
|
|
415
|
+
"en": "Current."
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
"frequency": {
|
|
419
|
+
"description": "Frekvenca.",
|
|
420
|
+
"descriptions": {
|
|
421
|
+
"sl": "Frekvenca.",
|
|
422
|
+
"en": "Frequency."
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
"cost": {
|
|
426
|
+
"description": "Strošek.",
|
|
427
|
+
"descriptions": {
|
|
428
|
+
"sl": "Strošek.",
|
|
429
|
+
"en": "Cost."
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
"pressure": {
|
|
433
|
+
"description": "Tlak.",
|
|
434
|
+
"descriptions": {
|
|
435
|
+
"sl": "Tlak.",
|
|
436
|
+
"en": "Pressure."
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
"flow": {
|
|
440
|
+
"description": "Pretok.",
|
|
441
|
+
"descriptions": {
|
|
442
|
+
"sl": "Pretok.",
|
|
443
|
+
"en": "Flow."
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
"consumption": {
|
|
447
|
+
"description": "Poraba.",
|
|
448
|
+
"descriptions": {
|
|
449
|
+
"sl": "Poraba.",
|
|
450
|
+
"en": "Consumption."
|
|
451
|
+
}
|
|
452
|
+
},
|
|
453
|
+
"alarm": {
|
|
454
|
+
"description": "Alarmni signal.",
|
|
455
|
+
"descriptions": {
|
|
456
|
+
"sl": "Alarmni signal.",
|
|
457
|
+
"en": "Alarm."
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
"total-flow": {
|
|
461
|
+
"description": "Skupni pretok.",
|
|
462
|
+
"descriptions": {
|
|
463
|
+
"sl": "Skupni pretok.",
|
|
464
|
+
"en": "Total flow."
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
"conductivity": {
|
|
468
|
+
"description": "Prevodnost.",
|
|
469
|
+
"descriptions": {
|
|
470
|
+
"sl": "Prevodnost.",
|
|
471
|
+
"en": "Conductivity."
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
"ph": {
|
|
475
|
+
"description": "pH vrednost.",
|
|
476
|
+
"descriptions": {
|
|
477
|
+
"sl": "pH vrednost.",
|
|
478
|
+
"en": "pH value."
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
"level": {
|
|
482
|
+
"description": "Nivo zaloge ali rezervoarja.",
|
|
483
|
+
"descriptions": {
|
|
484
|
+
"sl": "Nivo zaloge ali rezervoarja.",
|
|
485
|
+
"en": "Level in stock/tank."
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
"consumption-rate": {
|
|
489
|
+
"description": "Hitrost porabe.",
|
|
490
|
+
"descriptions": {
|
|
491
|
+
"sl": "Hitrost porabe.",
|
|
492
|
+
"en": "Consumption rate."
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
"refill-required": {
|
|
496
|
+
"description": "Potrebno dolivanje/dopolnitev.",
|
|
497
|
+
"descriptions": {
|
|
498
|
+
"sl": "Potrebno dolivanje/dopolnitev.",
|
|
499
|
+
"en": "Refill required."
|
|
500
|
+
}
|
|
501
|
+
},
|
|
502
|
+
"last-refill": {
|
|
503
|
+
"description": "Zadnje polnjenje.",
|
|
504
|
+
"descriptions": {
|
|
505
|
+
"sl": "Zadnje polnjenje.",
|
|
506
|
+
"en": "Last refill."
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|