@flexem/fc-gui 3.0.0-alpha.123 → 3.0.0-alpha.124
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 +2027 -1221
- 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/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 +13 -3
- package/elements/alarm/alarm-element.js +56 -14
- package/elements/alarm/alarm-element.metadata.json +1 -1
- package/elements/historical-curve/historical-curve.element.d.ts +9 -2
- package/elements/historical-curve/historical-curve.element.js +120 -34
- package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
- package/elements/main-element.js +10 -6
- package/elements/main-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-state-element.d.ts +12 -1
- package/elements/shared/text/text-state-element.js +40 -2
- package/elements/shared/text/text-state-element.metadata.json +1 -1
- package/elements/static-elements/hyperlink-element.d.ts +10 -2
- package/elements/static-elements/hyperlink-element.js +41 -2
- package/elements/static-elements/hyperlink-element.metadata.json +1 -1
- package/elements/static-elements/text-element.d.ts +10 -2
- package/elements/static-elements/text-element.js +41 -2
- package/elements/static-elements/text-element.metadata.json +1 -1
- package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +4 -4
- package/elements/switch-indicator-light/switch-indicator-light-element.js +5 -27
- package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
- package/gui/gui-context.d.ts +4 -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/package.json +1 -1
- package/public_api.js +1 -0
- 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
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { LoggerService } from '../../../logger';
|
|
2
|
+
import { TextLibrarySetting } from '../../../model/base/font-setting-model';
|
|
2
3
|
import { IndicatorLightFaultFlicker } from '../../../model/switch-indicator-light/indicator-light-fault-flicker';
|
|
4
|
+
import { TextLibraryService, LanguageService } from '../../../service';
|
|
3
5
|
import { TextState } from './text-state.model';
|
|
4
6
|
export declare class TextStateElement {
|
|
5
7
|
private readonly textStates;
|
|
@@ -8,15 +10,24 @@ export declare class TextStateElement {
|
|
|
8
10
|
private readonly logger;
|
|
9
11
|
private readonly version?;
|
|
10
12
|
private readonly faultFlickers?;
|
|
13
|
+
private readonly textLibrarySetting?;
|
|
14
|
+
private readonly textLibraryService?;
|
|
15
|
+
private readonly languageService?;
|
|
11
16
|
private textElement;
|
|
12
17
|
private _element;
|
|
13
18
|
get Element(): SVGElement;
|
|
14
19
|
private faultFlickerStatus;
|
|
15
20
|
private faultFlickerInterval;
|
|
16
|
-
constructor(textStates: TextState[], width: number, height: number, logger: LoggerService, version?: number, faultFlickers?: IndicatorLightFaultFlicker[]);
|
|
21
|
+
constructor(textStates: TextState[], width: number, height: number, logger: LoggerService, version?: number, faultFlickers?: IndicatorLightFaultFlicker[], textLibrarySetting?: TextLibrarySetting, textLibraryService?: TextLibraryService, languageService?: LanguageService);
|
|
17
22
|
switchToState(stateId: number): void;
|
|
18
23
|
private getforeignObjectElement;
|
|
19
24
|
private removeForeignObjectlement;
|
|
20
25
|
private doFaultFlicker;
|
|
21
26
|
private clearFlickerInterval;
|
|
27
|
+
/**
|
|
28
|
+
* 获取显示文本
|
|
29
|
+
* 如果配置了文本库,则根据状态ID从文本库中获取对应语种的文本
|
|
30
|
+
* 否则返回默认文本
|
|
31
|
+
*/
|
|
32
|
+
private getDisplayText;
|
|
22
33
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Flicker } from '../../../model';
|
|
2
2
|
export class TextStateElement {
|
|
3
|
-
constructor(textStates, width, height, logger, version, faultFlickers) {
|
|
3
|
+
constructor(textStates, width, height, logger, version, faultFlickers, textLibrarySetting, textLibraryService, languageService) {
|
|
4
4
|
this.textStates = textStates;
|
|
5
5
|
this.width = width;
|
|
6
6
|
this.height = height;
|
|
7
7
|
this.logger = logger;
|
|
8
8
|
this.version = version;
|
|
9
9
|
this.faultFlickers = faultFlickers;
|
|
10
|
+
this.textLibrarySetting = textLibrarySetting;
|
|
11
|
+
this.textLibraryService = textLibraryService;
|
|
12
|
+
this.languageService = languageService;
|
|
10
13
|
this.faultFlickerStatus = false;
|
|
11
14
|
this.faultFlickerInterval = undefined;
|
|
12
15
|
this._element = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
@@ -21,7 +24,8 @@ export class TextStateElement {
|
|
|
21
24
|
this.logger.debug(`Can not find text state:${stateId}.`);
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
24
|
-
|
|
27
|
+
// 获取显示文本(支持文本库)
|
|
28
|
+
const content = this.getDisplayText(stateId, textState.text.content);
|
|
25
29
|
if (content === '' || content == null) {
|
|
26
30
|
this.removeForeignObjectlement();
|
|
27
31
|
return;
|
|
@@ -111,4 +115,38 @@ export class TextStateElement {
|
|
|
111
115
|
}
|
|
112
116
|
}
|
|
113
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* 获取显示文本
|
|
120
|
+
* 如果配置了文本库,则根据状态ID从文本库中获取对应语种的文本
|
|
121
|
+
* 否则返回默认文本
|
|
122
|
+
*/
|
|
123
|
+
getDisplayText(stateId, defaultContent) {
|
|
124
|
+
var _a;
|
|
125
|
+
// 检查是否使用文本库
|
|
126
|
+
if (this.textLibrarySetting && this.textLibrarySetting.labelType === 'textLibrary') {
|
|
127
|
+
const textLibraryId = this.textLibrarySetting.selectedTextLibraryItem;
|
|
128
|
+
if (textLibraryId && this.textLibraryService) {
|
|
129
|
+
// 获取当前默认语种
|
|
130
|
+
const currentLanguage = ((_a = this.languageService) === null || _a === void 0 ? void 0 : _a.getDefaultLanguage()) || 'zh-CN';
|
|
131
|
+
// 获取文本库数据
|
|
132
|
+
const textLibraryData = this.textLibraryService.getTextLibraryById(typeof textLibraryId === 'string' ? parseInt(textLibraryId, 10) : textLibraryId);
|
|
133
|
+
if (textLibraryData && textLibraryData.data) {
|
|
134
|
+
// 使用状态ID作为value查找对应的文本条目
|
|
135
|
+
const textEntry = textLibraryData.data.find(entry => entry.value === stateId.toString());
|
|
136
|
+
if (textEntry) {
|
|
137
|
+
// 优先返回对应语种的文本
|
|
138
|
+
if (textEntry.cultures && textEntry.cultures[currentLanguage]) {
|
|
139
|
+
return textEntry.cultures[currentLanguage];
|
|
140
|
+
}
|
|
141
|
+
// 如果没有对应语种,返回key作为默认值
|
|
142
|
+
return '';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// 文本库配置但未找到数据,返回空字符串
|
|
147
|
+
return '';
|
|
148
|
+
}
|
|
149
|
+
// 默认返回文本内容
|
|
150
|
+
return defaultContent || '';
|
|
151
|
+
}
|
|
114
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"TextStateElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"./text-state.model","name":"TextState","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TextStateElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"./text-state.model","name":"TextState","line":19,"character":45}]},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","module":"../../../logger","name":"LoggerService","line":22,"character":33},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"../../../model/switch-indicator-light/indicator-light-fault-flicker","name":"IndicatorLightFaultFlicker","line":24,"character":41}]},{"__symbolic":"reference","module":"../../../model/base/font-setting-model","name":"TextLibrarySetting","line":25,"character":46},{"__symbolic":"reference","module":"../../../service","name":"TextLibraryService","line":26,"character":46},{"__symbolic":"reference","module":"../../../service","name":"LanguageService","line":27,"character":43}]}],"switchToState":[{"__symbolic":"method"}],"getforeignObjectElement":[{"__symbolic":"method"}],"removeForeignObjectlement":[{"__symbolic":"method"}],"doFaultFlicker":[{"__symbolic":"method"}],"clearFlickerInterval":[{"__symbolic":"method"}],"getDisplayText":[{"__symbolic":"method"}]}}}}]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PermissionChecker } from '../../service';
|
|
1
|
+
import { PermissionChecker, TextLibraryService, LanguageService } from '../../service';
|
|
2
2
|
import { VariableCommunicator } from '../../communication';
|
|
3
3
|
import { ConditionalDynamicDisplayElement } from '../base/conditional-dynamic-display-element';
|
|
4
4
|
import { GraphStore, VariableStore } from '../../config';
|
|
@@ -7,8 +7,16 @@ import { Injector } from '@angular/core';
|
|
|
7
7
|
import { HyperlinkModel } from '../../model/hyperlink/hyperlink.model';
|
|
8
8
|
export declare class HyperlinkElement extends ConditionalDynamicDisplayElement {
|
|
9
9
|
private readonly graphStore;
|
|
10
|
+
private readonly textLibraryService?;
|
|
11
|
+
private readonly languageService?;
|
|
10
12
|
protected readonly model: HyperlinkModel;
|
|
11
13
|
protected readonly logger: LoggerService;
|
|
12
|
-
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore, signalRAppId: string);
|
|
14
|
+
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore, signalRAppId: string, textLibraryService?: TextLibraryService, languageService?: LanguageService);
|
|
13
15
|
private initGraphAndText;
|
|
16
|
+
/**
|
|
17
|
+
* 获取显示文本
|
|
18
|
+
* 如果配置了文本库,则从文本库中获取对应语种的文本
|
|
19
|
+
* 否则返回默认文本
|
|
20
|
+
*/
|
|
21
|
+
private getDisplayText;
|
|
14
22
|
}
|
|
@@ -3,9 +3,11 @@ import { GraphStateElement } from '../shared/graph/graph-state-element';
|
|
|
3
3
|
import { LOGGER_SERVICE_TOKEN } from '../../logger';
|
|
4
4
|
import { TextElementModal } from '../shared/text/text-element';
|
|
5
5
|
export class HyperlinkElement extends ConditionalDynamicDisplayElement {
|
|
6
|
-
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore, signalRAppId) {
|
|
6
|
+
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore, signalRAppId, textLibraryService, languageService) {
|
|
7
7
|
super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
|
|
8
8
|
this.graphStore = graphStore;
|
|
9
|
+
this.textLibraryService = textLibraryService;
|
|
10
|
+
this.languageService = languageService;
|
|
9
11
|
this.logger = injector.get(LOGGER_SERVICE_TOKEN);
|
|
10
12
|
if (this.model.size) {
|
|
11
13
|
this.initGraphAndText();
|
|
@@ -42,7 +44,44 @@ export class HyperlinkElement extends ConditionalDynamicDisplayElement {
|
|
|
42
44
|
color: this.model.stroke,
|
|
43
45
|
textAlign: this.model.textAlign
|
|
44
46
|
};
|
|
45
|
-
|
|
47
|
+
// 获取显示文本(支持文本库)
|
|
48
|
+
const displayText = this.getDisplayText();
|
|
49
|
+
const textElement = new TextElementModal(displayText, font, width, height);
|
|
46
50
|
this.$element.append(textElement.Element);
|
|
47
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* 获取显示文本
|
|
54
|
+
* 如果配置了文本库,则从文本库中获取对应语种的文本
|
|
55
|
+
* 否则返回默认文本
|
|
56
|
+
*/
|
|
57
|
+
getDisplayText() {
|
|
58
|
+
var _a;
|
|
59
|
+
// 检查是否使用文本库
|
|
60
|
+
if (this.model.textLibrary && this.model.textLibrary.labelType === 'textLibrary') {
|
|
61
|
+
const textLibraryId = this.model.textLibrary.selectedTextLibraryItem;
|
|
62
|
+
const textItem = this.model.textLibrary.selectedTextItem;
|
|
63
|
+
if (textLibraryId && textItem && this.textLibraryService) {
|
|
64
|
+
// 获取当前默认语种
|
|
65
|
+
const currentLanguage = ((_a = this.languageService) === null || _a === void 0 ? void 0 : _a.getDefaultLanguage()) || 'zh-CN';
|
|
66
|
+
// 获取文本库数据
|
|
67
|
+
const textLibraryData = this.textLibraryService.getTextLibraryById(typeof textLibraryId === 'string' ? parseInt(textLibraryId, 10) : textLibraryId);
|
|
68
|
+
if (textLibraryData && textLibraryData.data) {
|
|
69
|
+
// 查找对应的文本条目
|
|
70
|
+
const textEntry = textLibraryData.data.find(entry => entry.key === textItem.toString());
|
|
71
|
+
if (textEntry) {
|
|
72
|
+
// 优先返回对应语种的文本
|
|
73
|
+
if (textEntry.cultures && textEntry.cultures[currentLanguage]) {
|
|
74
|
+
return textEntry.cultures[currentLanguage];
|
|
75
|
+
}
|
|
76
|
+
// 如果没有对应语种,返回默认值
|
|
77
|
+
return '';
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// 文本库配置但未找到数据,返回空字符串
|
|
82
|
+
return '';
|
|
83
|
+
}
|
|
84
|
+
// 默认返回文本内容
|
|
85
|
+
return this.model.text || '';
|
|
86
|
+
}
|
|
48
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"HyperlinkElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-dynamic-display-element","name":"ConditionalDynamicDisplayElement","line":12,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":17,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":17,"character":77},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":18,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":18,"character":67},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":18,"character":111},{"__symbolic":"reference","name":"string"}]}],"initGraphAndText":[{"__symbolic":"method"}]}}}}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"HyperlinkElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-dynamic-display-element","name":"ConditionalDynamicDisplayElement","line":12,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":17,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":17,"character":77},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":18,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":18,"character":67},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":18,"character":111},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"TextLibraryService","line":20,"character":46},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":21,"character":43}]}],"initGraphAndText":[{"__symbolic":"method"}],"getDisplayText":[{"__symbolic":"method"}]}}}}]
|
|
@@ -4,13 +4,21 @@ import { ConditionalDynamicDisplayElement } from '../base/conditional-dynamic-di
|
|
|
4
4
|
import { GraphStore, VariableStore } from '../../config';
|
|
5
5
|
import { LoggerService } from '../../logger';
|
|
6
6
|
import { Injector } from '@angular/core';
|
|
7
|
-
import { PermissionChecker } from '../../service';
|
|
7
|
+
import { PermissionChecker, TextLibraryService, LanguageService } from '../../service';
|
|
8
8
|
export declare class TextElement extends ConditionalDynamicDisplayElement {
|
|
9
9
|
private readonly graphStore;
|
|
10
|
+
private readonly textLibraryService?;
|
|
11
|
+
private readonly languageService?;
|
|
10
12
|
protected readonly model: TextModel;
|
|
11
13
|
protected readonly logger: LoggerService;
|
|
12
|
-
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore, signalRAppId: string);
|
|
14
|
+
constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore, signalRAppId: string, textLibraryService?: TextLibraryService, languageService?: LanguageService);
|
|
13
15
|
dispose(): void;
|
|
16
|
+
/**
|
|
17
|
+
* 获取显示文本
|
|
18
|
+
* 如果配置了文本库,则从文本库中获取对应语种的文本
|
|
19
|
+
* 否则返回默认文本
|
|
20
|
+
*/
|
|
21
|
+
private getDisplayText;
|
|
14
22
|
private handleTextValue;
|
|
15
23
|
private initGraph;
|
|
16
24
|
}
|
|
@@ -3,9 +3,11 @@ import { GraphStateElement } from '../shared/graph/graph-state-element';
|
|
|
3
3
|
import { LOGGER_SERVICE_TOKEN } from '../../logger';
|
|
4
4
|
import { TextElementModal } from '../shared/text/text-element';
|
|
5
5
|
export class TextElement extends ConditionalDynamicDisplayElement {
|
|
6
|
-
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore, signalRAppId) {
|
|
6
|
+
constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore, signalRAppId, textLibraryService, languageService) {
|
|
7
7
|
super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
|
|
8
8
|
this.graphStore = graphStore;
|
|
9
|
+
this.textLibraryService = textLibraryService;
|
|
10
|
+
this.languageService = languageService;
|
|
9
11
|
this.logger = injector.get(LOGGER_SERVICE_TOKEN);
|
|
10
12
|
if (this.model.text && this.model.size) {
|
|
11
13
|
const width = this.model.size.width;
|
|
@@ -26,7 +28,9 @@ export class TextElement extends ConditionalDynamicDisplayElement {
|
|
|
26
28
|
color: this.model.stroke,
|
|
27
29
|
textAlign: this.model.textAlign
|
|
28
30
|
};
|
|
29
|
-
|
|
31
|
+
// 获取显示文本(支持文本库)
|
|
32
|
+
const displayText = this.getDisplayText();
|
|
33
|
+
const textElement = new TextElementModal(displayText, font, width, height);
|
|
30
34
|
this.$element.append(textElement.Element);
|
|
31
35
|
}
|
|
32
36
|
else {
|
|
@@ -41,6 +45,41 @@ export class TextElement extends ConditionalDynamicDisplayElement {
|
|
|
41
45
|
this.$element.remove();
|
|
42
46
|
}
|
|
43
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* 获取显示文本
|
|
50
|
+
* 如果配置了文本库,则从文本库中获取对应语种的文本
|
|
51
|
+
* 否则返回默认文本
|
|
52
|
+
*/
|
|
53
|
+
getDisplayText() {
|
|
54
|
+
var _a;
|
|
55
|
+
// 检查是否使用文本库
|
|
56
|
+
if (this.model.textLibrary && this.model.textLibrary.labelType === 'textLibrary') {
|
|
57
|
+
const textLibraryId = this.model.textLibrary.selectedTextLibraryItem;
|
|
58
|
+
const textItem = this.model.textLibrary.selectedTextItem;
|
|
59
|
+
if (textLibraryId && textItem && this.textLibraryService) {
|
|
60
|
+
// 获取当前默认语种
|
|
61
|
+
const currentLanguage = ((_a = this.languageService) === null || _a === void 0 ? void 0 : _a.getDefaultLanguage()) || 'zh-CN';
|
|
62
|
+
// 获取文本库数据
|
|
63
|
+
const textLibraryData = this.textLibraryService.getTextLibraryById(typeof textLibraryId === 'string' ? parseInt(textLibraryId, 10) : textLibraryId);
|
|
64
|
+
if (textLibraryData && textLibraryData.data) {
|
|
65
|
+
// 查找对应的文本条目
|
|
66
|
+
const textEntry = textLibraryData.data.find(entry => entry.key === textItem.toString());
|
|
67
|
+
if (textEntry) {
|
|
68
|
+
// 优先返回对应语种的文本
|
|
69
|
+
if (textEntry.cultures && textEntry.cultures[currentLanguage]) {
|
|
70
|
+
return textEntry.cultures[currentLanguage];
|
|
71
|
+
}
|
|
72
|
+
// 如果没有对应语种,返回默认值
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// 文本库配置但未找到数据,返回空字符串
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
// 默认返回文本内容
|
|
81
|
+
return this.model.text || '';
|
|
82
|
+
}
|
|
44
83
|
handleTextValue() {
|
|
45
84
|
const allText = this.$element.find('text');
|
|
46
85
|
for (let i = 0; i < allText.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"TextElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-dynamic-display-element","name":"ConditionalDynamicDisplayElement","line":10,"character":33},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":15,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":15,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":15,"character":77},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":16,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":16,"character":67},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":16,"character":111},{"__symbolic":"reference","name":"string"}]}],"dispose":[{"__symbolic":"method"}],"handleTextValue":[{"__symbolic":"method"}],"initGraph":[{"__symbolic":"method"}]}}}}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TextElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-dynamic-display-element","name":"ConditionalDynamicDisplayElement","line":10,"character":33},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":15,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":15,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":15,"character":77},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":16,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":16,"character":67},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":16,"character":111},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"TextLibraryService","line":18,"character":46},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":19,"character":43}]}],"dispose":[{"__symbolic":"method"}],"getDisplayText":[{"__symbolic":"method"}],"handleTextValue":[{"__symbolic":"method"}],"initGraph":[{"__symbolic":"method"}]}}}}]
|
|
@@ -3,7 +3,7 @@ import { BsModalService } from 'ngx-bootstrap/modal';
|
|
|
3
3
|
import { GraphStore, VariableStore } from '../../config';
|
|
4
4
|
import { Localization } from '../../localization';
|
|
5
5
|
import { SwitchIndicatorLight } from '../../model';
|
|
6
|
-
import { PermissionChecker, OperationRecordService } from '../../service';
|
|
6
|
+
import { PermissionChecker, OperationRecordService, TextLibraryService, LanguageService } from '../../service';
|
|
7
7
|
import { VariableCommunicator } from '../../communication';
|
|
8
8
|
import { ConditionalEnableElement } from '../base/conditional-enable-element';
|
|
9
9
|
import { SecurityChecker } from '../../security';
|
|
@@ -12,6 +12,8 @@ export declare class SwitchIndicatorLightElement extends ConditionalEnableElemen
|
|
|
12
12
|
private readonly graphStore;
|
|
13
13
|
private readonly operationRecordService;
|
|
14
14
|
private readonly securityChecker;
|
|
15
|
+
private readonly textLibraryService?;
|
|
16
|
+
private readonly languageService?;
|
|
15
17
|
protected readonly model: SwitchIndicatorLight;
|
|
16
18
|
private readonly logger;
|
|
17
19
|
private switchOperator;
|
|
@@ -24,8 +26,7 @@ export declare class SwitchIndicatorLightElement extends ConditionalEnableElemen
|
|
|
24
26
|
private restorationTimer;
|
|
25
27
|
private isWriteRestorationDownValue;
|
|
26
28
|
private onDocMouseUp;
|
|
27
|
-
|
|
28
|
-
constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, variableCommunicator: VariableCommunicator, graphStore: GraphStore, permissionChecker: PermissionChecker, operationRecordService: OperationRecordService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string);
|
|
29
|
+
constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, variableCommunicator: VariableCommunicator, graphStore: GraphStore, permissionChecker: PermissionChecker, operationRecordService: OperationRecordService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string, textLibraryService?: TextLibraryService, languageService?: LanguageService);
|
|
29
30
|
handleMouseUp(): void;
|
|
30
31
|
private initOnDocMouseUpEvent;
|
|
31
32
|
private checkElementPassword;
|
|
@@ -37,5 +38,4 @@ export declare class SwitchIndicatorLightElement extends ConditionalEnableElemen
|
|
|
37
38
|
private switchToState;
|
|
38
39
|
private initGraphAndText;
|
|
39
40
|
private checkState;
|
|
40
|
-
dispose(): void;
|
|
41
41
|
}
|
|
@@ -17,12 +17,14 @@ import { DisplayMode, GlobalSettings } from '../../settings';
|
|
|
17
17
|
import { VariableUtil } from '../../utils/variable-util';
|
|
18
18
|
import { VariableDefinition } from '../../communication/variable/variable-definition';
|
|
19
19
|
export class SwitchIndicatorLightElement extends ConditionalEnableElement {
|
|
20
|
-
constructor(element, injector, modalService, variableCommunicator, graphStore, permissionChecker, operationRecordService, securityChecker, variableStore, localization, signalRAppId) {
|
|
20
|
+
constructor(element, injector, modalService, variableCommunicator, graphStore, permissionChecker, operationRecordService, securityChecker, variableStore, localization, signalRAppId, textLibraryService, languageService) {
|
|
21
21
|
super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
|
|
22
22
|
this.modalService = modalService;
|
|
23
23
|
this.graphStore = graphStore;
|
|
24
24
|
this.operationRecordService = operationRecordService;
|
|
25
25
|
this.securityChecker = securityChecker;
|
|
26
|
+
this.textLibraryService = textLibraryService;
|
|
27
|
+
this.languageService = languageService;
|
|
26
28
|
this.isBitRestoration = false; // 是否是 位设定且执行设置是复位
|
|
27
29
|
this.isVerifiedForRestoration = false; // 位设定且执行设置是复位情况下,是否已经完成了验证
|
|
28
30
|
this.isWriteRestorationDownValue = false;
|
|
@@ -208,7 +210,7 @@ export class SwitchIndicatorLightElement extends ConditionalEnableElement {
|
|
|
208
210
|
default:
|
|
209
211
|
throw new Error(`Unknown switchType:${settings.type}`);
|
|
210
212
|
}
|
|
211
|
-
this.
|
|
213
|
+
this.indicatorLightOperator.currentStateIdChanged.subscribe(statusIdValue => {
|
|
212
214
|
this.currentStateIdChange(statusIdValue);
|
|
213
215
|
});
|
|
214
216
|
this.indicatorLightOperator.requestData(this.signalRAppId);
|
|
@@ -238,7 +240,7 @@ export class SwitchIndicatorLightElement extends ConditionalEnableElement {
|
|
|
238
240
|
this.graphStateElement = new GraphStateElement(this.model.graphSetting, width, height, this.graphStore, this.logger, this.model.version, this.model.states);
|
|
239
241
|
this.$element.append(this.graphStateElement.Element);
|
|
240
242
|
}
|
|
241
|
-
this.textStateElement = new TextStateElement(this.model.states, width, height, this.logger, this.model.version, this.model.states);
|
|
243
|
+
this.textStateElement = new TextStateElement(this.model.states, width, height, this.logger, this.model.version, this.model.states, this.model.textLibrary, this.textLibraryService, this.languageService);
|
|
242
244
|
this.$element.append(this.textStateElement.Element);
|
|
243
245
|
}
|
|
244
246
|
checkState() {
|
|
@@ -249,28 +251,4 @@ export class SwitchIndicatorLightElement extends ConditionalEnableElement {
|
|
|
249
251
|
throw new Error('The switch indicator light\'s states must greater than 2.');
|
|
250
252
|
}
|
|
251
253
|
}
|
|
252
|
-
dispose() {
|
|
253
|
-
// 清理 document 级别的事件监听器
|
|
254
|
-
if (this.onDocMouseUp) {
|
|
255
|
-
document.removeEventListener(this.isMobileMode ? 'touchend' : 'mouseup', this.onDocMouseUp);
|
|
256
|
-
}
|
|
257
|
-
// 清理定时器
|
|
258
|
-
if (this.restorationTimer) {
|
|
259
|
-
clearTimeout(this.restorationTimer);
|
|
260
|
-
this.restorationTimer = undefined;
|
|
261
|
-
}
|
|
262
|
-
// 清理 indicatorLightOperator 订阅
|
|
263
|
-
if (this.indicatorLightSubscription) {
|
|
264
|
-
this.indicatorLightSubscription.unsubscribe();
|
|
265
|
-
}
|
|
266
|
-
// 清理图形元素(释放 SVG 内存)
|
|
267
|
-
if (this.graphStateElement) {
|
|
268
|
-
this.graphStateElement.dispose();
|
|
269
|
-
}
|
|
270
|
-
// 清理文本元素
|
|
271
|
-
if (this.textStateElement) {
|
|
272
|
-
// TextStateElement 可能也需要 dispose,暂时先清理引用
|
|
273
|
-
this.textStateElement = null;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
254
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"SwitchIndicatorLightElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-enable-element","name":"ConditionalEnableElement","line":32,"character":49},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"SwitchIndicatorLightElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-enable-element","name":"ConditionalEnableElement","line":32,"character":49},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":50,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":51,"character":18},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":52,"character":39},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":53,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":54,"character":37},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":55,"character":27},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":56,"character":49},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":57,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":58,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":59,"character":22},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"TextLibraryService","line":61,"character":46},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":62,"character":43}]}],"handleMouseUp":[{"__symbolic":"method"}],"initOnDocMouseUpEvent":[{"__symbolic":"method"}],"checkElementPassword":[{"__symbolic":"method"}],"doSwitchOperator":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"initSwitchOperator":[{"__symbolic":"method"}],"initIndictorLightOperator":[{"__symbolic":"method"}],"currentStateIdChange":[{"__symbolic":"method"}],"switchToState":[{"__symbolic":"method"}],"initGraphAndText":[{"__symbolic":"method"}],"checkState":[{"__symbolic":"method"}]}}}}]
|
package/gui/gui-context.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConfigStore } from '../config';
|
|
2
2
|
import { VariableCommunicator } from '../communication';
|
|
3
3
|
import { SecurityChecker } from '../security';
|
|
4
|
-
import { VideoService, WeatherService, PermissionChecker, OperationRecordService, ReleasedVariableService } from '../service';
|
|
4
|
+
import { VideoService, WeatherService, PermissionChecker, OperationRecordService, ReleasedVariableService, TextLibraryService, LanguageService, SystemTextLibraryService } from '../service';
|
|
5
5
|
export interface GuiContext {
|
|
6
6
|
readonly configStore: ConfigStore;
|
|
7
7
|
readonly variableCommunicator: VariableCommunicator;
|
|
@@ -11,6 +11,9 @@ export interface GuiContext {
|
|
|
11
11
|
readonly securityChecker: SecurityChecker;
|
|
12
12
|
readonly videoService: VideoService;
|
|
13
13
|
readonly weatherService: WeatherService;
|
|
14
|
+
readonly textLibraryService?: TextLibraryService;
|
|
15
|
+
readonly languageService?: LanguageService;
|
|
16
|
+
readonly systemTextLibraryService?: SystemTextLibraryService;
|
|
14
17
|
readonly configureViewId?: number;
|
|
15
18
|
readonly configureViewCode?: string;
|
|
16
19
|
dispose(): any;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export interface TextLibrarySetting {
|
|
2
|
+
readonly labelType: 'text' | 'textLibrary';
|
|
3
|
+
readonly selectedTextLibraryItem?: string | number;
|
|
4
|
+
readonly selectedTextItem?: string | number;
|
|
5
|
+
}
|
|
1
6
|
export interface FontSettingModel {
|
|
2
7
|
readonly text: string;
|
|
3
8
|
readonly stroke: string;
|
|
@@ -5,4 +10,5 @@ export interface FontSettingModel {
|
|
|
5
10
|
readonly fontSize: string;
|
|
6
11
|
readonly isUnderline: boolean;
|
|
7
12
|
readonly textAlign: string;
|
|
13
|
+
readonly textLibrary?: TextLibrarySetting;
|
|
8
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"FontSettingModel":{"__symbolic":"interface"}}}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"TextLibrarySetting":{"__symbolic":"interface"},"FontSettingModel":{"__symbolic":"interface"}}}]
|
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import { HistroicalCurveChannelModel } from './historical-curve-chanel.model';
|
|
2
|
+
/**
|
|
3
|
+
* 单个历史数据条目的运行时配置
|
|
4
|
+
*/
|
|
5
|
+
export interface HistoricalCurveDataItem {
|
|
6
|
+
/** 历史数据条目名称 */
|
|
7
|
+
readonly dataName: string;
|
|
8
|
+
/** 该条目的通道列表 */
|
|
9
|
+
readonly channels: Array<HistroicalCurveChannelModel>;
|
|
10
|
+
}
|
|
2
11
|
export interface HistoricalCurveDataSettings {
|
|
3
12
|
readonly dataSourceCode: number;
|
|
4
13
|
/**
|
|
5
|
-
*
|
|
14
|
+
* 【旧格式-兼容】历史数据名称,单条目模式
|
|
6
15
|
*/
|
|
7
16
|
readonly dataName: string;
|
|
17
|
+
/**
|
|
18
|
+
* 【旧格式-兼容】通道列表,单条目模式
|
|
19
|
+
*/
|
|
8
20
|
readonly channels: Array<HistroicalCurveChannelModel>;
|
|
21
|
+
/**
|
|
22
|
+
* 【新格式】多个历史数据条目配置
|
|
23
|
+
* 如果此字段有值,优先使用此字段
|
|
24
|
+
*/
|
|
25
|
+
readonly dataItems?: Array<HistoricalCurveDataItem>;
|
|
9
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveDataSettings":{"__symbolic":"interface"}}}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveDataItem":{"__symbolic":"interface"},"HistoricalCurveDataSettings":{"__symbolic":"interface"}}}]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ConditionalDynamicDisplayModel } from '../base/conditional-dynamic-display-model';
|
|
2
|
+
import { Point, Size } from '../shared';
|
|
3
|
+
import { DynamicDisplayModel } from '../shared/dynamic-display/dynamic-display-model';
|
|
4
|
+
export interface ScrollAlarmModel extends ConditionalDynamicDisplayModel {
|
|
5
|
+
readonly version: number;
|
|
6
|
+
readonly size: Size;
|
|
7
|
+
readonly location: Point;
|
|
8
|
+
readonly generalSetting?: any;
|
|
9
|
+
readonly filterSetting?: any;
|
|
10
|
+
readonly widths: number[];
|
|
11
|
+
readonly heights: number[];
|
|
12
|
+
readonly columLabels: string[];
|
|
13
|
+
readonly levelText: string[];
|
|
14
|
+
readonly scrollSetting?: {
|
|
15
|
+
readonly scrollInterval?: number;
|
|
16
|
+
readonly scrollDirection?: 'vertical' | 'horizontal';
|
|
17
|
+
readonly pauseOnHover?: boolean;
|
|
18
|
+
readonly autoPlay?: boolean;
|
|
19
|
+
};
|
|
20
|
+
readonly dynamicSetting?: DynamicDisplayModel;
|
|
21
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ScrollAlarmModel":{"__symbolic":"interface"}}}]
|
|
@@ -5,6 +5,7 @@ import { ConditionalEnableModel } from '../base/conditional-enable-model';
|
|
|
5
5
|
import { ConditionItemModel, GraphSetting, Point, Size } from '../shared';
|
|
6
6
|
import { DynamicDisplayModel } from '../shared/dynamic-display/dynamic-display-model';
|
|
7
7
|
import { SecurityModel } from '../base/security-model';
|
|
8
|
+
import { TextLibrarySetting } from '../base/font-setting-model';
|
|
8
9
|
export interface SwitchIndicatorLight extends ConditionalEnableModel, SecurityModel {
|
|
9
10
|
/**
|
|
10
11
|
* @type {(number)}
|
|
@@ -30,4 +31,5 @@ export interface SwitchIndicatorLight extends ConditionalEnableModel, SecurityMo
|
|
|
30
31
|
readonly isAwaysEnable?: boolean;
|
|
31
32
|
readonly enableItems?: ConditionItemModel[];
|
|
32
33
|
readonly fixedPositionType?: number;
|
|
34
|
+
readonly textLibrary?: TextLibrarySetting;
|
|
33
35
|
}
|
package/package.json
CHANGED
package/public_api.js
CHANGED
package/service/index.d.ts
CHANGED
|
@@ -3,3 +3,6 @@ export { PermissionChecker } from './permission-checker';
|
|
|
3
3
|
export { ReleasedVariableService } from './released-variable';
|
|
4
4
|
export * from './operation-record';
|
|
5
5
|
export * from './video';
|
|
6
|
+
export * from './text-library.service';
|
|
7
|
+
export * from './language.service';
|
|
8
|
+
export * from './system-text-library.service';
|
package/service/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './system-text-library.service';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./weather.service","export":["WeatherService"]},{"from":"./permission-checker","export":["PermissionChecker"]},{"from":"./released-variable","export":["ReleasedVariableService"]},{"from":"./operation-record"},{"from":"./video"}]}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./weather.service","export":["WeatherService"]},{"from":"./permission-checker","export":["PermissionChecker"]},{"from":"./released-variable","export":["ReleasedVariableService"]},{"from":"./operation-record"},{"from":"./video"},{"from":"./text-library.service"},{"from":"./language.service"},{"from":"./system-text-library.service"}]}]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* 语种 DTO 接口 - 与 Designer 中的 API 返回格式保持一致
|
|
4
|
+
*/
|
|
5
|
+
export interface ConfigureLanguageDto {
|
|
6
|
+
name: string;
|
|
7
|
+
displayName: string;
|
|
8
|
+
icon: string;
|
|
9
|
+
isDefault: boolean;
|
|
10
|
+
isSystem: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 语种服务接口
|
|
14
|
+
* 提供语种的查询能力,供 GUI 组件使用
|
|
15
|
+
*/
|
|
16
|
+
export interface LanguageService {
|
|
17
|
+
/**
|
|
18
|
+
* 获取所有语种
|
|
19
|
+
*/
|
|
20
|
+
getLanguages(): ConfigureLanguageDto[];
|
|
21
|
+
/**
|
|
22
|
+
* 获取默认语言代码
|
|
23
|
+
*/
|
|
24
|
+
getDefaultLanguage(): string;
|
|
25
|
+
/**
|
|
26
|
+
* 根据语种代码获取语种信息
|
|
27
|
+
*/
|
|
28
|
+
getLanguageByCode(code: string): ConfigureLanguageDto | null;
|
|
29
|
+
/**
|
|
30
|
+
* 检查是否有缓存数据
|
|
31
|
+
*/
|
|
32
|
+
hasCache(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 缓存更新事件 (可选)
|
|
35
|
+
*/
|
|
36
|
+
readonly cacheUpdated?: Observable<void>;
|
|
37
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ConfigureLanguageDto":{"__symbolic":"interface"},"LanguageService":{"__symbolic":"interface"}}}]
|