@nice2dev/ui-tools 1.0.10
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/README.md +36 -0
- package/dist/access-control.d.ts +726 -0
- package/dist/access-control.d.ts.map +1 -0
- package/dist/accessibility-i18n.d.ts +1017 -0
- package/dist/accessibility-i18n.d.ts.map +1 -0
- package/dist/ai-assistant.d.ts +263 -0
- package/dist/ai-assistant.d.ts.map +1 -0
- package/dist/ai-playgrounds.d.ts +842 -0
- package/dist/ai-playgrounds.d.ts.map +1 -0
- package/dist/alerting-incidents.d.ts +558 -0
- package/dist/alerting-incidents.d.ts.map +1 -0
- package/dist/api-designer.d.ts +1568 -0
- package/dist/api-designer.d.ts.map +1 -0
- package/dist/api-testing.d.ts +1146 -0
- package/dist/api-testing.d.ts.map +1 -0
- package/dist/apm-profiling.d.ts +656 -0
- package/dist/apm-profiling.d.ts.map +1 -0
- package/dist/artifacts.d.ts +421 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/audit-compliance.d.ts +752 -0
- package/dist/audit-compliance.d.ts.map +1 -0
- package/dist/certificates.d.ts +256 -0
- package/dist/certificates.d.ts.map +1 -0
- package/dist/chart-builder.d.ts +1404 -0
- package/dist/chart-builder.d.ts.map +1 -0
- package/dist/cloud-instances.d.ts +169 -0
- package/dist/cloud-instances.d.ts.map +1 -0
- package/dist/config-management.d.ts +350 -0
- package/dist/config-management.d.ts.map +1 -0
- package/dist/containers.d.ts +256 -0
- package/dist/containers.d.ts.map +1 -0
- package/dist/dashboard-designer.d.ts +1238 -0
- package/dist/dashboard-designer.d.ts.map +1 -0
- package/dist/data-management.d.ts +496 -0
- package/dist/data-management.d.ts.map +1 -0
- package/dist/data-pipeline.d.ts +1105 -0
- package/dist/data-pipeline.d.ts.map +1 -0
- package/dist/data-warehouse.d.ts +1097 -0
- package/dist/data-warehouse.d.ts.map +1 -0
- package/dist/dataset-management.d.ts +782 -0
- package/dist/dataset-management.d.ts.map +1 -0
- package/dist/db-adapters.d.ts +704 -0
- package/dist/db-adapters.d.ts.map +1 -0
- package/dist/db-admin.d.ts +699 -0
- package/dist/db-admin.d.ts.map +1 -0
- package/dist/db-designer.d.ts +366 -0
- package/dist/db-designer.d.ts.map +1 -0
- package/dist/debugger.d.ts +356 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/device-management.d.ts +871 -0
- package/dist/device-management.d.ts.map +1 -0
- package/dist/distributed-tracing.d.ts +427 -0
- package/dist/distributed-tracing.d.ts.map +1 -0
- package/dist/dns-management.d.ts +215 -0
- package/dist/dns-management.d.ts.map +1 -0
- package/dist/download-manager.d.ts +271 -0
- package/dist/download-manager.d.ts.map +1 -0
- package/dist/download-torrent.d.ts +1062 -0
- package/dist/download-torrent.d.ts.map +1 -0
- package/dist/edge-computing.d.ts +720 -0
- package/dist/edge-computing.d.ts.map +1 -0
- package/dist/education.d.ts +1135 -0
- package/dist/education.d.ts.map +1 -0
- package/dist/email-template.d.ts +1141 -0
- package/dist/email-template.d.ts.map +1 -0
- package/dist/erp-enterprise.d.ts +1270 -0
- package/dist/erp-enterprise.d.ts.map +1 -0
- package/dist/form-builder.d.ts +1117 -0
- package/dist/form-builder.d.ts.map +1 -0
- package/dist/game-engine-advanced.d.ts +1049 -0
- package/dist/game-engine-advanced.d.ts.map +1 -0
- package/dist/git.d.ts +415 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/hardware-integration.d.ts +966 -0
- package/dist/hardware-integration.d.ts.map +1 -0
- package/dist/iac.d.ts +318 -0
- package/dist/iac.d.ts.map +1 -0
- package/dist/icon-tools.d.ts +1023 -0
- package/dist/icon-tools.d.ts.map +1 -0
- package/dist/ide.d.ts +322 -0
- package/dist/ide.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1887 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-platform.d.ts +857 -0
- package/dist/integration-platform.d.ts.map +1 -0
- package/dist/kubernetes.d.ts +278 -0
- package/dist/kubernetes.d.ts.map +1 -0
- package/dist/life-management.d.ts +1132 -0
- package/dist/life-management.d.ts.map +1 -0
- package/dist/log-management.d.ts +473 -0
- package/dist/log-management.d.ts.map +1 -0
- package/dist/mathematics.d.ts +870 -0
- package/dist/mathematics.d.ts.map +1 -0
- package/dist/message-queue.d.ts +1006 -0
- package/dist/message-queue.d.ts.map +1 -0
- package/dist/metrics-dashboard.d.ts +596 -0
- package/dist/metrics-dashboard.d.ts.map +1 -0
- package/dist/mobile-components.d.ts +766 -0
- package/dist/mobile-components.d.ts.map +1 -0
- package/dist/model-deployment.d.ts +787 -0
- package/dist/model-deployment.d.ts.map +1 -0
- package/dist/model-registry.d.ts +740 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-training.d.ts +706 -0
- package/dist/model-training.d.ts.map +1 -0
- package/dist/network-config.d.ts +334 -0
- package/dist/network-config.d.ts.map +1 -0
- package/dist/network-monitoring.d.ts +291 -0
- package/dist/network-monitoring.d.ts.map +1 -0
- package/dist/pdf-tools.d.ts +1003 -0
- package/dist/pdf-tools.d.ts.map +1 -0
- package/dist/pipelines.d.ts +250 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/remote-desktop.d.ts +207 -0
- package/dist/remote-desktop.d.ts.map +1 -0
- package/dist/report-designer.d.ts +1153 -0
- package/dist/report-designer.d.ts.map +1 -0
- package/dist/scada-industrial.d.ts +848 -0
- package/dist/scada-industrial.d.ts.map +1 -0
- package/dist/scientific-research.d.ts +1149 -0
- package/dist/scientific-research.d.ts.map +1 -0
- package/dist/secret-management.d.ts +617 -0
- package/dist/secret-management.d.ts.map +1 -0
- package/dist/security-scanning.d.ts +714 -0
- package/dist/security-scanning.d.ts.map +1 -0
- package/dist/self-service-analytics.d.ts +1208 -0
- package/dist/self-service-analytics.d.ts.map +1 -0
- package/dist/sensor-dashboard.d.ts +845 -0
- package/dist/sensor-dashboard.d.ts.map +1 -0
- package/dist/server-management.d.ts +331 -0
- package/dist/server-management.d.ts.map +1 -0
- package/dist/smart-home.d.ts +861 -0
- package/dist/smart-home.d.ts.map +1 -0
- package/dist/spreadsheet.d.ts +1043 -0
- package/dist/spreadsheet.d.ts.map +1 -0
- package/dist/sql-editor.d.ts +402 -0
- package/dist/sql-editor.d.ts.map +1 -0
- package/dist/terminal.d.ts +245 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/testing-qa.d.ts +1013 -0
- package/dist/testing-qa.d.ts.map +1 -0
- package/dist/torrent-client.d.ts +298 -0
- package/dist/torrent-client.d.ts.map +1 -0
- package/dist/traceless.d.ts +759 -0
- package/dist/traceless.d.ts.map +1 -0
- package/dist/virtual-machines.d.ts +199 -0
- package/dist/virtual-machines.d.ts.map +1 -0
- package/dist/visual-scripting.d.ts +381 -0
- package/dist/visual-scripting.d.ts.map +1 -0
- package/dist/word-processor.d.ts +1124 -0
- package/dist/word-processor.d.ts.map +1 -0
- package/dist/workspace.d.ts +333 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,848 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file scada-industrial.ts
|
|
3
|
+
* @module @nice2dev/ui-tools
|
|
4
|
+
* @description PRO-16.4 — SCADA & Industrial
|
|
5
|
+
*
|
|
6
|
+
* Types for industrial systems: SCADA, mimic diagrams, PLC data,
|
|
7
|
+
* alarm management, historian, recipes, Modbus, OPC UA, BACnet.
|
|
8
|
+
*/
|
|
9
|
+
/** Industrial protocol */
|
|
10
|
+
export type IndustrialProtocol = 'modbusTcp' | 'modbusRtu' | 'modbusAscii' | 'opcUa' | 'opcDa' | 'opcHda' | 'bacnetIp' | 'bacnetMstp' | 'ethernetIp' | 'profinet' | 'profibus' | 'canbus' | 'mqtt' | 's7' | 'dnp3' | 'iec61850' | 'iec60870' | 'custom';
|
|
11
|
+
/** PLC type */
|
|
12
|
+
export type PLCType = 'siemens' | 'allen-bradley' | 'schneider' | 'mitsubishi' | 'omron' | 'beckhoff' | 'abb' | 'delta' | 'keyence' | 'codesys' | 'generic';
|
|
13
|
+
/** Data quality */
|
|
14
|
+
export type IndustrialDataQuality = 'good' | 'uncertain' | 'bad' | 'configError' | 'notConnected' | 'deviceFailure' | 'sensorFailure' | 'lastKnown' | 'commFailure' | 'outOfService';
|
|
15
|
+
/** Tag type */
|
|
16
|
+
export type TagType = 'analog' | 'digital' | 'string' | 'datetime' | 'array' | 'struct';
|
|
17
|
+
/** SCADA configuration */
|
|
18
|
+
export interface SCADAConfig {
|
|
19
|
+
/** Data sources */
|
|
20
|
+
dataSources?: SCADADataSource[];
|
|
21
|
+
/** Theme */
|
|
22
|
+
theme?: SCADATheme;
|
|
23
|
+
/** Locale */
|
|
24
|
+
locale?: string;
|
|
25
|
+
/** Features */
|
|
26
|
+
features?: SCADAFeatures;
|
|
27
|
+
/** Alarm config */
|
|
28
|
+
alarms?: AlarmConfig;
|
|
29
|
+
/** Historian config */
|
|
30
|
+
historian?: HistorianConfig;
|
|
31
|
+
/** Security */
|
|
32
|
+
security?: SCADASecurity;
|
|
33
|
+
}
|
|
34
|
+
/** SCADA data source */
|
|
35
|
+
export interface SCADADataSource {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
type: IndustrialProtocol;
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
connection: ConnectionConfig;
|
|
41
|
+
polling?: PollingConfig;
|
|
42
|
+
tags?: TagGroup[];
|
|
43
|
+
}
|
|
44
|
+
/** Connection config */
|
|
45
|
+
export interface ConnectionConfig {
|
|
46
|
+
host?: string;
|
|
47
|
+
port?: number;
|
|
48
|
+
path?: string;
|
|
49
|
+
unitId?: number;
|
|
50
|
+
rack?: number;
|
|
51
|
+
slot?: number;
|
|
52
|
+
timeout?: number;
|
|
53
|
+
retries?: number;
|
|
54
|
+
reconnect?: boolean;
|
|
55
|
+
reconnectInterval?: number;
|
|
56
|
+
authentication?: AuthConfig;
|
|
57
|
+
security?: SecurityConfig;
|
|
58
|
+
}
|
|
59
|
+
/** Authentication config */
|
|
60
|
+
export interface AuthConfig {
|
|
61
|
+
type: 'none' | 'basic' | 'certificate' | 'token';
|
|
62
|
+
username?: string;
|
|
63
|
+
password?: string;
|
|
64
|
+
certificate?: string;
|
|
65
|
+
privateKey?: string;
|
|
66
|
+
token?: string;
|
|
67
|
+
}
|
|
68
|
+
/** Security config */
|
|
69
|
+
export interface SecurityConfig {
|
|
70
|
+
mode?: 'none' | 'sign' | 'signAndEncrypt';
|
|
71
|
+
policy?: string;
|
|
72
|
+
certificate?: string;
|
|
73
|
+
privateKey?: string;
|
|
74
|
+
}
|
|
75
|
+
/** Polling config */
|
|
76
|
+
export interface PollingConfig {
|
|
77
|
+
enabled: boolean;
|
|
78
|
+
interval: number;
|
|
79
|
+
strategy: 'cyclic' | 'exception' | 'report';
|
|
80
|
+
priority?: number;
|
|
81
|
+
}
|
|
82
|
+
/** Tag group */
|
|
83
|
+
export interface TagGroup {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
description?: string;
|
|
87
|
+
tags: IndustrialTag[];
|
|
88
|
+
polling?: PollingConfig;
|
|
89
|
+
}
|
|
90
|
+
/** Industrial tag */
|
|
91
|
+
export interface IndustrialTag {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
address: string;
|
|
95
|
+
dataType: TagDataType;
|
|
96
|
+
type: TagType;
|
|
97
|
+
description?: string;
|
|
98
|
+
unit?: string;
|
|
99
|
+
scaling?: TagScaling;
|
|
100
|
+
limits?: TagLimits;
|
|
101
|
+
alarm?: TagAlarmConfig;
|
|
102
|
+
historian?: TagHistorianConfig;
|
|
103
|
+
access?: 'read' | 'write' | 'readWrite';
|
|
104
|
+
scanClass?: string;
|
|
105
|
+
}
|
|
106
|
+
/** Tag data type */
|
|
107
|
+
export type TagDataType = 'bool' | 'int8' | 'int16' | 'int32' | 'int64' | 'uint8' | 'uint16' | 'uint32' | 'uint64' | 'float32' | 'float64' | 'string' | 'datetime' | 'byte[]';
|
|
108
|
+
/** Tag scaling */
|
|
109
|
+
export interface TagScaling {
|
|
110
|
+
type: 'linear' | 'squareRoot' | 'custom';
|
|
111
|
+
rawMin?: number;
|
|
112
|
+
rawMax?: number;
|
|
113
|
+
engMin?: number;
|
|
114
|
+
engMax?: number;
|
|
115
|
+
clamp?: boolean;
|
|
116
|
+
formula?: string;
|
|
117
|
+
}
|
|
118
|
+
/** Tag limits */
|
|
119
|
+
export interface TagLimits {
|
|
120
|
+
lowLow?: number;
|
|
121
|
+
low?: number;
|
|
122
|
+
high?: number;
|
|
123
|
+
highHigh?: number;
|
|
124
|
+
deadband?: number;
|
|
125
|
+
rateOfChange?: number;
|
|
126
|
+
}
|
|
127
|
+
/** Tag alarm config */
|
|
128
|
+
export interface TagAlarmConfig {
|
|
129
|
+
enabled: boolean;
|
|
130
|
+
priority?: AlarmPriority;
|
|
131
|
+
message?: string;
|
|
132
|
+
delay?: number;
|
|
133
|
+
acknowledgmentRequired?: boolean;
|
|
134
|
+
}
|
|
135
|
+
/** Tag historian config */
|
|
136
|
+
export interface TagHistorianConfig {
|
|
137
|
+
enabled: boolean;
|
|
138
|
+
compression?: CompressionConfig;
|
|
139
|
+
retention?: RetentionConfig;
|
|
140
|
+
}
|
|
141
|
+
/** Compression config */
|
|
142
|
+
export interface CompressionConfig {
|
|
143
|
+
type: 'none' | 'deadband' | 'deviation' | 'swinging';
|
|
144
|
+
deviation?: number;
|
|
145
|
+
timeout?: number;
|
|
146
|
+
}
|
|
147
|
+
/** Retention config */
|
|
148
|
+
export interface RetentionConfig {
|
|
149
|
+
raw?: number;
|
|
150
|
+
hourly?: number;
|
|
151
|
+
daily?: number;
|
|
152
|
+
monthly?: number;
|
|
153
|
+
}
|
|
154
|
+
/** SCADA theme */
|
|
155
|
+
export interface SCADATheme {
|
|
156
|
+
name?: string;
|
|
157
|
+
background?: string;
|
|
158
|
+
surface?: string;
|
|
159
|
+
primary?: string;
|
|
160
|
+
statusColors?: StatusColors;
|
|
161
|
+
alarmColors?: AlarmColors;
|
|
162
|
+
}
|
|
163
|
+
/** Status colors */
|
|
164
|
+
export interface StatusColors {
|
|
165
|
+
running?: string;
|
|
166
|
+
stopped?: string;
|
|
167
|
+
faulted?: string;
|
|
168
|
+
manual?: string;
|
|
169
|
+
auto?: string;
|
|
170
|
+
maintenance?: string;
|
|
171
|
+
}
|
|
172
|
+
/** Alarm colors */
|
|
173
|
+
export interface AlarmColors {
|
|
174
|
+
critical?: string;
|
|
175
|
+
high?: string;
|
|
176
|
+
medium?: string;
|
|
177
|
+
low?: string;
|
|
178
|
+
info?: string;
|
|
179
|
+
acknowledged?: string;
|
|
180
|
+
}
|
|
181
|
+
/** SCADA features */
|
|
182
|
+
export interface SCADAFeatures {
|
|
183
|
+
mimicDiagrams?: boolean;
|
|
184
|
+
alarms?: boolean;
|
|
185
|
+
trends?: boolean;
|
|
186
|
+
historian?: boolean;
|
|
187
|
+
reports?: boolean;
|
|
188
|
+
recipes?: boolean;
|
|
189
|
+
audit?: boolean;
|
|
190
|
+
sequences?: boolean;
|
|
191
|
+
}
|
|
192
|
+
/** Alarm config */
|
|
193
|
+
export interface AlarmConfig {
|
|
194
|
+
enabled?: boolean;
|
|
195
|
+
maxAlarms?: number;
|
|
196
|
+
retention?: number;
|
|
197
|
+
sound?: AlarmSoundConfig;
|
|
198
|
+
escalation?: EscalationConfig;
|
|
199
|
+
shelving?: ShelvingConfig;
|
|
200
|
+
}
|
|
201
|
+
/** Alarm sound config */
|
|
202
|
+
export interface AlarmSoundConfig {
|
|
203
|
+
enabled?: boolean;
|
|
204
|
+
criticalSound?: string;
|
|
205
|
+
highSound?: string;
|
|
206
|
+
mediumSound?: string;
|
|
207
|
+
lowSound?: string;
|
|
208
|
+
volume?: number;
|
|
209
|
+
}
|
|
210
|
+
/** Escalation config */
|
|
211
|
+
export interface EscalationConfig {
|
|
212
|
+
enabled?: boolean;
|
|
213
|
+
levels?: EscalationLevel[];
|
|
214
|
+
}
|
|
215
|
+
/** Escalation level */
|
|
216
|
+
export interface EscalationLevel {
|
|
217
|
+
delayMinutes: number;
|
|
218
|
+
recipients: string[];
|
|
219
|
+
notificationType: 'email' | 'sms' | 'call' | 'page';
|
|
220
|
+
}
|
|
221
|
+
/** Shelving config */
|
|
222
|
+
export interface ShelvingConfig {
|
|
223
|
+
enabled?: boolean;
|
|
224
|
+
maxDuration?: number;
|
|
225
|
+
requireReason?: boolean;
|
|
226
|
+
}
|
|
227
|
+
/** Historian config */
|
|
228
|
+
export interface HistorianConfig {
|
|
229
|
+
enabled?: boolean;
|
|
230
|
+
storage?: HistorianStorage;
|
|
231
|
+
compression?: CompressionConfig;
|
|
232
|
+
aggregation?: AggregationConfig;
|
|
233
|
+
}
|
|
234
|
+
/** Historian storage */
|
|
235
|
+
export interface HistorianStorage {
|
|
236
|
+
type: 'internal' | 'external';
|
|
237
|
+
connectionString?: string;
|
|
238
|
+
database?: string;
|
|
239
|
+
table?: string;
|
|
240
|
+
}
|
|
241
|
+
/** Aggregation config */
|
|
242
|
+
export interface AggregationConfig {
|
|
243
|
+
intervals: AggregationInterval[];
|
|
244
|
+
}
|
|
245
|
+
/** Aggregation interval */
|
|
246
|
+
export interface AggregationInterval {
|
|
247
|
+
name: string;
|
|
248
|
+
seconds: number;
|
|
249
|
+
retention: number;
|
|
250
|
+
methods: AggregationMethod[];
|
|
251
|
+
}
|
|
252
|
+
/** Aggregation method */
|
|
253
|
+
export type AggregationMethod = 'average' | 'min' | 'max' | 'sum' | 'count' | 'first' | 'last' | 'range' | 'stddev' | 'variance';
|
|
254
|
+
/** SCADA security */
|
|
255
|
+
export interface SCADASecurity {
|
|
256
|
+
authentication?: 'none' | 'local' | 'ldap' | 'active-directory';
|
|
257
|
+
authorization?: boolean;
|
|
258
|
+
audit?: boolean;
|
|
259
|
+
areaLocking?: boolean;
|
|
260
|
+
}
|
|
261
|
+
/** Mimic diagram */
|
|
262
|
+
export interface MimicDiagram {
|
|
263
|
+
id: string;
|
|
264
|
+
name: string;
|
|
265
|
+
description?: string;
|
|
266
|
+
version?: number;
|
|
267
|
+
canvas: CanvasConfig;
|
|
268
|
+
layers: DiagramLayer[];
|
|
269
|
+
elements: DiagramElement[];
|
|
270
|
+
animations?: DiagramAnimation[];
|
|
271
|
+
navigation?: DiagramNavigation[];
|
|
272
|
+
metadata?: DiagramMetadata;
|
|
273
|
+
}
|
|
274
|
+
/** Canvas config */
|
|
275
|
+
export interface CanvasConfig {
|
|
276
|
+
width: number;
|
|
277
|
+
height: number;
|
|
278
|
+
background?: string;
|
|
279
|
+
backgroundImage?: string;
|
|
280
|
+
grid?: GridConfig;
|
|
281
|
+
snap?: SnapConfig;
|
|
282
|
+
}
|
|
283
|
+
/** Grid config */
|
|
284
|
+
export interface GridConfig {
|
|
285
|
+
visible: boolean;
|
|
286
|
+
size: number;
|
|
287
|
+
color?: string;
|
|
288
|
+
style?: 'dots' | 'lines';
|
|
289
|
+
}
|
|
290
|
+
/** Snap config */
|
|
291
|
+
export interface SnapConfig {
|
|
292
|
+
enabled: boolean;
|
|
293
|
+
gridSnap?: boolean;
|
|
294
|
+
elementSnap?: boolean;
|
|
295
|
+
tolerance?: number;
|
|
296
|
+
}
|
|
297
|
+
/** Diagram layer */
|
|
298
|
+
export interface DiagramLayer {
|
|
299
|
+
id: string;
|
|
300
|
+
name: string;
|
|
301
|
+
visible: boolean;
|
|
302
|
+
locked: boolean;
|
|
303
|
+
opacity: number;
|
|
304
|
+
order: number;
|
|
305
|
+
}
|
|
306
|
+
/** Diagram element */
|
|
307
|
+
export interface DiagramElement {
|
|
308
|
+
id: string;
|
|
309
|
+
type: ElementType;
|
|
310
|
+
layerId: string;
|
|
311
|
+
position: Position;
|
|
312
|
+
size?: Size;
|
|
313
|
+
rotation?: number;
|
|
314
|
+
properties: ElementProperties;
|
|
315
|
+
style?: ElementStyle;
|
|
316
|
+
bindings?: DataBinding[];
|
|
317
|
+
actions?: ElementAction[];
|
|
318
|
+
}
|
|
319
|
+
/** Element type */
|
|
320
|
+
export type ElementType = 'rectangle' | 'ellipse' | 'polygon' | 'polyline' | 'path' | 'text' | 'image' | 'symbol' | 'gauge' | 'chart' | 'trend' | 'value' | 'button' | 'slider' | 'input' | 'switch' | 'indicator' | 'pipe' | 'valve' | 'pump' | 'motor' | 'tank' | 'conveyor' | 'heater' | 'cooler' | 'mixer' | 'fan' | 'compressor' | 'custom';
|
|
321
|
+
/** Position */
|
|
322
|
+
export interface Position {
|
|
323
|
+
x: number;
|
|
324
|
+
y: number;
|
|
325
|
+
}
|
|
326
|
+
/** Size */
|
|
327
|
+
export interface Size {
|
|
328
|
+
width: number;
|
|
329
|
+
height: number;
|
|
330
|
+
}
|
|
331
|
+
/** Element properties */
|
|
332
|
+
export interface ElementProperties {
|
|
333
|
+
[key: string]: unknown;
|
|
334
|
+
points?: Position[];
|
|
335
|
+
vertices?: Position[];
|
|
336
|
+
text?: string;
|
|
337
|
+
src?: string;
|
|
338
|
+
symbolId?: string;
|
|
339
|
+
min?: number;
|
|
340
|
+
max?: number;
|
|
341
|
+
format?: string;
|
|
342
|
+
}
|
|
343
|
+
/** Element style */
|
|
344
|
+
export interface ElementStyle {
|
|
345
|
+
fill?: string;
|
|
346
|
+
stroke?: string;
|
|
347
|
+
strokeWidth?: number;
|
|
348
|
+
opacity?: number;
|
|
349
|
+
font?: FontStyle;
|
|
350
|
+
shadow?: ShadowStyle;
|
|
351
|
+
gradient?: GradientStyle;
|
|
352
|
+
}
|
|
353
|
+
/** Font style */
|
|
354
|
+
export interface FontStyle {
|
|
355
|
+
family?: string;
|
|
356
|
+
size?: number;
|
|
357
|
+
weight?: string;
|
|
358
|
+
style?: string;
|
|
359
|
+
color?: string;
|
|
360
|
+
align?: 'left' | 'center' | 'right';
|
|
361
|
+
}
|
|
362
|
+
/** Shadow style */
|
|
363
|
+
export interface ShadowStyle {
|
|
364
|
+
color: string;
|
|
365
|
+
blur: number;
|
|
366
|
+
offsetX: number;
|
|
367
|
+
offsetY: number;
|
|
368
|
+
}
|
|
369
|
+
/** Gradient style */
|
|
370
|
+
export interface GradientStyle {
|
|
371
|
+
type: 'linear' | 'radial';
|
|
372
|
+
angle?: number;
|
|
373
|
+
stops: GradientStop[];
|
|
374
|
+
}
|
|
375
|
+
/** Gradient stop */
|
|
376
|
+
export interface GradientStop {
|
|
377
|
+
offset: number;
|
|
378
|
+
color: string;
|
|
379
|
+
}
|
|
380
|
+
/** Data binding */
|
|
381
|
+
export interface DataBinding {
|
|
382
|
+
property: string;
|
|
383
|
+
tagId: string;
|
|
384
|
+
expression?: string;
|
|
385
|
+
format?: string;
|
|
386
|
+
conditions?: BindingCondition[];
|
|
387
|
+
}
|
|
388
|
+
/** Binding condition */
|
|
389
|
+
export interface BindingCondition {
|
|
390
|
+
operator: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'in';
|
|
391
|
+
value: unknown;
|
|
392
|
+
result: unknown;
|
|
393
|
+
}
|
|
394
|
+
/** Element action */
|
|
395
|
+
export interface ElementAction {
|
|
396
|
+
trigger: ActionTrigger;
|
|
397
|
+
type: ActionType;
|
|
398
|
+
target?: string;
|
|
399
|
+
value?: unknown;
|
|
400
|
+
confirmation?: ActionConfirmation;
|
|
401
|
+
}
|
|
402
|
+
/** Action trigger */
|
|
403
|
+
export type ActionTrigger = 'click' | 'doubleClick' | 'rightClick' | 'mouseEnter' | 'mouseLeave' | 'keyPress';
|
|
404
|
+
/** Action type */
|
|
405
|
+
export type ActionType = 'navigate' | 'writeTag' | 'script' | 'popup' | 'alarm' | 'trend' | 'print' | 'custom';
|
|
406
|
+
/** Action confirmation */
|
|
407
|
+
export interface ActionConfirmation {
|
|
408
|
+
required: boolean;
|
|
409
|
+
message?: string;
|
|
410
|
+
reason?: boolean;
|
|
411
|
+
password?: boolean;
|
|
412
|
+
}
|
|
413
|
+
/** Diagram animation */
|
|
414
|
+
export interface DiagramAnimation {
|
|
415
|
+
id: string;
|
|
416
|
+
elementId: string;
|
|
417
|
+
type: AnimationType;
|
|
418
|
+
trigger: AnimationTrigger;
|
|
419
|
+
duration: number;
|
|
420
|
+
easing?: string;
|
|
421
|
+
repeat?: boolean;
|
|
422
|
+
config: AnimationConfig;
|
|
423
|
+
}
|
|
424
|
+
/** Animation type */
|
|
425
|
+
export type AnimationType = 'move' | 'rotate' | 'scale' | 'fade' | 'fill' | 'stroke' | 'flow' | 'blink' | 'custom';
|
|
426
|
+
/** Animation trigger */
|
|
427
|
+
export interface AnimationTrigger {
|
|
428
|
+
type: 'tag' | 'time' | 'event';
|
|
429
|
+
tagId?: string;
|
|
430
|
+
condition?: string;
|
|
431
|
+
interval?: number;
|
|
432
|
+
}
|
|
433
|
+
/** Animation config */
|
|
434
|
+
export interface AnimationConfig {
|
|
435
|
+
from?: unknown;
|
|
436
|
+
to?: unknown;
|
|
437
|
+
path?: Position[];
|
|
438
|
+
speed?: number;
|
|
439
|
+
direction?: 'forward' | 'reverse' | 'alternate';
|
|
440
|
+
}
|
|
441
|
+
/** Diagram navigation */
|
|
442
|
+
export interface DiagramNavigation {
|
|
443
|
+
elementId: string;
|
|
444
|
+
targetDiagramId: string;
|
|
445
|
+
transition?: 'instant' | 'fade' | 'slide';
|
|
446
|
+
}
|
|
447
|
+
/** Diagram metadata */
|
|
448
|
+
export interface DiagramMetadata {
|
|
449
|
+
created?: Date;
|
|
450
|
+
createdBy?: string;
|
|
451
|
+
modified?: Date;
|
|
452
|
+
modifiedBy?: string;
|
|
453
|
+
locked?: boolean;
|
|
454
|
+
lockedBy?: string;
|
|
455
|
+
tags?: string[];
|
|
456
|
+
}
|
|
457
|
+
/** Alarm */
|
|
458
|
+
export interface Alarm {
|
|
459
|
+
id: string;
|
|
460
|
+
timestamp: Date;
|
|
461
|
+
tagId: string;
|
|
462
|
+
tagName?: string;
|
|
463
|
+
source: string;
|
|
464
|
+
area?: string;
|
|
465
|
+
priority: AlarmPriority;
|
|
466
|
+
state: AlarmState;
|
|
467
|
+
type: AlarmType;
|
|
468
|
+
message: string;
|
|
469
|
+
value?: number;
|
|
470
|
+
limit?: number;
|
|
471
|
+
unit?: string;
|
|
472
|
+
acknowledged?: boolean;
|
|
473
|
+
acknowledgedAt?: Date;
|
|
474
|
+
acknowledgedBy?: string;
|
|
475
|
+
cleared?: boolean;
|
|
476
|
+
clearedAt?: Date;
|
|
477
|
+
shelved?: boolean;
|
|
478
|
+
shelvedUntil?: Date;
|
|
479
|
+
shelvedBy?: string;
|
|
480
|
+
shelveReason?: string;
|
|
481
|
+
notes?: string;
|
|
482
|
+
}
|
|
483
|
+
/** Alarm priority */
|
|
484
|
+
export type AlarmPriority = 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
485
|
+
/** Alarm state */
|
|
486
|
+
export type AlarmState = 'active' | 'acknowledged' | 'returned' | 'cleared' | 'reset';
|
|
487
|
+
/** Alarm type */
|
|
488
|
+
export type AlarmType = 'highHigh' | 'high' | 'low' | 'lowLow' | 'deviation' | 'rateOfChange' | 'digital' | 'system' | 'equipment' | 'custom';
|
|
489
|
+
/** Alarm filter */
|
|
490
|
+
export interface AlarmFilter {
|
|
491
|
+
priorities?: AlarmPriority[];
|
|
492
|
+
states?: AlarmState[];
|
|
493
|
+
types?: AlarmType[];
|
|
494
|
+
areas?: string[];
|
|
495
|
+
sources?: string[];
|
|
496
|
+
tags?: string[];
|
|
497
|
+
startTime?: Date;
|
|
498
|
+
endTime?: Date;
|
|
499
|
+
acknowledged?: boolean;
|
|
500
|
+
shelved?: boolean;
|
|
501
|
+
search?: string;
|
|
502
|
+
}
|
|
503
|
+
/** Alarm summary */
|
|
504
|
+
export interface AlarmSummary {
|
|
505
|
+
total: number;
|
|
506
|
+
active: number;
|
|
507
|
+
unacknowledged: number;
|
|
508
|
+
shelved: number;
|
|
509
|
+
byPriority: Record<AlarmPriority, number>;
|
|
510
|
+
byArea?: Record<string, number>;
|
|
511
|
+
byState?: Record<AlarmState, number>;
|
|
512
|
+
}
|
|
513
|
+
/** Historian query */
|
|
514
|
+
export interface HistorianQuery {
|
|
515
|
+
tagIds: string[];
|
|
516
|
+
startTime: Date;
|
|
517
|
+
endTime: Date;
|
|
518
|
+
interval?: number;
|
|
519
|
+
aggregation?: AggregationMethod;
|
|
520
|
+
bounds?: boolean;
|
|
521
|
+
raw?: boolean;
|
|
522
|
+
limit?: number;
|
|
523
|
+
}
|
|
524
|
+
/** Historian result */
|
|
525
|
+
export interface HistorianResult {
|
|
526
|
+
tagId: string;
|
|
527
|
+
tagName?: string;
|
|
528
|
+
unit?: string;
|
|
529
|
+
values: HistorianValue[];
|
|
530
|
+
statistics?: HistorianStatistics;
|
|
531
|
+
}
|
|
532
|
+
/** Historian value */
|
|
533
|
+
export interface HistorianValue {
|
|
534
|
+
timestamp: Date;
|
|
535
|
+
value: number | string | boolean | null;
|
|
536
|
+
quality: IndustrialDataQuality;
|
|
537
|
+
annotation?: string;
|
|
538
|
+
}
|
|
539
|
+
/** Historian statistics */
|
|
540
|
+
export interface HistorianStatistics {
|
|
541
|
+
count: number;
|
|
542
|
+
goodCount: number;
|
|
543
|
+
badCount: number;
|
|
544
|
+
min?: number;
|
|
545
|
+
max?: number;
|
|
546
|
+
average?: number;
|
|
547
|
+
sum?: number;
|
|
548
|
+
stddev?: number;
|
|
549
|
+
range?: number;
|
|
550
|
+
firstValue?: number;
|
|
551
|
+
lastValue?: number;
|
|
552
|
+
firstTime?: Date;
|
|
553
|
+
lastTime?: Date;
|
|
554
|
+
}
|
|
555
|
+
/** Annotation */
|
|
556
|
+
export interface HistorianAnnotation {
|
|
557
|
+
id: string;
|
|
558
|
+
tagId: string;
|
|
559
|
+
timestamp: Date;
|
|
560
|
+
endTime?: Date;
|
|
561
|
+
text: string;
|
|
562
|
+
type: AnnotationType;
|
|
563
|
+
user?: string;
|
|
564
|
+
created?: Date;
|
|
565
|
+
}
|
|
566
|
+
/** Annotation type */
|
|
567
|
+
export type AnnotationType = 'manual' | 'maintenance' | 'event' | 'comment' | 'quality';
|
|
568
|
+
/** Recipe */
|
|
569
|
+
export interface Recipe {
|
|
570
|
+
id: string;
|
|
571
|
+
name: string;
|
|
572
|
+
description?: string;
|
|
573
|
+
version: number;
|
|
574
|
+
productId?: string;
|
|
575
|
+
productName?: string;
|
|
576
|
+
parameters: RecipeParameter[];
|
|
577
|
+
phases?: RecipePhase[];
|
|
578
|
+
equipment?: string[];
|
|
579
|
+
status: RecipeStatus;
|
|
580
|
+
metadata?: RecipeMetadata;
|
|
581
|
+
}
|
|
582
|
+
/** Recipe parameter */
|
|
583
|
+
export interface RecipeParameter {
|
|
584
|
+
id: string;
|
|
585
|
+
name: string;
|
|
586
|
+
description?: string;
|
|
587
|
+
tagId?: string;
|
|
588
|
+
dataType: TagDataType;
|
|
589
|
+
unit?: string;
|
|
590
|
+
value: unknown;
|
|
591
|
+
min?: number;
|
|
592
|
+
max?: number;
|
|
593
|
+
deviation?: number;
|
|
594
|
+
required?: boolean;
|
|
595
|
+
}
|
|
596
|
+
/** Recipe phase */
|
|
597
|
+
export interface RecipePhase {
|
|
598
|
+
id: string;
|
|
599
|
+
name: string;
|
|
600
|
+
description?: string;
|
|
601
|
+
sequence: number;
|
|
602
|
+
duration?: number;
|
|
603
|
+
parameters: RecipeParameter[];
|
|
604
|
+
transitions?: PhaseTransition[];
|
|
605
|
+
}
|
|
606
|
+
/** Phase transition */
|
|
607
|
+
export interface PhaseTransition {
|
|
608
|
+
condition: string;
|
|
609
|
+
target: string;
|
|
610
|
+
timeout?: number;
|
|
611
|
+
}
|
|
612
|
+
/** Recipe status */
|
|
613
|
+
export type RecipeStatus = 'draft' | 'review' | 'approved' | 'active' | 'obsolete';
|
|
614
|
+
/** Recipe metadata */
|
|
615
|
+
export interface RecipeMetadata {
|
|
616
|
+
created?: Date;
|
|
617
|
+
createdBy?: string;
|
|
618
|
+
modified?: Date;
|
|
619
|
+
modifiedBy?: string;
|
|
620
|
+
approved?: Date;
|
|
621
|
+
approvedBy?: string;
|
|
622
|
+
revision?: string;
|
|
623
|
+
}
|
|
624
|
+
/** Batch */
|
|
625
|
+
export interface Batch {
|
|
626
|
+
id: string;
|
|
627
|
+
name: string;
|
|
628
|
+
recipeId: string;
|
|
629
|
+
recipeName?: string;
|
|
630
|
+
recipeVersion?: number;
|
|
631
|
+
status: BatchStatus;
|
|
632
|
+
equipment?: string[];
|
|
633
|
+
startTime?: Date;
|
|
634
|
+
endTime?: Date;
|
|
635
|
+
parameters: BatchParameter[];
|
|
636
|
+
phases?: BatchPhase[];
|
|
637
|
+
events?: BatchEvent[];
|
|
638
|
+
results?: BatchResult;
|
|
639
|
+
}
|
|
640
|
+
/** Batch status */
|
|
641
|
+
export type BatchStatus = 'created' | 'waiting' | 'running' | 'paused' | 'completed' | 'aborted' | 'faulted';
|
|
642
|
+
/** Batch parameter */
|
|
643
|
+
export interface BatchParameter {
|
|
644
|
+
parameterId: string;
|
|
645
|
+
name: string;
|
|
646
|
+
setpoint: unknown;
|
|
647
|
+
actual?: unknown;
|
|
648
|
+
deviation?: number;
|
|
649
|
+
inSpec?: boolean;
|
|
650
|
+
}
|
|
651
|
+
/** Batch phase */
|
|
652
|
+
export interface BatchPhase {
|
|
653
|
+
phaseId: string;
|
|
654
|
+
name: string;
|
|
655
|
+
status: BatchStatus;
|
|
656
|
+
startTime?: Date;
|
|
657
|
+
endTime?: Date;
|
|
658
|
+
actualDuration?: number;
|
|
659
|
+
parameters?: BatchParameter[];
|
|
660
|
+
}
|
|
661
|
+
/** Batch event */
|
|
662
|
+
export interface BatchEvent {
|
|
663
|
+
timestamp: Date;
|
|
664
|
+
type: BatchEventType;
|
|
665
|
+
phase?: string;
|
|
666
|
+
message: string;
|
|
667
|
+
user?: string;
|
|
668
|
+
data?: Record<string, unknown>;
|
|
669
|
+
}
|
|
670
|
+
/** Batch event type */
|
|
671
|
+
export type BatchEventType = 'start' | 'stop' | 'pause' | 'resume' | 'abort' | 'phaseStart' | 'phaseEnd' | 'parameterChange' | 'alarm' | 'operator' | 'system';
|
|
672
|
+
/** Batch result */
|
|
673
|
+
export interface BatchResult {
|
|
674
|
+
success: boolean;
|
|
675
|
+
quality?: 'good' | 'acceptable' | 'rejected';
|
|
676
|
+
yield?: number;
|
|
677
|
+
duration?: number;
|
|
678
|
+
deviations?: number;
|
|
679
|
+
notes?: string;
|
|
680
|
+
}
|
|
681
|
+
/** Modbus config */
|
|
682
|
+
export interface ModbusConfig {
|
|
683
|
+
type: 'tcp' | 'rtu' | 'ascii';
|
|
684
|
+
host?: string;
|
|
685
|
+
port?: number;
|
|
686
|
+
serialPort?: string;
|
|
687
|
+
baudRate?: number;
|
|
688
|
+
dataBits?: number;
|
|
689
|
+
stopBits?: number;
|
|
690
|
+
parity?: 'none' | 'even' | 'odd';
|
|
691
|
+
unitId: number;
|
|
692
|
+
timeout?: number;
|
|
693
|
+
}
|
|
694
|
+
/** Modbus register */
|
|
695
|
+
export interface ModbusRegister {
|
|
696
|
+
address: number;
|
|
697
|
+
quantity: number;
|
|
698
|
+
type: 'coil' | 'discrete' | 'holding' | 'input';
|
|
699
|
+
dataType?: TagDataType;
|
|
700
|
+
byteOrder?: 'big' | 'little';
|
|
701
|
+
wordOrder?: 'big' | 'little';
|
|
702
|
+
}
|
|
703
|
+
/** OPC UA config */
|
|
704
|
+
export interface OPCUAConfig {
|
|
705
|
+
endpointUrl: string;
|
|
706
|
+
securityMode?: 'none' | 'sign' | 'signAndEncrypt';
|
|
707
|
+
securityPolicy?: string;
|
|
708
|
+
authentication?: OPCUAAuth;
|
|
709
|
+
certificate?: string;
|
|
710
|
+
privateKey?: string;
|
|
711
|
+
applicationUri?: string;
|
|
712
|
+
sessionTimeout?: number;
|
|
713
|
+
}
|
|
714
|
+
/** OPC UA authentication */
|
|
715
|
+
export interface OPCUAAuth {
|
|
716
|
+
type: 'anonymous' | 'username' | 'certificate';
|
|
717
|
+
username?: string;
|
|
718
|
+
password?: string;
|
|
719
|
+
certificate?: string;
|
|
720
|
+
privateKey?: string;
|
|
721
|
+
}
|
|
722
|
+
/** OPC UA node */
|
|
723
|
+
export interface OPCUANode {
|
|
724
|
+
nodeId: string;
|
|
725
|
+
browseName: string;
|
|
726
|
+
displayName?: string;
|
|
727
|
+
nodeClass: OPCUANodeClass;
|
|
728
|
+
dataType?: string;
|
|
729
|
+
valueRank?: number;
|
|
730
|
+
arrayDimensions?: number[];
|
|
731
|
+
accessLevel?: number;
|
|
732
|
+
children?: OPCUANode[];
|
|
733
|
+
}
|
|
734
|
+
/** OPC UA node class */
|
|
735
|
+
export type OPCUANodeClass = 'object' | 'variable' | 'method' | 'objectType' | 'variableType' | 'referenceType' | 'dataType' | 'view';
|
|
736
|
+
/** BACnet config */
|
|
737
|
+
export interface BACnetConfig {
|
|
738
|
+
type: 'ip' | 'mstp';
|
|
739
|
+
interface?: string;
|
|
740
|
+
port?: number;
|
|
741
|
+
deviceInstance?: number;
|
|
742
|
+
serialPort?: string;
|
|
743
|
+
macAddress?: number;
|
|
744
|
+
maxMaster?: number;
|
|
745
|
+
maxInfoFrames?: number;
|
|
746
|
+
segmentation?: 'both' | 'transmit' | 'receive' | 'none';
|
|
747
|
+
}
|
|
748
|
+
/** BACnet object */
|
|
749
|
+
export interface BACnetObject {
|
|
750
|
+
objectType: BACnetObjectType;
|
|
751
|
+
objectInstance: number;
|
|
752
|
+
objectName: string;
|
|
753
|
+
description?: string;
|
|
754
|
+
presentValue?: unknown;
|
|
755
|
+
statusFlags?: BACnetStatusFlags;
|
|
756
|
+
units?: number;
|
|
757
|
+
}
|
|
758
|
+
/** BACnet object type */
|
|
759
|
+
export type BACnetObjectType = 'analogInput' | 'analogOutput' | 'analogValue' | 'binaryInput' | 'binaryOutput' | 'binaryValue' | 'multiStateInput' | 'multiStateOutput' | 'multiStateValue' | 'schedule' | 'calendar' | 'trendLog' | 'device';
|
|
760
|
+
/** BACnet status flags */
|
|
761
|
+
export interface BACnetStatusFlags {
|
|
762
|
+
inAlarm: boolean;
|
|
763
|
+
fault: boolean;
|
|
764
|
+
overridden: boolean;
|
|
765
|
+
outOfService: boolean;
|
|
766
|
+
}
|
|
767
|
+
/** S7 config */
|
|
768
|
+
export interface S7Config {
|
|
769
|
+
host: string;
|
|
770
|
+
port?: number;
|
|
771
|
+
rack: number;
|
|
772
|
+
slot: number;
|
|
773
|
+
localTSAP?: number;
|
|
774
|
+
remoteTSAP?: number;
|
|
775
|
+
timeout?: number;
|
|
776
|
+
}
|
|
777
|
+
/** S7 data block */
|
|
778
|
+
export interface S7DataBlock {
|
|
779
|
+
dbNumber: number;
|
|
780
|
+
name?: string;
|
|
781
|
+
size?: number;
|
|
782
|
+
variables: S7Variable[];
|
|
783
|
+
}
|
|
784
|
+
/** S7 variable */
|
|
785
|
+
export interface S7Variable {
|
|
786
|
+
name: string;
|
|
787
|
+
address: string;
|
|
788
|
+
dataType: S7DataType;
|
|
789
|
+
length?: number;
|
|
790
|
+
comment?: string;
|
|
791
|
+
}
|
|
792
|
+
/** S7 data type */
|
|
793
|
+
export type S7DataType = 'BOOL' | 'BYTE' | 'WORD' | 'DWORD' | 'INT' | 'DINT' | 'REAL' | 'S5TIME' | 'TIME' | 'DATE' | 'TIME_OF_DAY' | 'DATE_AND_TIME' | 'STRING' | 'CHAR';
|
|
794
|
+
/** MQTT industrial config */
|
|
795
|
+
export interface MQTTIndustrialConfig {
|
|
796
|
+
broker: string;
|
|
797
|
+
port?: number;
|
|
798
|
+
clientId?: string;
|
|
799
|
+
username?: string;
|
|
800
|
+
password?: string;
|
|
801
|
+
useTls?: boolean;
|
|
802
|
+
cleanSession?: boolean;
|
|
803
|
+
keepAlive?: number;
|
|
804
|
+
qos?: 0 | 1 | 2;
|
|
805
|
+
sparkplugB?: SparkplugBConfig;
|
|
806
|
+
}
|
|
807
|
+
/** Sparkplug B config */
|
|
808
|
+
export interface SparkplugBConfig {
|
|
809
|
+
groupId: string;
|
|
810
|
+
edgeNodeId: string;
|
|
811
|
+
deviceId?: string;
|
|
812
|
+
primaryHostId?: string;
|
|
813
|
+
}
|
|
814
|
+
/** Audit entry */
|
|
815
|
+
export interface AuditEntry {
|
|
816
|
+
id: string;
|
|
817
|
+
timestamp: Date;
|
|
818
|
+
user: string;
|
|
819
|
+
action: AuditAction;
|
|
820
|
+
area?: string;
|
|
821
|
+
target: string;
|
|
822
|
+
targetType: AuditTargetType;
|
|
823
|
+
oldValue?: unknown;
|
|
824
|
+
newValue?: unknown;
|
|
825
|
+
reason?: string;
|
|
826
|
+
signature?: string;
|
|
827
|
+
workstation?: string;
|
|
828
|
+
successful: boolean;
|
|
829
|
+
errorMessage?: string;
|
|
830
|
+
}
|
|
831
|
+
/** Audit action */
|
|
832
|
+
export type AuditAction = 'login' | 'logout' | 'read' | 'write' | 'create' | 'delete' | 'modify' | 'acknowledge' | 'shelve' | 'command' | 'override' | 'configure' | 'export' | 'print';
|
|
833
|
+
/** Audit target type */
|
|
834
|
+
export type AuditTargetType = 'tag' | 'alarm' | 'diagram' | 'recipe' | 'batch' | 'report' | 'user' | 'system';
|
|
835
|
+
/** Audit query */
|
|
836
|
+
export interface AuditQuery {
|
|
837
|
+
startTime?: Date;
|
|
838
|
+
endTime?: Date;
|
|
839
|
+
users?: string[];
|
|
840
|
+
actions?: AuditAction[];
|
|
841
|
+
areas?: string[];
|
|
842
|
+
targets?: string[];
|
|
843
|
+
targetTypes?: AuditTargetType[];
|
|
844
|
+
successful?: boolean;
|
|
845
|
+
limit?: number;
|
|
846
|
+
offset?: number;
|
|
847
|
+
}
|
|
848
|
+
//# sourceMappingURL=scada-industrial.d.ts.map
|