@flexem/fc-gui 3.0.0-alpha.123 → 3.0.0-alpha.125
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/bundles/@flexem/fc-gui.umd.js +2860 -1471
- package/bundles/@flexem/fc-gui.umd.js.map +1 -1
- package/bundles/@flexem/fc-gui.umd.min.js +4 -4
- package/bundles/@flexem/fc-gui.umd.min.js.map +1 -1
- package/communication/variable/variable-communicator.d.ts +2 -0
- package/config/alarm/get-alarms-args.d.ts +4 -1
- package/config/alarm/get-alarms-args.js +5 -1
- package/config/alarm/get-alarms-args.metadata.json +1 -1
- package/config/history-data/get-history-data-args.d.ts +14 -3
- package/config/history-data/get-history-data-args.js +5 -3
- package/config/history-data/get-history-data-args.metadata.json +1 -1
- package/elements/alarm/alarm-element.d.ts +28 -3
- package/elements/alarm/alarm-element.js +124 -14
- package/elements/alarm/alarm-element.metadata.json +1 -1
- package/elements/base/readable-element.js +14 -5
- package/elements/base/state-control-element.js +2 -2
- package/elements/historical-curve/historical-curve.element.d.ts +24 -2
- package/elements/historical-curve/historical-curve.element.js +180 -34
- package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
- package/elements/main-element.js +12 -8
- package/elements/main-element.metadata.json +1 -1
- package/elements/numerical-display/numerical-display-element.d.ts +9 -2
- package/elements/numerical-display/numerical-display-element.js +22 -2
- package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
- package/elements/scroll-alarm/scroll-alarm-element.d.ts +54 -0
- package/elements/scroll-alarm/scroll-alarm-element.js +517 -0
- package/elements/scroll-alarm/scroll-alarm-element.metadata.json +1 -0
- package/elements/shared/graph/graph-state-element.d.ts +0 -1
- package/elements/shared/graph/graph-state-element.js +1 -30
- package/elements/shared/graph/graph-state-element.metadata.json +1 -1
- package/elements/shared/text/text-element.d.ts +9 -0
- package/elements/shared/text/text-element.js +20 -0
- package/elements/shared/text/text-element.metadata.json +1 -1
- package/elements/shared/text/text-state-element.d.ts +25 -1
- package/elements/shared/text/text-state-element.js +100 -2
- package/elements/shared/text/text-state-element.metadata.json +1 -1
- package/elements/static-elements/hyperlink-element.d.ts +24 -2
- package/elements/static-elements/hyperlink-element.js +101 -3
- package/elements/static-elements/hyperlink-element.metadata.json +1 -1
- package/elements/static-elements/text-element.d.ts +23 -2
- package/elements/static-elements/text-element.js +96 -3
- package/elements/static-elements/text-element.metadata.json +1 -1
- package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +10 -4
- package/elements/switch-indicator-light/switch-indicator-light-element.js +26 -25
- package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
- package/elements/view-operation/view-operation.element.d.ts +23 -2
- package/elements/view-operation/view-operation.element.js +95 -1
- package/elements/view-operation/view-operation.element.metadata.json +1 -1
- package/gui/gui-context.d.ts +11 -2
- package/gui/gui-view.js +20 -4
- package/modal/write-value/write-value-modal-args.d.ts +3 -1
- package/modal/write-value/write-value-modal-args.js +2 -1
- package/modal/write-value/write-value-modal-args.metadata.json +1 -1
- package/modal/write-value/write-value-modal.component.d.ts +4 -0
- package/modal/write-value/write-value-modal.component.js +25 -0
- package/modal/write-value/write-value-modal.component.metadata.json +1 -1
- package/model/base/font-setting-model.d.ts +6 -0
- package/model/base/font-setting-model.metadata.json +1 -1
- package/model/historical-curve/historical-curve.data-settings.d.ts +18 -1
- package/model/historical-curve/historical-curve.data-settings.metadata.json +1 -1
- package/model/scroll-alarm/scroll-alarm.model.d.ts +21 -0
- package/model/scroll-alarm/scroll-alarm.model.js +0 -0
- package/model/scroll-alarm/scroll-alarm.model.metadata.json +1 -0
- package/model/switch-indicator-light/switch-indicator-light.d.ts +2 -0
- package/model/view-operation/view-operation-element.model.d.ts +7 -1
- package/package.json +1 -1
- package/public_api.js +1 -0
- package/remote/communication/variable/remote-variable-communicator.d.ts +15 -0
- package/remote/communication/variable/remote-variable-communicator.js +76 -2
- package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
- package/service/index.d.ts +3 -0
- package/service/index.js +1 -0
- package/service/index.metadata.json +1 -1
- package/service/language.service.d.ts +37 -0
- package/service/language.service.js +0 -0
- package/service/language.service.metadata.json +1 -0
- package/service/system-text-library.service.d.ts +76 -0
- package/service/system-text-library.service.js +28 -0
- package/service/system-text-library.service.metadata.json +1 -0
- package/service/text-library.service.d.ts +49 -0
- package/service/text-library.service.js +0 -0
- package/service/text-library.service.metadata.json +1 -0
- package/shared/gui-consts.d.ts +1 -0
- package/shared/gui-consts.js +2 -1
- package/shared/gui-consts.metadata.json +1 -1
|
@@ -5,6 +5,7 @@ import * as nv from 'nvd3';
|
|
|
5
5
|
import { GetHistoryDataArgs } from '../../config';
|
|
6
6
|
import { HistoricalCurveTimeRange } from '../../config/history-data/historical-curve.time-range';
|
|
7
7
|
import { LOCALIZATION } from '../../localization';
|
|
8
|
+
import { SYSTEM_TEXT_LIBRARY_TYPES, TIME_PERIOD_KEYS } from '../../service';
|
|
8
9
|
import { ConditionalDisplayElement } from '../base/conditional-display-element';
|
|
9
10
|
import { HistoricalCurveElementStatus } from './historical-curve-element-status';
|
|
10
11
|
import { LOGGER_SERVICE_TOKEN } from '../../logger';
|
|
@@ -12,9 +13,12 @@ import { GlobalSettings, DisplayMode } from '../../settings';
|
|
|
12
13
|
import { CurveType } from '../../model/historical-curve/curve-type';
|
|
13
14
|
import { AxisRangeType } from '../../model/historical-curve/historical-curve-axis-settings';
|
|
14
15
|
export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
15
|
-
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, historyDataStore, signalRAppId) {
|
|
16
|
+
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, historyDataStore, signalRAppId, systemTextLibraryService, languageService, guiContext) {
|
|
16
17
|
super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
|
|
17
18
|
this.historyDataStore = historyDataStore;
|
|
19
|
+
this.systemTextLibraryService = systemTextLibraryService;
|
|
20
|
+
this.languageService = languageService;
|
|
21
|
+
this.guiContext = guiContext;
|
|
18
22
|
this.displayOption = {
|
|
19
23
|
dataLimit: 500,
|
|
20
24
|
dataZoomHeight: 32,
|
|
@@ -56,6 +60,8 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
56
60
|
}
|
|
57
61
|
this.loadFirstPage();
|
|
58
62
|
this.initKeyboardListener();
|
|
63
|
+
// 订阅语种变化事件
|
|
64
|
+
this.subscribeLanguageChange();
|
|
59
65
|
}
|
|
60
66
|
dispose() {
|
|
61
67
|
clearInterval(this.refreshIntervalId);
|
|
@@ -69,6 +75,11 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
69
75
|
window.removeEventListener('native.keyboardshow', this.setNeedResize);
|
|
70
76
|
window.removeEventListener('native.keyboardhide', this.setNeedResize);
|
|
71
77
|
}
|
|
78
|
+
// 取消语种变化订阅
|
|
79
|
+
if (this.languageChangeSubscription) {
|
|
80
|
+
this.languageChangeSubscription.unsubscribe();
|
|
81
|
+
this.languageChangeSubscription = undefined;
|
|
82
|
+
}
|
|
72
83
|
this.logger.debug(`[GUI]Dispose Histoical Curve Refresh Interval:${d3.time.format('%x %X')(new Date())}`);
|
|
73
84
|
}
|
|
74
85
|
initKeyboardListener() {
|
|
@@ -78,17 +89,84 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
78
89
|
window.addEventListener('native.keyboardhide', this.setNeedResize);
|
|
79
90
|
}
|
|
80
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* 订阅语种变化事件
|
|
94
|
+
*/
|
|
95
|
+
subscribeLanguageChange() {
|
|
96
|
+
if (this.guiContext && this.guiContext.languageChanged$) {
|
|
97
|
+
this.languageChangeSubscription = this.guiContext.languageChanged$.subscribe(() => {
|
|
98
|
+
// 只更新时间段选择器的文案,不重新查询数据
|
|
99
|
+
this.updateLanguageTexts();
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 更新语种相关的文案(时间段选择器)
|
|
105
|
+
*/
|
|
106
|
+
updateLanguageTexts() {
|
|
107
|
+
const selectElement = this.rootElement.select('select');
|
|
108
|
+
if (!selectElement.empty()) {
|
|
109
|
+
// 重新生成时间段数据
|
|
110
|
+
const updatedTimePeriods = this.getValidTimePeriods();
|
|
111
|
+
// 更新选项文本
|
|
112
|
+
const options = selectElement.selectAll('option');
|
|
113
|
+
options.each(function (_d, i) {
|
|
114
|
+
if (i < updatedTimePeriods.length) {
|
|
115
|
+
d3.select(this).text(updatedTimePeriods[i].name);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 获取当前语种的 culture 代码
|
|
122
|
+
*/
|
|
123
|
+
getCurrentCulture() {
|
|
124
|
+
var _a, _b, _c, _e, _f, _g;
|
|
125
|
+
// 获取当前语种ID
|
|
126
|
+
const currentLanguageId = (_c = (_b = (_a = this.guiContext) === null || _a === void 0 ? void 0 : _a.getCurrentLanguageId) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null;
|
|
127
|
+
// 确定要使用的语种代码(culture)
|
|
128
|
+
const defaultLanguage = ((_e = this.languageService) === null || _e === void 0 ? void 0 : _e.getDefaultLanguage()) || 'zh-CN';
|
|
129
|
+
if (currentLanguageId === null || currentLanguageId === undefined) {
|
|
130
|
+
// 设备未设置当前语种,使用默认语种
|
|
131
|
+
return defaultLanguage;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// 设备已设置当前语种,获取对应的语种代码
|
|
135
|
+
const currentLanguage = (_g = (_f = this.guiContext) === null || _f === void 0 ? void 0 : _f.getLanguageCultureById) === null || _g === void 0 ? void 0 : _g.call(_f, currentLanguageId);
|
|
136
|
+
if (currentLanguage) {
|
|
137
|
+
return currentLanguage;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// 无法获取语种代码,使用默认语种
|
|
141
|
+
return defaultLanguage;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
81
145
|
getValidTimePeriods() {
|
|
82
146
|
const timePeriods = new Array();
|
|
83
|
-
timePeriods.push({ key: 6, name: this.
|
|
84
|
-
timePeriods.push({ key: 1, name: this.
|
|
85
|
-
timePeriods.push({ key: 7, name: this.
|
|
86
|
-
timePeriods.push({ key: 2, name: this.
|
|
87
|
-
timePeriods.push({ key: 3, name: this.
|
|
88
|
-
timePeriods.push({ key: 4, name: this.
|
|
89
|
-
timePeriods.push({ key: 5, name: this.
|
|
147
|
+
timePeriods.push({ key: 6, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_THIRTY_MINUTES) });
|
|
148
|
+
timePeriods.push({ key: 1, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_ONE_HOUR) });
|
|
149
|
+
timePeriods.push({ key: 7, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_EIGHT_HOURS) });
|
|
150
|
+
timePeriods.push({ key: 2, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_TWENTY_FOUR_HOURS) });
|
|
151
|
+
timePeriods.push({ key: 3, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_SEVEN_DAYS) });
|
|
152
|
+
timePeriods.push({ key: 4, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_THIRTY_DAYS) });
|
|
153
|
+
timePeriods.push({ key: 5, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_ONE_YEAR) });
|
|
90
154
|
return timePeriods;
|
|
91
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* 获取时间段文案(从系统文本库获取多语种翻译)
|
|
158
|
+
*/
|
|
159
|
+
getTimePeriodText(textKey) {
|
|
160
|
+
const currentCulture = this.getCurrentCulture();
|
|
161
|
+
const systemType = SYSTEM_TEXT_LIBRARY_TYPES.COMPONENT_BUILTIN;
|
|
162
|
+
if (this.systemTextLibraryService) {
|
|
163
|
+
const translation = this.systemTextLibraryService.getSystemTextValue(systemType, textKey, currentCulture);
|
|
164
|
+
if (translation) {
|
|
165
|
+
return translation;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return '';
|
|
169
|
+
}
|
|
92
170
|
updateTimeRange(timePeriodType) {
|
|
93
171
|
this.currentTimePeriod = +timePeriodType;
|
|
94
172
|
this.updateQueryTimeRange();
|
|
@@ -127,30 +205,50 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
127
205
|
if (!this.model.dataSetting) {
|
|
128
206
|
return;
|
|
129
207
|
}
|
|
130
|
-
const dataItemName = this.model.dataSetting.dataName;
|
|
131
208
|
const dataSourceCode = this.model.dataSetting.dataSourceCode;
|
|
132
|
-
const channelNames = this.model.dataSetting.channels.map(c => c.name);
|
|
133
209
|
this.updateElementStatus(HistoricalCurveElementStatus.Loading);
|
|
134
|
-
|
|
135
|
-
this.
|
|
136
|
-
|
|
137
|
-
|
|
210
|
+
// 【新格式】如果有多条目配置,使用多条目查询
|
|
211
|
+
if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
|
|
212
|
+
const historyDataItems = this.model.dataSetting.dataItems.map(item => ({
|
|
213
|
+
dataItemName: item.dataName,
|
|
214
|
+
channelNames: item.channels.map(c => c.name)
|
|
215
|
+
}));
|
|
216
|
+
// 使用第一个条目的信息作为兼容参数
|
|
217
|
+
const firstItem = this.model.dataSetting.dataItems[0];
|
|
218
|
+
const input = new GetHistoryDataArgs(dataSourceCode, firstItem.dataName, firstItem.channels.map(c => c.name), startTime, endTime, limit, rangeType, historyDataItems // 传递多条目参数
|
|
219
|
+
);
|
|
220
|
+
this.historyDataStore.getHistoryData(input).subscribe(result => {
|
|
221
|
+
this.handleQueryResult(result);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
// 【旧格式】单条目模式
|
|
225
|
+
else {
|
|
226
|
+
const dataItemName = this.model.dataSetting.dataName;
|
|
227
|
+
const channelNames = this.model.dataSetting.channels.map(c => c.name);
|
|
228
|
+
const input = new GetHistoryDataArgs(dataSourceCode, dataItemName, channelNames, startTime, endTime, limit, rangeType);
|
|
229
|
+
this.historyDataStore.getHistoryData(input).subscribe(result => {
|
|
230
|
+
this.handleQueryResult(result);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
handleQueryResult(result) {
|
|
235
|
+
if (result.error) {
|
|
236
|
+
this.updateElementStatus(HistoricalCurveElementStatus.LoadFailed, result.error);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
this.clearStatus();
|
|
240
|
+
if (result.isUnbind) {
|
|
241
|
+
this.updateElementStatus(HistoricalCurveElementStatus.Unbound);
|
|
138
242
|
}
|
|
139
243
|
else {
|
|
140
|
-
this.
|
|
141
|
-
if (result.isUnbind) {
|
|
142
|
-
this.updateElementStatus(HistoricalCurveElementStatus.Unbound);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
this.updateElementStatus(HistoricalCurveElementStatus.Normal);
|
|
146
|
-
}
|
|
147
|
-
if (result.values.length) {
|
|
148
|
-
this.currentStartTime = moment(first(result.values).time);
|
|
149
|
-
this.currentEndTime = moment(last(result.values).time);
|
|
150
|
-
}
|
|
151
|
-
this.chartElement = this.renderChart(result.values);
|
|
244
|
+
this.updateElementStatus(HistoricalCurveElementStatus.Normal);
|
|
152
245
|
}
|
|
153
|
-
|
|
246
|
+
if (result.values.length) {
|
|
247
|
+
this.currentStartTime = moment(first(result.values).time);
|
|
248
|
+
this.currentEndTime = moment(last(result.values).time);
|
|
249
|
+
}
|
|
250
|
+
this.chartElement = this.renderChart(result.values);
|
|
251
|
+
}
|
|
154
252
|
}
|
|
155
253
|
setupTooltipAutoHide(chart) {
|
|
156
254
|
const chartContainer = this.rootElement.select('.nv-focus').node();
|
|
@@ -178,11 +276,31 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
178
276
|
const chartWidth = this.model.displaySetting.size.width;
|
|
179
277
|
const chartHeight = this.model.displaySetting.size.height - this.displayOption.operationAreaHeight - this.displayOption.operationAreaMarginTop;
|
|
180
278
|
const data = new Array();
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
279
|
+
// 【新格式】多条目模式:曲线名称使用"条目名-通道名"格式
|
|
280
|
+
if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
|
|
281
|
+
let channelIndex = 0;
|
|
282
|
+
each(this.model.dataSetting.dataItems, dataItem => {
|
|
283
|
+
each(dataItem.channels, channel => {
|
|
284
|
+
const values = new Array();
|
|
285
|
+
each(result, v => values.push({ x: moment(v.time).local().toDate().valueOf(), y: v.values[channelIndex] }));
|
|
286
|
+
// 使用"条目名-通道名"格式
|
|
287
|
+
const displayName = `${dataItem.dataName}-${channel.name}`;
|
|
288
|
+
data.push({ key: displayName, area: channel.projectEnabled, values: values });
|
|
289
|
+
channelIndex++;
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// 【旧格式】单条目模式:同样使用"条目名-通道名"格式
|
|
294
|
+
else {
|
|
295
|
+
const dataItemName = this.model.dataSetting.dataName;
|
|
296
|
+
each(this.model.dataSetting.channels, (channel, key) => {
|
|
297
|
+
const values = new Array();
|
|
298
|
+
each(result, v => values.push({ x: moment(v.time).local().toDate().valueOf(), y: v.values[key] }));
|
|
299
|
+
// 使用"条目名-通道名"格式
|
|
300
|
+
const displayName = `${dataItemName}-${channel.name}`;
|
|
301
|
+
data.push({ key: displayName, area: channel.projectEnabled, values: values });
|
|
302
|
+
});
|
|
303
|
+
}
|
|
186
304
|
this.data = data;
|
|
187
305
|
nv.addGraph(() => {
|
|
188
306
|
let chart;
|
|
@@ -203,8 +321,22 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
203
321
|
.find('.nv-legend')
|
|
204
322
|
.find('.nv-series');
|
|
205
323
|
let hiddenCount = 0;
|
|
324
|
+
// 获取所有通道(支持多条目和单条目模式)
|
|
325
|
+
const allChannels = [];
|
|
326
|
+
if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
|
|
327
|
+
// 【新格式】多条目模式:收集所有条目的所有通道
|
|
328
|
+
each(this.model.dataSetting.dataItems, dataItem => {
|
|
329
|
+
each(dataItem.channels, channel => {
|
|
330
|
+
allChannels.push(channel);
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
// 【旧格式】单条目模式
|
|
336
|
+
allChannels.push(...this.model.dataSetting.channels);
|
|
337
|
+
}
|
|
206
338
|
for (let i = 0; i < this.data.length; i++) {
|
|
207
|
-
const channel =
|
|
339
|
+
const channel = allChannels[i];
|
|
208
340
|
if (legendList.eq(i).children().eq(0).css('fill-opacity') === '1') {
|
|
209
341
|
const pointList = this.$element
|
|
210
342
|
.find('.nv-scatterWrap')
|
|
@@ -346,7 +478,21 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
346
478
|
}
|
|
347
479
|
chart.width(chartWidth);
|
|
348
480
|
chart.height(chartHeight);
|
|
349
|
-
|
|
481
|
+
// 获取所有通道的颜色(支持多条目和单条目模式)
|
|
482
|
+
let channelColors = [];
|
|
483
|
+
if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
|
|
484
|
+
// 【新格式】多条目模式:收集所有条目的所有通道颜色
|
|
485
|
+
each(this.model.dataSetting.dataItems, dataItem => {
|
|
486
|
+
each(dataItem.channels, channel => {
|
|
487
|
+
channelColors.push(channel.connectorColor);
|
|
488
|
+
});
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
// 【旧格式】单条目模式
|
|
493
|
+
channelColors = this.model.dataSetting.channels.map(c => c.connectorColor);
|
|
494
|
+
}
|
|
495
|
+
chart.color(channelColors);
|
|
350
496
|
this.rootElement.append('g').datum(data).call(chart);
|
|
351
497
|
this.rootElement.selectAll('.nv-noData').attr('x', chartWidth / 2).attr('y', chartHeight / 2 + this.displayOption.operationAreaHeight);
|
|
352
498
|
this.resizeEventListener = nv.utils.windowResize(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":23,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":71,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":72,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":73,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":74,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":75,"character":23},{"__symbolic":"reference","module":"../../config","name":"HistoryDataStore","line":76,"character":43},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"SystemTextLibraryService","line":78,"character":52},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":79,"character":43},{"__symbolic":"reference","module":"../../gui/gui-context","name":"GuiContext","line":80,"character":38}]}],"dispose":[{"__symbolic":"method"}],"initKeyboardListener":[{"__symbolic":"method"}],"subscribeLanguageChange":[{"__symbolic":"method"}],"updateLanguageTexts":[{"__symbolic":"method"}],"getCurrentCulture":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"getTimePeriodText":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"reRenderElement":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"handleQueryResult":[{"__symbolic":"method"}],"setupTooltipAutoHide":[{"__symbolic":"method"}],"renderChart":[{"__symbolic":"method"}],"initPoint":[{"__symbolic":"method"}],"getLineChart":[{"__symbolic":"method"}],"getMultiBarWithFocusChart":[{"__symbolic":"method"}],"renderCommonProperty":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"timeFormat":[{"__symbolic":"method"}],"loadFirstPage":[{"__symbolic":"method"}],"loadNextPage":[{"__symbolic":"method"}],"loadPreviousPage":[{"__symbolic":"method"}],"loadLastPage":[{"__symbolic":"method"}],"initElementStatus":[{"__symbolic":"method"}],"updateElementStatus":[{"__symbolic":"method"}],"setStatusAsUnbound":[{"__symbolic":"method"}],"setStatusAsLoading":[{"__symbolic":"method"}],"setStatusAsLoadFailed":[{"__symbolic":"method"}],"renderStatus":[{"__symbolic":"method"}],"clearStatus":[{"__symbolic":"method"}]}}}}]
|
package/elements/main-element.js
CHANGED
|
@@ -29,6 +29,7 @@ import { VideoElement } from './video/video-element';
|
|
|
29
29
|
import { WeatherElement } from './weather/weater-element';
|
|
30
30
|
import { AirQualityElement } from './air-quality/air-quality-element';
|
|
31
31
|
import { AlarmElement } from './alarm/alarm-element';
|
|
32
|
+
import { ScrollAlarmElement } from './scroll-alarm/scroll-alarm-element';
|
|
32
33
|
export class MainElement {
|
|
33
34
|
constructor(injector, bsModalService, context, variableCommunicator, popupViewService, signalRAppId) {
|
|
34
35
|
this.injector = injector;
|
|
@@ -60,7 +61,7 @@ export class MainElement {
|
|
|
60
61
|
const category = $(element).data('model').category;
|
|
61
62
|
switch (category) {
|
|
62
63
|
case GuiConsts.components.numericalDisplayKey:
|
|
63
|
-
const numericalDisplayElement = new NumericalDisplayElement(element, this.injector, this.bsModalService, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.graphStore, this.context.operationRecordService, this.context.releasedVariableService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId);
|
|
64
|
+
const numericalDisplayElement = new NumericalDisplayElement(element, this.injector, this.bsModalService, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.graphStore, this.context.operationRecordService, this.context.releasedVariableService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId, this.context);
|
|
64
65
|
this.elements.push(numericalDisplayElement);
|
|
65
66
|
break;
|
|
66
67
|
case GuiConsts.components.imageKey:
|
|
@@ -73,23 +74,23 @@ export class MainElement {
|
|
|
73
74
|
this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
|
|
74
75
|
break;
|
|
75
76
|
case GuiConsts.components.switchIndicatorLightKey:
|
|
76
|
-
this.elements.push(new SwitchIndicatorLightElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
|
|
77
|
+
this.elements.push(new SwitchIndicatorLightElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
|
|
77
78
|
break;
|
|
78
79
|
case GuiConsts.components.barGraphKey:
|
|
79
80
|
this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
|
|
80
81
|
break;
|
|
81
82
|
case GuiConsts.components.toggleViewKey:
|
|
82
83
|
case GuiConsts.components.viewOperationElement:
|
|
83
|
-
this.elements.push(new ViewOperationElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.injector.get(LOCALIZATION), this.popupViewService, guiOptions.hostContainerId, guiOptions.el, this.signalRAppId));
|
|
84
|
+
this.elements.push(new ViewOperationElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.injector.get(LOCALIZATION), this.popupViewService, guiOptions.hostContainerId, guiOptions.el, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
|
|
84
85
|
break;
|
|
85
86
|
case GuiConsts.components.characterKey:
|
|
86
87
|
this.elements.push(new CharacterDisplayElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
|
|
87
88
|
break;
|
|
88
89
|
case GuiConsts.components.textKey:
|
|
89
|
-
this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
|
|
90
|
+
this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
|
|
90
91
|
break;
|
|
91
92
|
case GuiConsts.components.hyperlinkKey:
|
|
92
|
-
this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
|
|
93
|
+
this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
|
|
93
94
|
break;
|
|
94
95
|
case GuiConsts.components.straightLineKey:
|
|
95
96
|
this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
|
|
@@ -110,7 +111,7 @@ export class MainElement {
|
|
|
110
111
|
this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
|
|
111
112
|
break;
|
|
112
113
|
case GuiConsts.components.historicalCurveKey:
|
|
113
|
-
this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId));
|
|
114
|
+
this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId, this.context.systemTextLibraryService, this.context.languageService, this.context));
|
|
114
115
|
break;
|
|
115
116
|
case GuiConsts.components.ringGraphKey:
|
|
116
117
|
this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
|
|
@@ -131,7 +132,10 @@ export class MainElement {
|
|
|
131
132
|
this.elements.push(new AirQualityElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
|
|
132
133
|
break;
|
|
133
134
|
case GuiConsts.components.alarmKey:
|
|
134
|
-
this.elements.push(new AlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId));
|
|
135
|
+
this.elements.push(new AlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId, this.context.systemTextLibraryService, this.context.languageService, this.context));
|
|
136
|
+
break;
|
|
137
|
+
case GuiConsts.components.scrollAlarmKey:
|
|
138
|
+
this.elements.push(new ScrollAlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId));
|
|
135
139
|
break;
|
|
136
140
|
}
|
|
137
141
|
});
|
|
@@ -298,7 +302,7 @@ export class MainElement {
|
|
|
298
302
|
each(this.elements, e => {
|
|
299
303
|
if (e instanceof HistoricalCurveElement || e instanceof VideoElement
|
|
300
304
|
|| e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement
|
|
301
|
-
|| e instanceof AirQualityElement || e instanceof
|
|
305
|
+
|| e instanceof AirQualityElement || e instanceof ScrollAlarmElement) {
|
|
302
306
|
e.dispose();
|
|
303
307
|
}
|
|
304
308
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":56,"character":43},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":57,"character":41},{"__symbolic":"reference","module":"../gui/gui-context","name":"GuiContext","line":58,"character":34},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":59,"character":47},{"__symbolic":"reference","module":"../view/popup-view.service","name":"PopupViewService","line":60,"character":43},null]}],"load":[{"__symbolic":"method"}],"uniformStretch":[{"__symbolic":"method"}],"changeVideoStyle":[{"__symbolic":"method"}],"horizontalStretch":[{"__symbolic":"method"}],"initElementState":[{"__symbolic":"method"}],"getVariableNames":[{"__symbolic":"method"}],"reportVariableStates":[{"__symbolic":"method"}],"getVirtualDeviceIdFromRect":[{"__symbolic":"method"}],"reportVariableValues":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"checkIsLoaded":[{"__symbolic":"method"}],"initBackground":[{"__symbolic":"method"}],"getImageEl":[{"__symbolic":"method"}]}}}}]
|
|
@@ -4,15 +4,17 @@ import { GraphStore, VariableStore } from '../../config';
|
|
|
4
4
|
import { Localization } from '../../localization';
|
|
5
5
|
import { NumericalDisplay } from '../../model';
|
|
6
6
|
import { PermissionChecker, OperationRecordService, ReleasedVariableService } from '../../service';
|
|
7
|
-
import { VariableCommunicator } from '../../communication';
|
|
7
|
+
import { VariableCommunicator, VariableValue } from '../../communication';
|
|
8
8
|
import { ReadableElement } from '../base/readable-element';
|
|
9
9
|
import { SecurityChecker } from '../../security';
|
|
10
|
+
import { GuiContext } from '../../gui/gui-context';
|
|
10
11
|
export declare class NumericalDisplayElement extends ReadableElement {
|
|
11
12
|
private readonly modalService;
|
|
12
13
|
private readonly graphStore;
|
|
13
14
|
private readonly operationRecordService;
|
|
14
15
|
private readonly releasedVariableService;
|
|
15
16
|
private readonly securityChecker;
|
|
17
|
+
private readonly guiContext?;
|
|
16
18
|
private readonly dataTypeService;
|
|
17
19
|
private readonly fractionDigitService;
|
|
18
20
|
private readonly accessPermissionService;
|
|
@@ -28,8 +30,13 @@ export declare class NumericalDisplayElement extends ReadableElement {
|
|
|
28
30
|
private numericalOperation;
|
|
29
31
|
private restorationTimer;
|
|
30
32
|
get writeVariableName(): string;
|
|
31
|
-
constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, graphStore: GraphStore, operationRecordService: OperationRecordService, releasedVariableService: ReleasedVariableService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string);
|
|
33
|
+
constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, graphStore: GraphStore, operationRecordService: OperationRecordService, releasedVariableService: ReleasedVariableService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string, guiContext?: GuiContext);
|
|
32
34
|
dispose(): void;
|
|
35
|
+
/**
|
|
36
|
+
* 重写父类方法,处理"当前语种ID"系统变量
|
|
37
|
+
* 当值为null时,显示默认语种ID
|
|
38
|
+
*/
|
|
39
|
+
reportValueChanged(value: VariableValue): void;
|
|
33
40
|
initElement(): any;
|
|
34
41
|
private checkElementPassword;
|
|
35
42
|
private initVariableText;
|
|
@@ -18,13 +18,14 @@ var variableRwTypeEnum;
|
|
|
18
18
|
variableRwTypeEnum[variableRwTypeEnum["readWiter"] = 6] = "readWiter";
|
|
19
19
|
})(variableRwTypeEnum || (variableRwTypeEnum = {}));
|
|
20
20
|
export class NumericalDisplayElement extends ReadableElement {
|
|
21
|
-
constructor(element, injector, modalService, permissionChecker, variableCommunicator, graphStore, operationRecordService, releasedVariableService, securityChecker, variableStore, localization, signalRAppId) {
|
|
21
|
+
constructor(element, injector, modalService, permissionChecker, variableCommunicator, graphStore, operationRecordService, releasedVariableService, securityChecker, variableStore, localization, signalRAppId, guiContext) {
|
|
22
22
|
super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
|
|
23
23
|
this.modalService = modalService;
|
|
24
24
|
this.graphStore = graphStore;
|
|
25
25
|
this.operationRecordService = operationRecordService;
|
|
26
26
|
this.releasedVariableService = releasedVariableService;
|
|
27
27
|
this.securityChecker = securityChecker;
|
|
28
|
+
this.guiContext = guiContext;
|
|
28
29
|
this.displayText = '';
|
|
29
30
|
this.enableDataParsed = false;
|
|
30
31
|
this.logger = injector.get(LOGGER_SERVICE_TOKEN);
|
|
@@ -57,6 +58,25 @@ export class NumericalDisplayElement extends ReadableElement {
|
|
|
57
58
|
this.$element.remove();
|
|
58
59
|
}
|
|
59
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* 重写父类方法,处理"当前语种ID"系统变量
|
|
63
|
+
* 当值为null时,显示默认语种ID
|
|
64
|
+
*/
|
|
65
|
+
reportValueChanged(value) {
|
|
66
|
+
var _a, _b, _c;
|
|
67
|
+
// 处理系统变量"当前语种ID"
|
|
68
|
+
if (value.variableName === '当前语种ID') {
|
|
69
|
+
let displayValue = value.value;
|
|
70
|
+
// 如果值为null,使用默认语种ID
|
|
71
|
+
if (displayValue === null || displayValue === undefined) {
|
|
72
|
+
displayValue = (_c = (_b = (_a = this.guiContext) === null || _a === void 0 ? void 0 : _a.getDefaultLanguageId) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : 0;
|
|
73
|
+
}
|
|
74
|
+
this.updateVariableValue(displayValue);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// 其他变量调用父类方法
|
|
78
|
+
super.reportValueChanged(value);
|
|
79
|
+
}
|
|
60
80
|
initElement() {
|
|
61
81
|
const { rootElement } = this;
|
|
62
82
|
rootElement.selectAll('*').remove();
|
|
@@ -180,7 +200,7 @@ export class NumericalDisplayElement extends ReadableElement {
|
|
|
180
200
|
if (null == this.writeVariableName) {
|
|
181
201
|
return;
|
|
182
202
|
}
|
|
183
|
-
const args = new WriteValueModalArgs(this.writeVariableName, this.model.dataType, this.model.fBoxDataType, this.model.integerDigits, this.model.fractionDigits, this.numericalOperationService.getNumericalOperations(this.model), this.model.version, this.enableDataParsed, this.releasedVariableService);
|
|
203
|
+
const args = new WriteValueModalArgs(this.writeVariableName, this.model.dataType, this.model.fBoxDataType, this.model.integerDigits, this.model.fractionDigits, this.numericalOperationService.getNumericalOperations(this.model), this.model.version, this.enableDataParsed, this.releasedVariableService, this.guiContext);
|
|
184
204
|
this.writeValueMmodalRef = this.modalService.show(WriteValueModalComponent, {
|
|
185
205
|
initialState: { args: args }, backdrop: 'static', class: 'gui-modal-dialog-position', animated: false
|
|
186
206
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"NumericalDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"NumericalDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":29,"character":45},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":51,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":52,"character":18},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":53,"character":39},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":54,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":55,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":56,"character":37},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":57,"character":49},{"__symbolic":"reference","module":"../../service","name":"ReleasedVariableService","line":58,"character":50},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":59,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":60,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":61,"character":22},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../gui/gui-context","name":"GuiContext","line":63,"character":38}]}],"dispose":[{"__symbolic":"method"}],"reportValueChanged":[{"__symbolic":"method"}],"initElement":[{"__symbolic":"method"}],"checkElementPassword":[{"__symbolic":"method"}],"initVariableText":[{"__symbolic":"method"}],"initGraphAndText":[{"__symbolic":"method"}],"doWriteValue":[{"__symbolic":"method"}],"recordOperation":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"updateVariableValue":[{"__symbolic":"method"}],"updateDisplayText":[{"__symbolic":"method"}],"rebuildTextElement":[{"__symbolic":"method"}],"formatNumericalDisplayText":[{"__symbolic":"method"}],"formatFloatDisplayText":[{"__symbolic":"method"}],"isNumeric":[{"__symbolic":"method"}],"formatDisplayTextUnit":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
2
|
+
import { PermissionChecker } from '../../service';
|
|
3
|
+
import { VariableCommunicator } from '../../communication';
|
|
4
|
+
import { ConditionalDynamicDisplayElement } from '../base/conditional-dynamic-display-element';
|
|
5
|
+
import { ScrollAlarmModel } from '../../model/scroll-alarm/scroll-alarm.model';
|
|
6
|
+
import { AlarmsStore, VariableStore } from '../../config';
|
|
7
|
+
export declare class ScrollAlarmElement extends ConditionalDynamicDisplayElement {
|
|
8
|
+
private readonly alarmsStore;
|
|
9
|
+
readonly model: ScrollAlarmModel;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
readonly variableCommunicator: VariableCommunicator;
|
|
12
|
+
private elementStatus;
|
|
13
|
+
private element;
|
|
14
|
+
private scrollIntervalId;
|
|
15
|
+
private alarmNames;
|
|
16
|
+
private startTime;
|
|
17
|
+
private endTime;
|
|
18
|
+
private getAlarmDataId;
|
|
19
|
+
private alarmRefreshThrottleId;
|
|
20
|
+
private isWaitingForAlarmRefresh;
|
|
21
|
+
private isScrolling;
|
|
22
|
+
private isDisposed;
|
|
23
|
+
private isRefreshingCurrentPage;
|
|
24
|
+
private currentPage;
|
|
25
|
+
private maxResultCount;
|
|
26
|
+
private displayedItems;
|
|
27
|
+
private pageWidths;
|
|
28
|
+
private totalWidth;
|
|
29
|
+
private container;
|
|
30
|
+
private allAlarmsContainer;
|
|
31
|
+
private currentLeft;
|
|
32
|
+
private autoCycle;
|
|
33
|
+
private hasMoreData;
|
|
34
|
+
private isLoadingNextPage;
|
|
35
|
+
private headerFont;
|
|
36
|
+
private fontString;
|
|
37
|
+
private hasTriedFirstPage;
|
|
38
|
+
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, alarmsStore: AlarmsStore, signalRAppId: string);
|
|
39
|
+
dispose(): void;
|
|
40
|
+
private getAlarmData;
|
|
41
|
+
private initDisplayContainer;
|
|
42
|
+
private renderNewPage;
|
|
43
|
+
private removeOldestPage;
|
|
44
|
+
private scrollContent;
|
|
45
|
+
private initScrolling;
|
|
46
|
+
private pauseScroll;
|
|
47
|
+
private resumeScroll;
|
|
48
|
+
private resetToFirstPage;
|
|
49
|
+
private updateQueryTimeRange;
|
|
50
|
+
private setStatusAsNormal;
|
|
51
|
+
private setStatusAsLoading;
|
|
52
|
+
private renderStatus;
|
|
53
|
+
private clearStatus;
|
|
54
|
+
}
|