@refinitiv-ui/efx-grid 6.0.91 → 6.0.93
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/lib/column-dragging/es6/ColumnDragging.d.ts +1 -1
- package/lib/column-dragging/es6/ColumnDragging.js +144 -34
- package/lib/core/dist/core.js +2410 -2621
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/ColumnStats.js +14 -14
- package/lib/core/es6/data/DataCache.js +118 -118
- package/lib/core/es6/data/DataTable.d.ts +3 -1
- package/lib/core/es6/data/DataTable.js +208 -190
- package/lib/core/es6/data/DataView.d.ts +1 -1
- package/lib/core/es6/data/DataView.js +291 -291
- package/lib/core/es6/data/Segment.js +79 -79
- package/lib/core/es6/data/SegmentCollection.js +81 -81
- package/lib/core/es6/data/WrappedView.js +41 -41
- package/lib/core/es6/grid/Core.js +635 -635
- package/lib/core/es6/grid/ILayoutGrid.js +1 -1
- package/lib/core/es6/grid/LayoutGrid.js +183 -183
- package/lib/core/es6/grid/VirtualizedLayoutGrid.js +91 -91
- package/lib/core/es6/grid/components/Cell.js +29 -29
- package/lib/core/es6/grid/components/CellFloatingPanel.js +11 -11
- package/lib/core/es6/grid/components/CellSpan.js +7 -7
- package/lib/core/es6/grid/components/CellSpans.js +36 -34
- package/lib/core/es6/grid/components/Column.js +40 -40
- package/lib/core/es6/grid/components/ElementWrapper.js +17 -17
- package/lib/core/es6/grid/components/HScrollbar.js +31 -31
- package/lib/core/es6/grid/components/Scrollbar.js +77 -77
- package/lib/core/es6/grid/components/StretchedCells.js +49 -49
- package/lib/core/es6/grid/components/VScrollbar.js +11 -11
- package/lib/core/es6/grid/components/VirtualItems.js +3 -3
- package/lib/core/es6/grid/event/EventDispatcher.js +9 -9
- package/lib/core/es6/grid/event/EventListeners.js +4 -4
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +186 -186
- package/lib/core/es6/grid/util/Conflator.js +4 -4
- package/lib/core/es6/grid/util/Reverter.js +1 -1
- package/lib/core/es6/grid/util/SectionSettings.js +20 -20
- package/lib/core/es6/grid/util/SelectionList.js +23 -23
- package/lib/core/es6/grid/util/TrackLayout.js +74 -74
- package/lib/core/es6/grid/util/Virtualizer.js +15 -15
- package/lib/core/es6/grid/util/util.js +20 -20
- package/lib/core/es6/index.d.ts +0 -2
- package/lib/core/es6/index.js +0 -3
- package/lib/filter-dialog/lib/filter-dialog.js +1 -0
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +193 -70
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +46 -30
- package/lib/rt-grid/es6/RowDefinition.d.ts +2 -1
- package/lib/rt-grid/es6/RowDefinition.js +74 -16
- package/lib/tr-grid-cell-selection/es6/CellSelection.js +56 -1
- package/lib/tr-grid-checkbox/es6/Checkbox.js +268 -268
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +3 -2
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +60 -32
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +279 -279
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +227 -207
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +11 -11
- package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +1 -2
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +120 -121
- package/lib/tr-grid-util/es6/CellPainter.js +94 -104
- package/lib/tr-grid-util/es6/Conflator.js +4 -4
- package/lib/tr-grid-util/es6/CoralItems.js +6 -6
- package/lib/tr-grid-util/es6/DateTime.js +41 -41
- package/lib/tr-grid-util/es6/Deferred.js +5 -5
- package/lib/tr-grid-util/es6/Delay.d.ts +3 -3
- package/lib/tr-grid-util/es6/Delay.js +14 -3
- package/lib/tr-grid-util/es6/Dom.js +26 -26
- package/lib/tr-grid-util/es6/DragUI.js +17 -17
- package/lib/tr-grid-util/es6/ElementObserver.js +12 -12
- package/lib/tr-grid-util/es6/ElementWrapper.js +2 -2
- package/lib/tr-grid-util/es6/ElfDate.js +4 -4
- package/lib/tr-grid-util/es6/ElfUtil.js +37 -37
- package/lib/tr-grid-util/es6/EventDispatcher.js +12 -12
- package/lib/tr-grid-util/es6/ExpanderIcon.js +6 -6
- package/lib/tr-grid-util/es6/ExpressionParser.js +43 -43
- package/lib/tr-grid-util/es6/Ext.js +6 -6
- package/lib/tr-grid-util/es6/FieldFormatter.js +17 -17
- package/lib/tr-grid-util/es6/FilterBuilder.js +57 -58
- package/lib/tr-grid-util/es6/FilterOperators.d.ts +12 -1
- package/lib/tr-grid-util/es6/FilterOperators.js +13 -2
- package/lib/tr-grid-util/es6/GridPlugin.js +86 -87
- package/lib/tr-grid-util/es6/GroupDefinitions.js +90 -90
- package/lib/tr-grid-util/es6/Icon.js +4 -4
- package/lib/tr-grid-util/es6/MouseDownTrait.js +6 -6
- package/lib/tr-grid-util/es6/MultiTableManager.js +71 -80
- package/lib/tr-grid-util/es6/NumberFormatter.js +23 -23
- package/lib/tr-grid-util/es6/PercentBar.js +17 -17
- package/lib/tr-grid-util/es6/Perf.js +5 -5
- package/lib/tr-grid-util/es6/Popup.js +42 -42
- package/lib/tr-grid-util/es6/RangeBar.js +5 -5
- package/lib/tr-grid-util/es6/RequestQueue.js +5 -5
- package/lib/tr-grid-util/es6/RowPainter.js +23 -23
- package/lib/tr-grid-util/es6/SubTable.js +94 -94
- package/lib/tr-grid-util/es6/Table.js +51 -51
- package/lib/tr-grid-util/es6/TextHighlighter.js +52 -52
- package/lib/tr-grid-util/es6/TickCodes.js +2 -2
- package/lib/tr-grid-util/es6/Timer.js +2 -2
- package/lib/tr-grid-util/es6/TouchProxy.js +7 -7
- package/lib/tr-grid-util/es6/Util.js +50 -50
- package/lib/tr-grid-util/es6/formula/ADCService.js +2 -2
- package/lib/tr-grid-util/es6/formula/ADCSubscription.js +19 -19
- package/lib/tr-grid-util/es6/formula/AdFinService.js +2 -2
- package/lib/tr-grid-util/es6/formula/AdFinSubscription.js +19 -19
- package/lib/tr-grid-util/es6/formula/Engine.js +56 -56
- package/lib/tr-grid-util/es6/formula/Formula.js +62 -62
- package/lib/tr-grid-util/es6/formula/IntervalSubscription.js +3 -3
- package/lib/tr-grid-util/es6/formula/Realtime.js +15 -15
- package/lib/tr-grid-util/es6/formula/RealtimeService.js +15 -15
- package/lib/tr-grid-util/es6/formula/TSIService.js +2 -2
- package/lib/tr-grid-util/es6/formula/TSISubscription.js +104 -104
- package/lib/tr-grid-util/es6/formula/VariableToken.js +20 -20
- package/lib/tr-grid-util/es6/formula/functions/AdFin.js +10 -10
- package/lib/tr-grid-util/es6/formula/functions/Excel.js +1 -1
- package/lib/tr-grid-util/es6/formula/functions/Info.js +2 -2
- package/lib/tr-grid-util/es6/formula/functions/Internal.js +5 -5
- package/lib/tr-grid-util/es6/formula/functions/Logic.js +5 -5
- package/lib/tr-grid-util/es6/formula/functions/Math.js +46 -46
- package/lib/tr-grid-util/es6/formula/functions/Statistics.js +27 -27
- package/lib/tr-grid-util/es6/formula/functions/Text.js +19 -19
- package/lib/tr-grid-util/es6/index.js +1 -1
- package/lib/tr-grid-util/es6/jet/Adc.js +36 -36
- package/lib/tr-grid-util/es6/jet/CollectionDict.js +11 -11
- package/lib/tr-grid-util/es6/jet/DataGenerator.js +95 -95
- package/lib/tr-grid-util/es6/jet/DataSet.js +1 -1
- package/lib/tr-grid-util/es6/jet/MockArchive.js +5 -5
- package/lib/tr-grid-util/es6/jet/MockJET.js +1 -1
- package/lib/tr-grid-util/es6/jet/MockQuotes.js +13 -13
- package/lib/tr-grid-util/es6/jet/MockQuotes2.js +100 -100
- package/lib/tr-grid-util/es6/jet/MockRTK.js +4 -4
- package/lib/tr-grid-util/es6/jet/MockUtil.js +2 -2
- package/lib/tr-grid-util/es6/jet/index.js +1 -1
- package/lib/tr-grid-util/es6/jet/mockDataAPI.js +15 -15
- package/lib/tr-grid-util/es6/locale/translation-de.js +1 -1
- package/lib/tr-grid-util/es6/locale/translation-en.js +1 -1
- package/lib/tr-grid-util/es6/locale/translation-ja.js +1 -1
- package/lib/tr-grid-util/es6/locale/translation-zh-hant.js +1 -1
- package/lib/tr-grid-util/es6/locale/translation-zh.js +1 -1
- package/lib/tr-grid-util/es6/locale/translation.js +1 -1
- package/lib/types/es6/ColumnDragging.d.ts +1 -1
- package/lib/types/es6/ColumnGrouping.d.ts +3 -1
- package/lib/types/es6/Core/data/DataTable.d.ts +4 -0
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/Core/data/SegmentCollection.d.ts +2 -0
- package/lib/types/es6/Core/index.d.ts +0 -2
- package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +2 -1
- package/lib/types/es6/RowDragging.d.ts +1 -2
- package/lib/versions.json +12 -12
- package/package.json +1 -1
- package/lib/core/es6/grid/util/ElementFrameWork.d.ts +0 -18
- package/lib/core/es6/grid/util/ElementFrameWork.js +0 -227
- package/lib/core/es6/grid/util/HttpRequest.d.ts +0 -53
- package/lib/core/es6/grid/util/HttpRequest.js +0 -371
- package/lib/core/es6/grid/util/PercentBar.d.ts +0 -43
- package/lib/core/es6/grid/util/PercentBar.js +0 -390
- package/lib/core/es6/grid/util/PercentBarRenderer.d.ts +0 -41
- package/lib/core/es6/grid/util/PercentBarRenderer.js +0 -316
- package/lib/core/es6/grid/util/RangeBar.d.ts +0 -25
- package/lib/core/es6/grid/util/RangeBar.js +0 -255
- package/lib/types/es6/Core/grid/util/ElementFrameWork.d.ts +0 -18
- package/lib/types/es6/Core/grid/util/HttpRequest.d.ts +0 -53
- package/lib/types/es6/Core/grid/util/PercentBar.d.ts +0 -43
- package/lib/types/es6/Core/grid/util/PercentBarRenderer.d.ts +0 -41
- package/lib/types/es6/Core/grid/util/RangeBar.d.ts +0 -25
|
@@ -13,7 +13,7 @@ import {TSISubscription} from "./TSISubscription.js";
|
|
|
13
13
|
* {lang=ru} Realtime data access function
|
|
14
14
|
* @namespace Realtime
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
let Realtime = {};
|
|
17
17
|
|
|
18
18
|
/** {lang=en} The TR function is used for retrieving the data from Analytic Data Cloud service (ADC) or Snapshot Service (SnS). To use with 1 parameter (field), the data of corresponding RIC of that row will be returned. To use with 2 parameters (RIC and field), the data of specified RIC and field will be returned. Sns fields are available for upward compatibility. It is recommended that only ADC fields are used. <br>
|
|
19
19
|
* {lang=ja} TR 関数は、Analytic Data Cloud サービス (ADC) または Snapshot サービス (SnS) からデータを読み込んでいます。1つのパラメータ (フィールド) を使用するには、その行の対応する RIC のデータが返されます。2つのパラメータ (RIC およびフィールド) を使用するには、指定された RIC およびフィールドのデータが返されます。 <br>
|
|
@@ -49,8 +49,8 @@ var Realtime = {};
|
|
|
49
49
|
* =((TR("TR.PRICECLOSE(SDATE=0D,CURN=USD)")/TR("TR.PRICECLOSE(SDATE=CY0,CURN=USD)")))-1
|
|
50
50
|
*/
|
|
51
51
|
Realtime.TR = function(param1, param2) {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
let argsLen = arguments.length;
|
|
53
|
+
let field, res;
|
|
54
54
|
if(argsLen === 1) { // TR("field")
|
|
55
55
|
field = arguments[0];
|
|
56
56
|
if(typeof field !== "string" || field === "") {
|
|
@@ -65,7 +65,7 @@ Realtime.TR = function(param1, param2) {
|
|
|
65
65
|
// Get the data from the cache. Return as it has.
|
|
66
66
|
return this["__D"](field);// eslint-disable-line
|
|
67
67
|
} else if(argsLen === 2) { // TR("RIC", "field")
|
|
68
|
-
|
|
68
|
+
let symbol = arguments[0];
|
|
69
69
|
field = arguments[1];
|
|
70
70
|
|
|
71
71
|
if (typeof symbol !== "string" || symbol === "" || typeof field !== "string" || field === "") {
|
|
@@ -74,7 +74,7 @@ Realtime.TR = function(param1, param2) {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
// Init ADC service if not exist
|
|
77
|
-
|
|
77
|
+
let adcService = this.getIntervalService("ADC");
|
|
78
78
|
if (!adcService) {
|
|
79
79
|
adcService = ADCService.create();
|
|
80
80
|
if (!adcService) {
|
|
@@ -126,7 +126,7 @@ Realtime.TR = function(param1, param2) {
|
|
|
126
126
|
* =RECORD("FRF=","BID")
|
|
127
127
|
*/
|
|
128
128
|
Realtime.RECORD = function(symbol, field) {
|
|
129
|
-
|
|
129
|
+
let fieldType = typeof field;
|
|
130
130
|
if (typeof symbol !== "string" ||
|
|
131
131
|
symbol === "" ||
|
|
132
132
|
(fieldType !== "string" && fieldType !== "number") ||
|
|
@@ -136,7 +136,7 @@ Realtime.RECORD = function(symbol, field) {
|
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
// Init realtime service if not exist
|
|
139
|
-
|
|
139
|
+
let rtService = this.getRealtimeService(); // Return Quotes2's subscription object
|
|
140
140
|
if (!rtService) {
|
|
141
141
|
rtService = RealtimeService.create();
|
|
142
142
|
if (!rtService) {
|
|
@@ -149,11 +149,11 @@ Realtime.RECORD = function(symbol, field) {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
// Try casting string field to number (numeric field id)
|
|
152
|
-
|
|
152
|
+
let fid = (fieldType === "number") ? field : +field;
|
|
153
153
|
|
|
154
154
|
// If the field can be converted to number, the given field is numeric field id
|
|
155
155
|
if(fid === fid) { // Resolve numeric field id to text field name
|
|
156
|
-
|
|
156
|
+
let resolvedFieldName = RealtimeService.getResolvedFieldName(fid);
|
|
157
157
|
if(resolvedFieldName != null) {
|
|
158
158
|
field = resolvedFieldName;
|
|
159
159
|
} else {
|
|
@@ -167,8 +167,8 @@ Realtime.RECORD = function(symbol, field) {
|
|
|
167
167
|
rtService._addedFields[field] = field;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
let res;
|
|
171
|
+
let data = this.getCachedData(symbol);
|
|
172
172
|
if (!data) {
|
|
173
173
|
rtService['addRic'](symbol);
|
|
174
174
|
this.setCachedData(symbol, {});
|
|
@@ -231,8 +231,8 @@ Realtime.RECORD = function(symbol, field) {
|
|
|
231
231
|
* =MTXSERIES("TRI.TO","2016-11-22", "ASK.CLOSE")
|
|
232
232
|
*/
|
|
233
233
|
Realtime.MTXSERIES = function(param1, param2, param3) {
|
|
234
|
-
|
|
235
|
-
|
|
234
|
+
let argsLen = arguments.length;
|
|
235
|
+
let symbol, date, field;
|
|
236
236
|
if(argsLen === 2) { // TSI("Date", "Field")
|
|
237
237
|
this.addField("X_RIC_NAME", "idn"); // Add required field for triggering when adding new RIC
|
|
238
238
|
date = arguments[0];
|
|
@@ -259,7 +259,7 @@ Realtime.MTXSERIES = function(param1, param2, param3) {
|
|
|
259
259
|
}
|
|
260
260
|
|
|
261
261
|
// Init tsi service if not exist
|
|
262
|
-
|
|
262
|
+
let tsiService = this.getIntervalService("TSI");
|
|
263
263
|
if (!tsiService) {
|
|
264
264
|
tsiService = TSIService.create();
|
|
265
265
|
if (!tsiService) {
|
|
@@ -269,7 +269,7 @@ Realtime.MTXSERIES = function(param1, param2, param3) {
|
|
|
269
269
|
this.setIntervalService("TSI", tsiService);
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
-
|
|
272
|
+
let res = tsiService["addSymbolAndFieldToPeriod"](symbol, field, date); // Get the cache data from service.;
|
|
273
273
|
if (res === TSISubscription.PENDING_DATA) { // Pending data from requesting, Invalid field will return null
|
|
274
274
|
this.setDataError("Pending data");
|
|
275
275
|
}
|
|
@@ -2,7 +2,7 @@ import {Util} from "../Util.js";
|
|
|
2
2
|
import {Formula} from "./Formula.js";
|
|
3
3
|
|
|
4
4
|
/** @namespace */
|
|
5
|
-
|
|
5
|
+
let RealtimeService = {};
|
|
6
6
|
|
|
7
7
|
/** @type {Object}
|
|
8
8
|
* @private
|
|
@@ -25,9 +25,9 @@ RealtimeService.uuid = "";
|
|
|
25
25
|
* @return {Object}
|
|
26
26
|
*/
|
|
27
27
|
RealtimeService.create = function() {
|
|
28
|
-
|
|
28
|
+
let quotes2 = RealtimeService._quotes2;
|
|
29
29
|
if (!quotes2) {
|
|
30
|
-
|
|
30
|
+
let j = window ? window["JET"] : null;
|
|
31
31
|
if (j && j["Quotes2"]) {
|
|
32
32
|
quotes2 = j["Quotes2"];
|
|
33
33
|
RealtimeService._quotes2 = quotes2;
|
|
@@ -50,7 +50,7 @@ RealtimeService.setQuote2 = function(quotes2) {
|
|
|
50
50
|
* @return {string|null}
|
|
51
51
|
*/
|
|
52
52
|
RealtimeService.getResolvedFieldName = function(fid) {
|
|
53
|
-
|
|
53
|
+
let cache = RealtimeService._cache[fid];
|
|
54
54
|
if(cache) {
|
|
55
55
|
if(cache.value != null) {
|
|
56
56
|
return /** @type{string} */(cache.value);
|
|
@@ -68,7 +68,7 @@ RealtimeService.getResolvedFieldName = function(fid) {
|
|
|
68
68
|
*/
|
|
69
69
|
RealtimeService.resolveFieldId = function(fid, obj) {
|
|
70
70
|
fid = fid + ""; // Cast to string
|
|
71
|
-
|
|
71
|
+
let cache = RealtimeService._cache[fid];
|
|
72
72
|
if(cache) {
|
|
73
73
|
if(cache.value != null) {
|
|
74
74
|
return Promise.resolve(cache.value);
|
|
@@ -79,7 +79,7 @@ RealtimeService.resolveFieldId = function(fid, obj) {
|
|
|
79
79
|
|
|
80
80
|
// The request has not been resolved. Put any listener to the queue
|
|
81
81
|
if(obj) {
|
|
82
|
-
|
|
82
|
+
let q = cache.queue;
|
|
83
83
|
if(!q) {
|
|
84
84
|
q = cache.queue = [];
|
|
85
85
|
}
|
|
@@ -93,7 +93,7 @@ RealtimeService.resolveFieldId = function(fid, obj) {
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
// At this point there is no pending request (no promise) for the given fid
|
|
96
|
-
|
|
96
|
+
let payload = {
|
|
97
97
|
"universe": [
|
|
98
98
|
"Public",
|
|
99
99
|
"PublicPrivate"
|
|
@@ -107,7 +107,7 @@ RealtimeService.resolveFieldId = function(fid, obj) {
|
|
|
107
107
|
"searchText": fid
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
let prom = cache.promise = Util.post(RealtimeService._udipServiceUrl, payload)
|
|
111
111
|
.then(RealtimeService._onSuccessfulResolving.bind(null, cache))
|
|
112
112
|
.catch(RealtimeService._onFailedResolving.bind(null, cache));
|
|
113
113
|
|
|
@@ -122,11 +122,11 @@ RealtimeService.resolveFieldId = function(fid, obj) {
|
|
|
122
122
|
*/
|
|
123
123
|
RealtimeService._onSuccessfulResolving = function(cache, json) {
|
|
124
124
|
cache.value = ""; // value can be empty due to the given invalid json structure
|
|
125
|
-
|
|
125
|
+
let data = json["data"];
|
|
126
126
|
if(data) {
|
|
127
|
-
|
|
127
|
+
let fields = data["fields"];
|
|
128
128
|
if(fields) {
|
|
129
|
-
|
|
129
|
+
let info = fields[0];
|
|
130
130
|
if(info) {
|
|
131
131
|
if(info["oid"] === cache.fid) {
|
|
132
132
|
cache.value = info["path"]; // Cache the value
|
|
@@ -174,11 +174,11 @@ RealtimeService._onFailedResolving = function(cache, err) {
|
|
|
174
174
|
*/
|
|
175
175
|
RealtimeService._onResponseEnd = function(cache) {
|
|
176
176
|
cache.promise = null; // Promise has been fulfilled
|
|
177
|
-
|
|
177
|
+
let q = cache.queue;
|
|
178
178
|
if(q) { // Notify any object that is waiting for the response
|
|
179
|
-
|
|
180
|
-
for(
|
|
181
|
-
|
|
179
|
+
let len = q.length;
|
|
180
|
+
for(let i = 0; i < len; ++i) {
|
|
181
|
+
let obj = q[i];
|
|
182
182
|
if(obj instanceof Formula) { // WARNING: Referencing external object
|
|
183
183
|
obj.dispatchDataChanged(); // Force data re-calculation
|
|
184
184
|
}
|
|
@@ -3,7 +3,7 @@ import {TSISubscription} from "./TSISubscription.js";
|
|
|
3
3
|
/** @public
|
|
4
4
|
* @namespace
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
let TSIService = {};
|
|
7
7
|
|
|
8
8
|
/** @type {Object}
|
|
9
9
|
* @private
|
|
@@ -23,7 +23,7 @@ TSIService._tsiTaServiceUrl = "/Apps/TAService";
|
|
|
23
23
|
* @return {Object}
|
|
24
24
|
*/
|
|
25
25
|
TSIService.create = function() {
|
|
26
|
-
|
|
26
|
+
let tsiSub = TSIService._tsiSubscription;
|
|
27
27
|
if (!tsiSub) {
|
|
28
28
|
tsiSub = new TSISubscription();
|
|
29
29
|
TSIService._tsiSubscription = tsiSub;
|