@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
|
@@ -10,5 +10,7 @@ export interface VariableCommunicator {
|
|
|
10
10
|
subscribeVariableState(variableName: string): Observable<VariableState>;
|
|
11
11
|
subscribeVariableStates(variableNames: Array<string>): Observable<Array<VariableState>>;
|
|
12
12
|
subscribeUserDeviceAlarms(appId: string): any;
|
|
13
|
+
registerSystemVariableHandler?(variableName: string, getValue: () => Promise<any>, setValue: (value: any) => Promise<void>): void;
|
|
14
|
+
notifySystemVariableChange?(variableName: string, value: any): void;
|
|
13
15
|
dispose(): any;
|
|
14
16
|
}
|
|
@@ -5,5 +5,8 @@ export declare class GetAlarmsArgs {
|
|
|
5
5
|
readonly triggeredEndTime: moment.Moment;
|
|
6
6
|
readonly maxResultCount: number;
|
|
7
7
|
readonly skipCount: number;
|
|
8
|
-
|
|
8
|
+
readonly state?: number[];
|
|
9
|
+
readonly sorting?: string;
|
|
10
|
+
constructor(alarmNames: string[], triggeredStartTime: moment.Moment, triggeredEndTime: moment.Moment, maxResultCount: number, skipCount: number, state?: number[], // 告警状态数组 (0=触发/未确认, 1=触发/已确认, 2=恢复/未确认, 3=恢复/已确认)
|
|
11
|
+
sorting?: string);
|
|
9
12
|
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export class GetAlarmsArgs {
|
|
2
|
-
constructor(alarmNames, triggeredStartTime, triggeredEndTime, maxResultCount, skipCount)
|
|
2
|
+
constructor(alarmNames, triggeredStartTime, triggeredEndTime, maxResultCount, skipCount, state, // 告警状态数组 (0=触发/未确认, 1=触发/已确认, 2=恢复/未确认, 3=恢复/已确认)
|
|
3
|
+
sorting // 排序字段 (如: "TriggeredTime DESC" 或 "TriggeredTime ASC")
|
|
4
|
+
) {
|
|
3
5
|
this.alarmNames = alarmNames;
|
|
4
6
|
this.triggeredStartTime = triggeredStartTime;
|
|
5
7
|
this.triggeredEndTime = triggeredEndTime;
|
|
6
8
|
this.maxResultCount = maxResultCount;
|
|
7
9
|
this.skipCount = skipCount;
|
|
10
|
+
this.state = state;
|
|
11
|
+
this.sorting = sorting;
|
|
8
12
|
}
|
|
9
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"GetAlarmsArgs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","module":"moment","name":"Moment","line":5,"character":37},{"__symbolic":"reference","module":"moment","name":"Moment","line":6,"character":35},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"number"}]}]}}}}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"GetAlarmsArgs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","module":"moment","name":"Moment","line":5,"character":37},{"__symbolic":"reference","module":"moment","name":"Moment","line":6,"character":35},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"number"}]},{"__symbolic":"reference","name":"string"}]}]}}}}]
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import * as moment from 'moment';
|
|
2
2
|
import { HistoricalCurveTimeRange } from './historical-curve.time-range';
|
|
3
|
+
/**
|
|
4
|
+
* 单个历史数据条目查询参数
|
|
5
|
+
*/
|
|
6
|
+
export interface HistoryDataItemArgs {
|
|
7
|
+
/** 历史数据条目名称 */
|
|
8
|
+
dataItemName: string;
|
|
9
|
+
/** 该条目下的通道名称列表 */
|
|
10
|
+
channelNames: Array<string>;
|
|
11
|
+
}
|
|
3
12
|
export declare class GetHistoryDataArgs {
|
|
4
13
|
readonly dataSourceCode: number;
|
|
5
14
|
readonly dataItemName: string;
|
|
@@ -8,15 +17,17 @@ export declare class GetHistoryDataArgs {
|
|
|
8
17
|
readonly endTime: moment.Moment;
|
|
9
18
|
readonly limit: number;
|
|
10
19
|
readonly rangeType: HistoricalCurveTimeRange;
|
|
20
|
+
readonly historyDataItems?: Array<HistoryDataItemArgs>;
|
|
11
21
|
/**
|
|
12
22
|
* 获取历史数据参数
|
|
13
23
|
* @param dataSourceCode 数据源编码
|
|
14
|
-
* @param dataItemName
|
|
15
|
-
* @param channelNames
|
|
24
|
+
* @param dataItemName 历史数据条目名称(单条目模式,兼容旧版)
|
|
25
|
+
* @param channelNames 通道名称(单条目模式,兼容旧版)
|
|
16
26
|
* @param startTime 开始时间
|
|
17
27
|
* @param endTime 结束时间
|
|
18
28
|
* @param limit 获取数据数量,为负数则倒叙
|
|
19
29
|
* @param rangeType 区间类型
|
|
30
|
+
* @param historyDataItems 多条目模式:多个历史数据条目及其通道配置
|
|
20
31
|
*/
|
|
21
|
-
constructor(dataSourceCode: number, dataItemName: string, channelNames: Array<string>, startTime: moment.Moment, endTime: moment.Moment, limit: number, rangeType: HistoricalCurveTimeRange);
|
|
32
|
+
constructor(dataSourceCode: number, dataItemName: string, channelNames: Array<string>, startTime: moment.Moment, endTime: moment.Moment, limit: number, rangeType: HistoricalCurveTimeRange, historyDataItems?: Array<HistoryDataItemArgs>);
|
|
22
33
|
}
|
|
@@ -2,14 +2,15 @@ export class GetHistoryDataArgs {
|
|
|
2
2
|
/**
|
|
3
3
|
* 获取历史数据参数
|
|
4
4
|
* @param dataSourceCode 数据源编码
|
|
5
|
-
* @param dataItemName
|
|
6
|
-
* @param channelNames
|
|
5
|
+
* @param dataItemName 历史数据条目名称(单条目模式,兼容旧版)
|
|
6
|
+
* @param channelNames 通道名称(单条目模式,兼容旧版)
|
|
7
7
|
* @param startTime 开始时间
|
|
8
8
|
* @param endTime 结束时间
|
|
9
9
|
* @param limit 获取数据数量,为负数则倒叙
|
|
10
10
|
* @param rangeType 区间类型
|
|
11
|
+
* @param historyDataItems 多条目模式:多个历史数据条目及其通道配置
|
|
11
12
|
*/
|
|
12
|
-
constructor(dataSourceCode, dataItemName, channelNames, startTime, endTime, limit, rangeType) {
|
|
13
|
+
constructor(dataSourceCode, dataItemName, channelNames, startTime, endTime, limit, rangeType, historyDataItems) {
|
|
13
14
|
this.dataSourceCode = dataSourceCode;
|
|
14
15
|
this.dataItemName = dataItemName;
|
|
15
16
|
this.channelNames = channelNames;
|
|
@@ -17,5 +18,6 @@ export class GetHistoryDataArgs {
|
|
|
17
18
|
this.endTime = endTime;
|
|
18
19
|
this.limit = limit;
|
|
19
20
|
this.rangeType = rangeType;
|
|
21
|
+
this.historyDataItems = historyDataItems;
|
|
20
22
|
}
|
|
21
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"GetHistoryDataArgs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"HistoryDataItemArgs":{"__symbolic":"interface"},"GetHistoryDataArgs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"moment","name":"Moment","line":28,"character":28},{"__symbolic":"reference","module":"moment","name":"Moment","line":29,"character":26},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","module":"./historical-curve.time-range","name":"HistoricalCurveTimeRange","line":31,"character":28},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}}}]
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { Injector } from '@angular/core';
|
|
2
|
-
import { PermissionChecker } from '../../service';
|
|
2
|
+
import { PermissionChecker, SystemTextLibraryService, LanguageService } from '../../service';
|
|
3
3
|
import { VariableCommunicator } from '../../communication';
|
|
4
4
|
import { ConditionalDisplayElement } from '../base/conditional-display-element';
|
|
5
5
|
import { AlarmModel } from '../../model/alarm/alarm.model';
|
|
6
6
|
import { AlarmsStore, VariableStore } from '../../config';
|
|
7
|
+
import { GuiContext } from '../../gui/gui-context';
|
|
7
8
|
export declare class AlarmElement extends ConditionalDisplayElement {
|
|
8
9
|
private readonly alarmsStore;
|
|
10
|
+
private readonly systemTextLibraryService?;
|
|
11
|
+
private readonly languageService?;
|
|
12
|
+
private readonly guiContext?;
|
|
9
13
|
readonly model: AlarmModel;
|
|
10
14
|
private readonly logger;
|
|
11
15
|
readonly variableCommunicator: VariableCommunicator;
|
|
12
|
-
private readonly localization;
|
|
13
16
|
private readonly timePeriods;
|
|
17
|
+
private languageChangeSubscription?;
|
|
14
18
|
private elementStatus;
|
|
15
19
|
private element;
|
|
16
20
|
private refreshIntervalId;
|
|
@@ -25,9 +29,30 @@ export declare class AlarmElement extends ConditionalDisplayElement {
|
|
|
25
29
|
private totalCount;
|
|
26
30
|
private pageSize;
|
|
27
31
|
private getAlarmDataId;
|
|
28
|
-
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, alarmsStore: AlarmsStore, signalRAppId: string);
|
|
32
|
+
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, alarmsStore: AlarmsStore, signalRAppId: string, systemTextLibraryService?: SystemTextLibraryService, languageService?: LanguageService, guiContext?: GuiContext);
|
|
29
33
|
dispose(): void;
|
|
34
|
+
/**
|
|
35
|
+
* 订阅语种变化事件
|
|
36
|
+
*/
|
|
37
|
+
private subscribeLanguageChange;
|
|
38
|
+
/**
|
|
39
|
+
* 更新语种相关的文案(表头和时间段选择器)
|
|
40
|
+
*/
|
|
41
|
+
private updateLanguageTexts;
|
|
42
|
+
/**
|
|
43
|
+
* 获取当前语种的 culture 代码
|
|
44
|
+
*/
|
|
45
|
+
private getCurrentCulture;
|
|
46
|
+
/**
|
|
47
|
+
* 根据列索引获取表头翻译(从系统文本库获取多语种翻译)
|
|
48
|
+
* 固定4项表头,按列索引顺序:告警名称、告警内容、告警等级、时间
|
|
49
|
+
*/
|
|
50
|
+
private getHeaderTextByColumn;
|
|
30
51
|
private getValidTimePeriods;
|
|
52
|
+
/**
|
|
53
|
+
* 获取时间段文案(从系统文本库获取多语种翻译)
|
|
54
|
+
*/
|
|
55
|
+
private getTimePeriodText;
|
|
31
56
|
private getAlarmData;
|
|
32
57
|
private renderElement;
|
|
33
58
|
private renderOperationArea;
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import * as d3 from 'd3';
|
|
2
|
+
import { SYSTEM_TEXT_LIBRARY_TYPES, ALARM_TABLE_HEADER_KEYS, TIME_PERIOD_KEYS } from '../../service';
|
|
2
3
|
import { ConditionalDisplayElement } from '../base/conditional-display-element';
|
|
3
4
|
import { GetAlarmsArgs } from '../../config';
|
|
4
5
|
import * as moment from 'moment';
|
|
5
6
|
import { LOGGER_SERVICE_TOKEN } from '../../logger';
|
|
6
|
-
import { LOCALIZATION } from '../../localization';
|
|
7
7
|
var AlaertElementStatus;
|
|
8
8
|
(function (AlaertElementStatus) {
|
|
9
9
|
AlaertElementStatus[AlaertElementStatus["Normal"] = 0] = "Normal";
|
|
10
10
|
AlaertElementStatus[AlaertElementStatus["Loading"] = 1] = "Loading"; // 加载中
|
|
11
11
|
})(AlaertElementStatus || (AlaertElementStatus = {}));
|
|
12
12
|
export class AlarmElement extends ConditionalDisplayElement {
|
|
13
|
-
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, alarmsStore, signalRAppId) {
|
|
13
|
+
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, alarmsStore, signalRAppId, systemTextLibraryService, languageService, guiContext) {
|
|
14
14
|
var _a;
|
|
15
15
|
super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
|
|
16
16
|
this.alarmsStore = alarmsStore;
|
|
17
|
+
this.systemTextLibraryService = systemTextLibraryService;
|
|
18
|
+
this.languageService = languageService;
|
|
19
|
+
this.guiContext = guiContext;
|
|
17
20
|
this.elementStatus = AlaertElementStatus.Loading;
|
|
18
21
|
this.displayOption = {
|
|
19
22
|
dataLimit: 500,
|
|
@@ -37,11 +40,12 @@ export class AlarmElement extends ConditionalDisplayElement {
|
|
|
37
40
|
this.rootElement.selectAll('*').remove();
|
|
38
41
|
this.setStatusAsLoading();
|
|
39
42
|
this.logger = injector.get(LOGGER_SERVICE_TOKEN);
|
|
40
|
-
this.localization = injector.get(LOCALIZATION);
|
|
41
43
|
this.variableCommunicator = variableCommunicator;
|
|
42
44
|
this.timePeriods = this.getValidTimePeriods();
|
|
43
45
|
this.pageSize = this.model.generalSetting.pageSize;
|
|
44
46
|
localStorage.setItem('simulate-time', moment().valueOf() + '');
|
|
47
|
+
// 订阅语种变化事件
|
|
48
|
+
this.subscribeLanguageChange();
|
|
45
49
|
if (this.model.filterSetting) {
|
|
46
50
|
this.alarmNames = this.model.filterSetting.detailsData.map(item => item.name);
|
|
47
51
|
this.currentTimePeriod = (_a = this.model.filterSetting) === null || _a === void 0 ? void 0 : _a.displayPeriod;
|
|
@@ -75,19 +79,125 @@ export class AlarmElement extends ConditionalDisplayElement {
|
|
|
75
79
|
if (this.element) {
|
|
76
80
|
this.element.tooltip.hidden(true);
|
|
77
81
|
}
|
|
82
|
+
// 取消语种变化订阅
|
|
83
|
+
if (this.languageChangeSubscription) {
|
|
84
|
+
this.languageChangeSubscription.unsubscribe();
|
|
85
|
+
this.languageChangeSubscription = undefined;
|
|
86
|
+
}
|
|
78
87
|
this.logger.debug(`[GUI]Dispose Alarm Table Refresh Interval:${d3.time.format('%x %X')(new Date())}`);
|
|
79
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* 订阅语种变化事件
|
|
91
|
+
*/
|
|
92
|
+
subscribeLanguageChange() {
|
|
93
|
+
if (this.guiContext && this.guiContext.languageChanged$) {
|
|
94
|
+
this.languageChangeSubscription = this.guiContext.languageChanged$.subscribe(() => {
|
|
95
|
+
// 只更新文案,不重新查询数据
|
|
96
|
+
this.updateLanguageTexts();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 更新语种相关的文案(表头和时间段选择器)
|
|
102
|
+
*/
|
|
103
|
+
updateLanguageTexts() {
|
|
104
|
+
var _a;
|
|
105
|
+
// 更新表头文本
|
|
106
|
+
const headerCells = this.$element.find('table th');
|
|
107
|
+
for (let col = 0; col < 4 && col < headerCells.length; col++) {
|
|
108
|
+
headerCells.eq(col).text(this.getHeaderTextByColumn(col));
|
|
109
|
+
}
|
|
110
|
+
// 更新时间段选择器选项
|
|
111
|
+
if ((_a = this.model.filterSetting) === null || _a === void 0 ? void 0 : _a.alarmType) {
|
|
112
|
+
const selectElement = this.rootElement.select('select');
|
|
113
|
+
if (!selectElement.empty()) {
|
|
114
|
+
// 重新生成时间段数据
|
|
115
|
+
const updatedTimePeriods = this.getValidTimePeriods();
|
|
116
|
+
// 更新选项文本
|
|
117
|
+
const options = selectElement.selectAll('option');
|
|
118
|
+
options.each(function (_d, i) {
|
|
119
|
+
if (i < updatedTimePeriods.length) {
|
|
120
|
+
d3.select(this).text(updatedTimePeriods[i].name);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 获取当前语种的 culture 代码
|
|
128
|
+
*/
|
|
129
|
+
getCurrentCulture() {
|
|
130
|
+
var _a, _b, _c, _e, _f, _g;
|
|
131
|
+
// 获取当前语种ID
|
|
132
|
+
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;
|
|
133
|
+
// 确定要使用的语种代码(culture)
|
|
134
|
+
const defaultLanguage = ((_e = this.languageService) === null || _e === void 0 ? void 0 : _e.getDefaultLanguage()) || 'zh-CN';
|
|
135
|
+
if (currentLanguageId === null || currentLanguageId === undefined) {
|
|
136
|
+
// 设备未设置当前语种,使用默认语种
|
|
137
|
+
return defaultLanguage;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// 设备已设置当前语种,获取对应的语种代码
|
|
141
|
+
const currentLanguage = (_g = (_f = this.guiContext) === null || _f === void 0 ? void 0 : _f.getLanguageCultureById) === null || _g === void 0 ? void 0 : _g.call(_f, currentLanguageId);
|
|
142
|
+
if (currentLanguage) {
|
|
143
|
+
return currentLanguage;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// 无法获取语种代码,使用默认语种
|
|
147
|
+
return defaultLanguage;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 根据列索引获取表头翻译(从系统文本库获取多语种翻译)
|
|
153
|
+
* 固定4项表头,按列索引顺序:告警名称、告警内容、告警等级、时间
|
|
154
|
+
*/
|
|
155
|
+
getHeaderTextByColumn(columnIndex) {
|
|
156
|
+
if (columnIndex < 0 || columnIndex > 3) {
|
|
157
|
+
return '';
|
|
158
|
+
}
|
|
159
|
+
const currentCulture = this.getCurrentCulture();
|
|
160
|
+
const systemType = SYSTEM_TEXT_LIBRARY_TYPES.COMPONENT_BUILTIN;
|
|
161
|
+
const headerKeys = [
|
|
162
|
+
ALARM_TABLE_HEADER_KEYS.ALARM_NAME,
|
|
163
|
+
ALARM_TABLE_HEADER_KEYS.ALARM_MESSAGE,
|
|
164
|
+
ALARM_TABLE_HEADER_KEYS.ALARM_LEVEL,
|
|
165
|
+
ALARM_TABLE_HEADER_KEYS.TIME
|
|
166
|
+
];
|
|
167
|
+
// 尝试从系统文本库获取翻译
|
|
168
|
+
if (this.systemTextLibraryService) {
|
|
169
|
+
const translation = this.systemTextLibraryService.getSystemTextValue(systemType, headerKeys[columnIndex], currentCulture);
|
|
170
|
+
if (translation) {
|
|
171
|
+
return translation;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return '';
|
|
175
|
+
}
|
|
80
176
|
getValidTimePeriods() {
|
|
81
177
|
const timePeriods = new Array();
|
|
82
|
-
timePeriods.push({ key: 6, name: this.
|
|
83
|
-
timePeriods.push({ key: 1, name: this.
|
|
84
|
-
timePeriods.push({ key: 7, name: this.
|
|
85
|
-
timePeriods.push({ key: 2, name: this.
|
|
86
|
-
timePeriods.push({ key: 3, name: this.
|
|
87
|
-
timePeriods.push({ key: 4, name: this.
|
|
88
|
-
timePeriods.push({ key: 5, name: this.
|
|
178
|
+
timePeriods.push({ key: 6, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_THIRTY_MINUTES) });
|
|
179
|
+
timePeriods.push({ key: 1, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_ONE_HOUR) });
|
|
180
|
+
timePeriods.push({ key: 7, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_EIGHT_HOURS) });
|
|
181
|
+
timePeriods.push({ key: 2, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_TWENTY_FOUR_HOURS) });
|
|
182
|
+
timePeriods.push({ key: 3, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_SEVEN_DAYS) });
|
|
183
|
+
timePeriods.push({ key: 4, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_THIRTY_DAYS) });
|
|
184
|
+
timePeriods.push({ key: 5, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_ONE_YEAR) });
|
|
89
185
|
return timePeriods;
|
|
90
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* 获取时间段文案(从系统文本库获取多语种翻译)
|
|
189
|
+
*/
|
|
190
|
+
getTimePeriodText(textKey) {
|
|
191
|
+
const currentCulture = this.getCurrentCulture();
|
|
192
|
+
const systemType = SYSTEM_TEXT_LIBRARY_TYPES.COMPONENT_BUILTIN;
|
|
193
|
+
if (this.systemTextLibraryService) {
|
|
194
|
+
const translation = this.systemTextLibraryService.getSystemTextValue(systemType, textKey, currentCulture);
|
|
195
|
+
if (translation) {
|
|
196
|
+
return translation;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return '';
|
|
200
|
+
}
|
|
91
201
|
getAlarmData() {
|
|
92
202
|
this.rootElement.selectAll('*').remove();
|
|
93
203
|
this.setStatusAsLoading();
|
|
@@ -157,13 +267,13 @@ export class AlarmElement extends ConditionalDisplayElement {
|
|
|
157
267
|
text-align: ${this.model.generalSetting.headerFont.textAlign};
|
|
158
268
|
${this.model.generalSetting.headerFont.isUnderline ? 'text-decoration: underline' : ''};
|
|
159
269
|
vertical-align: middle;`;
|
|
160
|
-
for (let
|
|
270
|
+
for (let col = 0; col < 4; col++) {
|
|
161
271
|
const th = document.createElement('th');
|
|
162
|
-
th.innerHTML = this.
|
|
163
|
-
th.style.cssText = `width: ${this.model.widths[
|
|
272
|
+
th.innerHTML = this.getHeaderTextByColumn(col);
|
|
273
|
+
th.style.cssText = `width: ${this.model.widths[col] / this.model.size.width * 100}%;
|
|
164
274
|
border-style: solid;
|
|
165
275
|
border-color: ${this.model.generalSetting.splitLine};
|
|
166
|
-
border-left-width: ${!
|
|
276
|
+
border-left-width: ${!col || this.model.generalSetting.isHiddenColumnSplitLine ? 0 : 1}px;`;
|
|
167
277
|
tr.appendChild(th);
|
|
168
278
|
}
|
|
169
279
|
table.appendChild(tr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"AlarmElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"AlarmElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":21,"character":34},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":55,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":56,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":57,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":58,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":59,"character":23},{"__symbolic":"reference","module":"../../config","name":"AlarmsStore","line":60,"character":38},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"SystemTextLibraryService","line":62,"character":52},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":63,"character":43},{"__symbolic":"reference","module":"../../gui/gui-context","name":"GuiContext","line":64,"character":38}]}],"dispose":[{"__symbolic":"method"}],"subscribeLanguageChange":[{"__symbolic":"method"}],"updateLanguageTexts":[{"__symbolic":"method"}],"getCurrentCulture":[{"__symbolic":"method"}],"getHeaderTextByColumn":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"getTimePeriodText":[{"__symbolic":"method"}],"getAlarmData":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"loadFirstPage":[{"__symbolic":"method"}],"loadNextPage":[{"__symbolic":"method"}],"loadPreviousPage":[{"__symbolic":"method"}],"loadLastPage":[{"__symbolic":"method"}],"setStatusAsNormal":[{"__symbolic":"method"}],"setStatusAsLoading":[{"__symbolic":"method"}],"renderStatus":[{"__symbolic":"method"}],"clearStatus":[{"__symbolic":"method"}]}}}}]
|
|
@@ -79,11 +79,7 @@ export class ReadableElement extends ConditionalEnableElement {
|
|
|
79
79
|
this.changeStates();
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
|
-
|
|
83
|
-
|| value.variableName === this.minVariableName
|
|
84
|
-
|| value.variableName === this.maxVariableName)) {
|
|
85
|
-
this.updateVariableValue(value.value, value.variableName);
|
|
86
|
-
}
|
|
82
|
+
// 处理系统变量"设备状态"
|
|
87
83
|
if (value.systemName === '设备状态') {
|
|
88
84
|
let name = value.customStatus;
|
|
89
85
|
const language = ((_b = (_a = window.abp.localization) === null || _a === void 0 ? void 0 : _a.currentLanguage) === null || _b === void 0 ? void 0 : _b.name) || ((_d = (_c = this.localization.localizationService) === null || _c === void 0 ? void 0 : _c.translate) === null || _d === void 0 ? void 0 : _d.currentLang);
|
|
@@ -106,6 +102,19 @@ export class ReadableElement extends ConditionalEnableElement {
|
|
|
106
102
|
}
|
|
107
103
|
}
|
|
108
104
|
this.updateVariableValue(name, '设备状态');
|
|
105
|
+
return; // 处理完"设备状态"后直接返回
|
|
106
|
+
}
|
|
107
|
+
// 处理系统变量"当前语种ID"
|
|
108
|
+
if (value.variableName === '当前语种ID') {
|
|
109
|
+
// 直接使用变量值(数字或null)
|
|
110
|
+
this.updateVariableValue(value.value, value.variableName);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// 处理普通变量
|
|
114
|
+
if (this.state === State.Normal || this.state === State.Disable
|
|
115
|
+
|| value.variableName === this.minVariableName
|
|
116
|
+
|| value.variableName === this.maxVariableName) {
|
|
117
|
+
this.updateVariableValue(value.value, value.variableName);
|
|
109
118
|
}
|
|
110
119
|
}
|
|
111
120
|
}
|
|
@@ -139,8 +139,8 @@ export class StateControlElement extends ConditionalDynamicDisplayElement {
|
|
|
139
139
|
if (!this.currentRect.length) {
|
|
140
140
|
return;
|
|
141
141
|
}
|
|
142
|
-
//
|
|
143
|
-
if (this.$element[0].dataset.model.includes('设备状态'))
|
|
142
|
+
// 元件绑定设备状态或当前语种ID时不需要在右上角显示状态
|
|
143
|
+
if (this.$element[0].dataset.model.includes('设备状态') || this.$element[0].dataset.model.includes('当前语种ID'))
|
|
144
144
|
return;
|
|
145
145
|
const document = this.$element[0].ownerDocument;
|
|
146
146
|
const imgObj = document.createElementNS('http://www.w3.org/2000/svg', 'image');
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { VariableCommunicator } from '../../communication';
|
|
2
2
|
import { HistoryDataStore, VariableStore } from '../../config';
|
|
3
3
|
import { HistoricalCurveModel } from '../../model/historical-curve/historical-curve.model';
|
|
4
|
-
import { PermissionChecker } from '../../service';
|
|
4
|
+
import { PermissionChecker, SystemTextLibraryService, LanguageService } from '../../service';
|
|
5
5
|
import { ConditionalDisplayElement } from '../base/conditional-display-element';
|
|
6
6
|
import { Injector } from '@angular/core';
|
|
7
|
+
import { GuiContext } from '../../gui/gui-context';
|
|
7
8
|
export declare class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
8
9
|
private readonly historyDataStore;
|
|
10
|
+
private readonly systemTextLibraryService?;
|
|
11
|
+
private readonly languageService?;
|
|
12
|
+
private readonly guiContext?;
|
|
9
13
|
readonly model: HistoricalCurveModel;
|
|
10
14
|
private readonly logger;
|
|
11
15
|
private readonly localization;
|
|
12
16
|
private readonly timePeriods;
|
|
17
|
+
private languageChangeSubscription?;
|
|
13
18
|
private readonly displayOption;
|
|
14
19
|
/**
|
|
15
20
|
* 当前时间段的开始时间
|
|
@@ -37,15 +42,32 @@ export declare class HistoricalCurveElement extends ConditionalDisplayElement {
|
|
|
37
42
|
private resizeEventListener;
|
|
38
43
|
private isAndroid;
|
|
39
44
|
private needResize;
|
|
40
|
-
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, historyDataStore: HistoryDataStore, signalRAppId: string);
|
|
45
|
+
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, historyDataStore: HistoryDataStore, signalRAppId: string, systemTextLibraryService?: SystemTextLibraryService, languageService?: LanguageService, guiContext?: GuiContext);
|
|
41
46
|
dispose(): void;
|
|
42
47
|
private initKeyboardListener;
|
|
43
48
|
private setNeedResize;
|
|
49
|
+
/**
|
|
50
|
+
* 订阅语种变化事件
|
|
51
|
+
*/
|
|
52
|
+
private subscribeLanguageChange;
|
|
53
|
+
/**
|
|
54
|
+
* 更新语种相关的文案(时间段选择器)
|
|
55
|
+
*/
|
|
56
|
+
private updateLanguageTexts;
|
|
57
|
+
/**
|
|
58
|
+
* 获取当前语种的 culture 代码
|
|
59
|
+
*/
|
|
60
|
+
private getCurrentCulture;
|
|
44
61
|
private getValidTimePeriods;
|
|
62
|
+
/**
|
|
63
|
+
* 获取时间段文案(从系统文本库获取多语种翻译)
|
|
64
|
+
*/
|
|
65
|
+
private getTimePeriodText;
|
|
45
66
|
private updateTimeRange;
|
|
46
67
|
private updateQueryTimeRange;
|
|
47
68
|
private reRenderElement;
|
|
48
69
|
private renderElement;
|
|
70
|
+
private handleQueryResult;
|
|
49
71
|
setupTooltipAutoHide(chart: any): void;
|
|
50
72
|
private renderChart;
|
|
51
73
|
initPoint(): void;
|