@refinitiv-ui/efx-grid 6.0.130 → 6.0.131
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/grid/index.js +1 -1
- package/lib/tr-grid-range-bar/es6/LEDGuage.d.ts +39 -0
- package/lib/tr-grid-range-bar/es6/LEDGuage.js +261 -0
- package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +4 -3
- package/lib/tr-grid-range-bar/es6/RangeBar.js +309 -419
- package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +2 -0
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +161 -113
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +24 -2
- package/lib/tr-grid-util/es6/jet/DataGenerator.js +6 -6
- package/lib/types/es6/RowDragging.d.ts +2 -0
- package/lib/versions.json +4 -4
- package/package.json +1 -1
package/lib/grid/index.js
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
declare namespace LEDGuage {
|
4
|
+
|
5
|
+
type RangeValues = {
|
6
|
+
low?: number|null,
|
7
|
+
last?: number|null,
|
8
|
+
high?: number|null,
|
9
|
+
close?: number|null,
|
10
|
+
vwap?: number|null,
|
11
|
+
tick?: number|null
|
12
|
+
};
|
13
|
+
|
14
|
+
}
|
15
|
+
|
16
|
+
declare class LEDGuage {
|
17
|
+
|
18
|
+
constructor();
|
19
|
+
|
20
|
+
public static createElementWithText(text?: string|null): Element|null;
|
21
|
+
|
22
|
+
public setPriceGraph(priceGraph?: boolean|null): void;
|
23
|
+
|
24
|
+
public setRangeValue(rangeBarData: LEDGuage.RangeValues|null): void;
|
25
|
+
|
26
|
+
public isNoRangeValue(): boolean;
|
27
|
+
|
28
|
+
public isHighLowEqual(): boolean;
|
29
|
+
|
30
|
+
public isInvalidRangeValue(): boolean;
|
31
|
+
|
32
|
+
public getEqualRangeElement(): Element|null;
|
33
|
+
|
34
|
+
public getLEDGuageElement(): Element|null;
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
export default LEDGuage;
|
39
|
+
export { LEDGuage };
|
@@ -0,0 +1,261 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
const TICK_COLOR_MAPPING = ["var(--color-scheme-neutral)", "var(--color-scheme-tickup)", "var(--color-scheme-tickdown)"]; // ["level", "up", "down"]
|
4
|
+
|
5
|
+
/** @typedef {Object} LEDGuage~RangeValues
|
6
|
+
* @description Object of range values.
|
7
|
+
* @property {number=} low Field used as minimum range
|
8
|
+
* @property {number=} last Field used as current absolute value (white bar)
|
9
|
+
* @property {number=} high Field used as maximum range
|
10
|
+
* @property {number=} close Field used as close price
|
11
|
+
* @property {number=} vwap Field used as volume weighted average price (VWAP)
|
12
|
+
* @property {number=} tick Field used as tick color
|
13
|
+
*/
|
14
|
+
|
15
|
+
/**
|
16
|
+
* @constructor
|
17
|
+
*/
|
18
|
+
var LEDGuage = function () {
|
19
|
+
this._elem = document.createElement("ef-led-gauge");
|
20
|
+
this._elem.neutralColor = true; // TODO: Color should set by user
|
21
|
+
};
|
22
|
+
|
23
|
+
/** @private
|
24
|
+
* @type {number=}
|
25
|
+
*/
|
26
|
+
LEDGuage.prototype._low = null;
|
27
|
+
/** @private
|
28
|
+
* @type {number=}
|
29
|
+
*/
|
30
|
+
LEDGuage.prototype._last = null;
|
31
|
+
/** @private
|
32
|
+
* @type {number=}
|
33
|
+
*/
|
34
|
+
LEDGuage.prototype._high = null;
|
35
|
+
/** @private
|
36
|
+
* @type {number=}
|
37
|
+
*/
|
38
|
+
LEDGuage.prototype._close = null;
|
39
|
+
/** @private
|
40
|
+
* @type {number=}
|
41
|
+
*/
|
42
|
+
LEDGuage.prototype._vwap = null;
|
43
|
+
/** @private
|
44
|
+
* @type {number=}
|
45
|
+
*/
|
46
|
+
LEDGuage.prototype._tick = null;
|
47
|
+
/** @private
|
48
|
+
* @type {boolean}
|
49
|
+
*/
|
50
|
+
LEDGuage.prototype._priceGraph = false;
|
51
|
+
|
52
|
+
/** @private
|
53
|
+
* @param {LEDGuage~RangeValues} rBarOpt range
|
54
|
+
* @param {!Object} rangeBarValues
|
55
|
+
* @return {string} tooltip string value
|
56
|
+
*/
|
57
|
+
LEDGuage.calculateTooltip = function (rBarOpt, rangeBarValues) {
|
58
|
+
var low = rangeBarValues.low;
|
59
|
+
var last = rangeBarValues.last;
|
60
|
+
var high = rangeBarValues.high;
|
61
|
+
var vwap = rangeBarValues.vwap;
|
62
|
+
var close = rangeBarValues.close;
|
63
|
+
var priceGraph = rBarOpt.priceGraph;
|
64
|
+
|
65
|
+
var textTooltip;
|
66
|
+
if (rBarOpt["field"]) { // WARNING: Field overwrite low last high tooltip
|
67
|
+
textTooltip = (last != null ? last : '--');
|
68
|
+
} else { // provide low,last,high case
|
69
|
+
var lowValue = low != null ? low : '--';
|
70
|
+
var lastValue = last != null ? last : '--';
|
71
|
+
var highValue = high != null ? high : '--';
|
72
|
+
if (priceGraph) {
|
73
|
+
var vwapValue = vwap != null ? vwap : '--';
|
74
|
+
var closeValue = close != null ? close : '--';
|
75
|
+
textTooltip = 'Low: ' + lowValue + " " +
|
76
|
+
'Last: ' + lastValue + " " +
|
77
|
+
'High: ' + highValue + " " +
|
78
|
+
'VWAP: ' + vwapValue + " " +
|
79
|
+
'Close: ' + closeValue + " ";
|
80
|
+
} else {
|
81
|
+
textTooltip = 'Low: ' + lowValue + " " +
|
82
|
+
'Last: ' + lastValue + " " +
|
83
|
+
'High: ' + highValue;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
return textTooltip;
|
87
|
+
};
|
88
|
+
|
89
|
+
/** Used for convert the rangeBarOption and rowData into an object that has the properties of low, last, and high.
|
90
|
+
* @private
|
91
|
+
* @param {LEDGuage~RangeValues} rBarOpt
|
92
|
+
* @param {Object} rowData
|
93
|
+
* @return {LEDGuage~RangeValues}
|
94
|
+
*/
|
95
|
+
LEDGuage.getRangeBarData = function (rBarOpt, rowData) {
|
96
|
+
var low, high, last, close, vwap, tick;
|
97
|
+
if (rBarOpt.field) {
|
98
|
+
// Doesn't defined range bar data, use field instead
|
99
|
+
low = rBarOpt.start;
|
100
|
+
last = rowData[rBarOpt.field];
|
101
|
+
high = rBarOpt.end;
|
102
|
+
} else {
|
103
|
+
// Defined range bar data
|
104
|
+
low = rowData[rBarOpt.low];
|
105
|
+
last = rowData[rBarOpt.last];
|
106
|
+
high = rowData[rBarOpt.high];
|
107
|
+
close = rowData[rBarOpt.close];
|
108
|
+
vwap = rowData[rBarOpt.vwap];
|
109
|
+
tick = rowData[rBarOpt.tick];
|
110
|
+
}
|
111
|
+
return {
|
112
|
+
low: low,
|
113
|
+
last: last,
|
114
|
+
high: high,
|
115
|
+
close: close,
|
116
|
+
vwap: vwap,
|
117
|
+
tick: tick
|
118
|
+
};
|
119
|
+
};
|
120
|
+
|
121
|
+
/** Used for tranfrom value from raw value to normalize value (Percent value between -100 to 100)
|
122
|
+
* @private
|
123
|
+
* @param {number} low
|
124
|
+
* @param {number} current
|
125
|
+
* @param {number} high
|
126
|
+
* @return {number}
|
127
|
+
*/
|
128
|
+
LEDGuage.normalizeValue = function (low, current, high) {
|
129
|
+
return ((low - current) * 200) / (low - high) - 100;
|
130
|
+
};
|
131
|
+
|
132
|
+
/** Create element and set given text.
|
133
|
+
* @public
|
134
|
+
* @param {string=} text="" Set text to element
|
135
|
+
* @return {Element}
|
136
|
+
*/
|
137
|
+
LEDGuage.createElementWithText = function (text) {
|
138
|
+
let span = document.createElement("span");
|
139
|
+
span.textContent = text ? text : "";
|
140
|
+
return span;
|
141
|
+
};
|
142
|
+
|
143
|
+
/** Set price graph flag to render price graph mode
|
144
|
+
* @public
|
145
|
+
* @param {boolean=} priceGraph=false
|
146
|
+
*/
|
147
|
+
LEDGuage.prototype.setPriceGraph = function (priceGraph) {
|
148
|
+
this._priceGraph = priceGraph;
|
149
|
+
};
|
150
|
+
|
151
|
+
/** Set value to render LED-Guage
|
152
|
+
* @public
|
153
|
+
* @param {LEDGuage~RangeValues} rangeBarData
|
154
|
+
*/
|
155
|
+
LEDGuage.prototype.setRangeValue = function (rangeBarData) {
|
156
|
+
this._low = rangeBarData.low;
|
157
|
+
this._last = rangeBarData.last;
|
158
|
+
this._high = rangeBarData.high;
|
159
|
+
this._close = rangeBarData.close;
|
160
|
+
this._vwap = rangeBarData.vwap;
|
161
|
+
this._tick = rangeBarData.tick;
|
162
|
+
};
|
163
|
+
|
164
|
+
/**
|
165
|
+
* @public
|
166
|
+
* @return {boolean}
|
167
|
+
*/
|
168
|
+
LEDGuage.prototype.isNoRangeValue = function () {
|
169
|
+
return this._high == null && this._low == null && this._last == null;
|
170
|
+
};
|
171
|
+
|
172
|
+
/**
|
173
|
+
* @public
|
174
|
+
* @return {boolean}
|
175
|
+
*/
|
176
|
+
LEDGuage.prototype.isHighLowEqual = function () {
|
177
|
+
return this._high === this._low && this._high === this._last;
|
178
|
+
};
|
179
|
+
|
180
|
+
/**
|
181
|
+
* @public
|
182
|
+
* @return {boolean}
|
183
|
+
*/
|
184
|
+
LEDGuage.prototype.isInvalidRangeValue = function () {
|
185
|
+
return this._high == null || this._low == null || this._high < this._low;
|
186
|
+
};
|
187
|
+
|
188
|
+
/**
|
189
|
+
* @public
|
190
|
+
* @return {Element} LEDGuage Element
|
191
|
+
*/
|
192
|
+
LEDGuage.prototype.getEqualRangeElement = function () {
|
193
|
+
this._elem.range = [-100, 100];
|
194
|
+
this._elem.topValue = 0;
|
195
|
+
return this._elem;
|
196
|
+
};
|
197
|
+
|
198
|
+
/**
|
199
|
+
* @public
|
200
|
+
* @return {Element} LEDGuage Element
|
201
|
+
*/
|
202
|
+
LEDGuage.prototype.getLEDGuageElement = function () {
|
203
|
+
let close = this._close;
|
204
|
+
let vwap = this._vwap;
|
205
|
+
let low = this._low;
|
206
|
+
let last = this._last;
|
207
|
+
let high = this._high;
|
208
|
+
let lastNormalize = LEDGuage.normalizeValue(low, last, high);
|
209
|
+
if (this._priceGraph) {
|
210
|
+
let vwapNormalize = LEDGuage.normalizeValue(low, vwap, high);
|
211
|
+
let rangeColor;
|
212
|
+
if (close > last) {
|
213
|
+
rangeColor = "var(--color-scheme-tickdown)";
|
214
|
+
} else {
|
215
|
+
rangeColor = "var(--color-scheme-tickup)";
|
216
|
+
}
|
217
|
+
|
218
|
+
let leftSegmentValue = LEDGuage.normalizeValue(low, close, high);
|
219
|
+
let rangeValue;
|
220
|
+
if (lastNormalize < leftSegmentValue) {
|
221
|
+
rangeValue = [lastNormalize, leftSegmentValue];
|
222
|
+
} else {
|
223
|
+
rangeValue = [leftSegmentValue, lastNormalize];
|
224
|
+
}
|
225
|
+
this._elem.range = rangeValue;
|
226
|
+
this._elem.topValue = lastNormalize;
|
227
|
+
this._elem.bottomValue = vwapNormalize;
|
228
|
+
this._elem.style.setProperty("--range-color", rangeColor);
|
229
|
+
this._elem.style.setProperty("--bottom-selected-color", "var(--neutral-color)");
|
230
|
+
this._elem.style.setProperty("--top-selected-color", TICK_COLOR_MAPPING[this._tick]);
|
231
|
+
this._elem.style.setProperty("--clash-color", "var(--color-scheme-secondary)");
|
232
|
+
} else {
|
233
|
+
// applied range when the last value out of range, by set new low/high with last value
|
234
|
+
if (last < low) {
|
235
|
+
let lowNormalize = LEDGuage.normalizeValue(last, low, high);
|
236
|
+
this._elem.range = [lastNormalize, lowNormalize];
|
237
|
+
} else if (last > high) {
|
238
|
+
let highNormalize = LEDGuage.normalizeValue(low, high, last);
|
239
|
+
this._elem.range = [highNormalize, lastNormalize];
|
240
|
+
}
|
241
|
+
|
242
|
+
if (low === high) { // low equal high case (avoid normalize to infinity)
|
243
|
+
this._elem.range = [-100, 100];
|
244
|
+
lastNormalize = last < low ? -100 : 100; // topValue will be left or right
|
245
|
+
}
|
246
|
+
|
247
|
+
if (last == null) { // only last is empty (low and high should have value)
|
248
|
+
this._elem.range = [];
|
249
|
+
lastNormalize = null;
|
250
|
+
}
|
251
|
+
|
252
|
+
this._elem.topValue = lastNormalize;
|
253
|
+
}
|
254
|
+
|
255
|
+
return this._elem;
|
256
|
+
};
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
export default LEDGuage;
|
261
|
+
export { LEDGuage };
|
@@ -1,7 +1,8 @@
|
|
1
|
-
import {Ext} from '../../tr-grid-util/es6/Ext.js';
|
2
|
-
import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
-
import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
|
1
|
+
import { Ext } from '../../tr-grid-util/es6/Ext.js';
|
2
|
+
import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
+
import { ElfUtil } from '../../tr-grid-util/es6/ElfUtil.js';
|
4
4
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
5
|
+
import { LEDGuage } from "./LEDGuage.js";
|
5
6
|
|
6
7
|
declare namespace RangeBarPlugin {
|
7
8
|
|