evui 3.4.206 → 3.4.208
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/README.md +18 -33
- package/dist/404.html +44 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.js +22645 -0
- package/dist/index.umd.cjs +28 -0
- package/dist/style.css +1 -0
- package/package.json +46 -43
- package/dist/evui.common.js +0 -63678
- package/dist/evui.common.js.map +0 -1
- package/dist/evui.umd.js +0 -63688
- package/dist/evui.umd.js.map +0 -1
- package/dist/evui.umd.min.js +0 -2
- package/dist/evui.umd.min.js.map +0 -1
- package/dist/img/EVUI.b82ee81a.svg +0 -293
- package/src/assets/logo.png +0 -0
- package/src/common/emitter.js +0 -20
- package/src/common/utils.bignumber.js +0 -67
- package/src/common/utils.debounce.js +0 -223
- package/src/common/utils.js +0 -151
- package/src/common/utils.table.js +0 -78
- package/src/common/utils.throttle.js +0 -83
- package/src/common/utils.tree.js +0 -18
- package/src/components/button/Button.vue +0 -195
- package/src/components/button/index.js +0 -7
- package/src/components/buttonGroup/ButtonGroup.vue +0 -11
- package/src/components/buttonGroup/index.js +0 -7
- package/src/components/calendar/Calendar.vue +0 -725
- package/src/components/calendar/index.js +0 -7
- package/src/components/calendar/uses.js +0 -1410
- package/src/components/chart/Chart.vue +0 -363
- package/src/components/chart/ChartToolbar.vue +0 -52
- package/src/components/chart/chart.core.js +0 -1170
- package/src/components/chart/chartZoom.core.js +0 -540
- package/src/components/chart/element/element.bar.js +0 -672
- package/src/components/chart/element/element.bar.time.js +0 -166
- package/src/components/chart/element/element.heatmap.js +0 -743
- package/src/components/chart/element/element.line.js +0 -611
- package/src/components/chart/element/element.pie.js +0 -197
- package/src/components/chart/element/element.scatter.js +0 -320
- package/src/components/chart/element/element.tip.js +0 -717
- package/src/components/chart/helpers/helpers.canvas.js +0 -265
- package/src/components/chart/helpers/helpers.constant.js +0 -235
- package/src/components/chart/helpers/helpers.util.js +0 -400
- package/src/components/chart/index.js +0 -9
- package/src/components/chart/model/index.js +0 -50
- package/src/components/chart/model/model.series.js +0 -125
- package/src/components/chart/model/model.store.js +0 -1427
- package/src/components/chart/plugins/plugins.interaction.js +0 -1655
- package/src/components/chart/plugins/plugins.legend.gradient.js +0 -606
- package/src/components/chart/plugins/plugins.legend.js +0 -1543
- package/src/components/chart/plugins/plugins.pie.js +0 -254
- package/src/components/chart/plugins/plugins.scrollbar.js +0 -732
- package/src/components/chart/plugins/plugins.title.js +0 -61
- package/src/components/chart/plugins/plugins.tooltip.js +0 -1041
- package/src/components/chart/scale/scale.js +0 -951
- package/src/components/chart/scale/scale.linear.js +0 -268
- package/src/components/chart/scale/scale.logarithmic.js +0 -135
- package/src/components/chart/scale/scale.step.js +0 -430
- package/src/components/chart/scale/scale.time.category.js +0 -338
- package/src/components/chart/scale/scale.time.js +0 -49
- package/src/components/chart/style/chart.scss +0 -405
- package/src/components/chart/uses.js +0 -721
- package/src/components/chartBrush/ChartBrush.vue +0 -323
- package/src/components/chartBrush/chartBrush.core.js +0 -691
- package/src/components/chartBrush/index.js +0 -9
- package/src/components/chartBrush/uses.js +0 -23
- package/src/components/chartGroup/ChartGroup.vue +0 -144
- package/src/components/chartGroup/index.js +0 -9
- package/src/components/chartGroup/style/chartGroup.scss +0 -5
- package/src/components/chartGroup/uses.js +0 -53
- package/src/components/checkbox/Checkbox.vue +0 -229
- package/src/components/checkbox/index.js +0 -7
- package/src/components/checkboxGroup/CheckboxGroup.vue +0 -44
- package/src/components/checkboxGroup/index.js +0 -7
- package/src/components/contextMenu/ContextMenu.vue +0 -95
- package/src/components/contextMenu/MenuList.vue +0 -182
- package/src/components/contextMenu/index.js +0 -7
- package/src/components/contextMenu/uses.js +0 -223
- package/src/components/datePicker/DatePicker.vue +0 -504
- package/src/components/datePicker/index.js +0 -7
- package/src/components/datePicker/uses.js +0 -460
- package/src/components/grid/Grid.vue +0 -1535
- package/src/components/grid/GridColumnSetting.vue +0 -358
- package/src/components/grid/GridFilterSetting.vue +0 -323
- package/src/components/grid/GridPagination.vue +0 -75
- package/src/components/grid/GridSummary.vue +0 -314
- package/src/components/grid/GridToolbar.vue +0 -35
- package/src/components/grid/icon/icon-option-button.vue +0 -17
- package/src/components/grid/icon/icon-sort-button.vue +0 -67
- package/src/components/grid/index.js +0 -11
- package/src/components/grid/style/grid.scss +0 -417
- package/src/components/grid/uses.js +0 -1629
- package/src/components/icon/Icon.vue +0 -53
- package/src/components/icon/index.js +0 -8
- package/src/components/inputNumber/InputNumber.vue +0 -212
- package/src/components/inputNumber/index.js +0 -7
- package/src/components/inputNumber/uses.js +0 -217
- package/src/components/loading/Loading.vue +0 -125
- package/src/components/loading/index.js +0 -7
- package/src/components/menu/Menu.vue +0 -79
- package/src/components/menu/MenuItem.vue +0 -201
- package/src/components/menu/index.js +0 -7
- package/src/components/message/Message.vue +0 -229
- package/src/components/message/index.js +0 -34
- package/src/components/messageBox/MessageBox.vue +0 -358
- package/src/components/messageBox/index.js +0 -22
- package/src/components/notification/Notification.vue +0 -316
- package/src/components/notification/index.js +0 -49
- package/src/components/pagination/Pagination.vue +0 -317
- package/src/components/pagination/index.js +0 -7
- package/src/components/pagination/pageButton.vue +0 -31
- package/src/components/progress/Progress.vue +0 -139
- package/src/components/progress/index.js +0 -7
- package/src/components/radio/Radio.vue +0 -159
- package/src/components/radio/index.js +0 -7
- package/src/components/radioGroup/RadioGroup.vue +0 -41
- package/src/components/radioGroup/index.js +0 -7
- package/src/components/scheduler/Scheduler.vue +0 -149
- package/src/components/scheduler/index.js +0 -7
- package/src/components/scheduler/uses.js +0 -183
- package/src/components/select/Select.vue +0 -556
- package/src/components/select/index.js +0 -7
- package/src/components/select/uses.js +0 -379
- package/src/components/slider/Slider.vue +0 -505
- package/src/components/slider/index.js +0 -7
- package/src/components/slider/uses.js +0 -391
- package/src/components/tabPanel/TabPanel.vue +0 -74
- package/src/components/tabPanel/index.js +0 -7
- package/src/components/tabs/Tabs.vue +0 -517
- package/src/components/tabs/index.js +0 -7
- package/src/components/textField/TextField.vue +0 -399
- package/src/components/textField/index.js +0 -7
- package/src/components/timePicker/TimePicker.vue +0 -364
- package/src/components/timePicker/index.js +0 -7
- package/src/components/toggle/Toggle.vue +0 -115
- package/src/components/toggle/index.js +0 -7
- package/src/components/tree/Tree.vue +0 -338
- package/src/components/tree/TreeNode.vue +0 -293
- package/src/components/tree/index.js +0 -7
- package/src/components/treeGrid/TreeGrid.vue +0 -1074
- package/src/components/treeGrid/TreeGridNode.vue +0 -349
- package/src/components/treeGrid/TreeGridToolbar.vue +0 -35
- package/src/components/treeGrid/icon/icon-tree.png +0 -0
- package/src/components/treeGrid/index.js +0 -9
- package/src/components/treeGrid/style/treeGrid.scss +0 -277
- package/src/components/treeGrid/uses.js +0 -1178
- package/src/components/window/Window.vue +0 -329
- package/src/components/window/index.js +0 -7
- package/src/components/window/uses.js +0 -908
- package/src/directives/clickoutside.js +0 -90
- package/src/main.js +0 -120
- package/src/style/components/input.scss +0 -108
- package/src/style/functions.scss +0 -3
- package/src/style/index.scss +0 -6
- package/src/style/lib/fonts/EVUI.eot +0 -0
- package/src/style/lib/fonts/EVUI.svg +0 -293
- package/src/style/lib/fonts/EVUI.ttf +0 -0
- package/src/style/lib/fonts/EVUI.woff +0 -0
- package/src/style/lib/icon.css +0 -888
- package/src/style/mixins.scss +0 -94
- package/src/style/themes.scss +0 -69
- package/src/style/variables.scss +0 -22
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import Scale from './scale';
|
|
2
|
-
import Util from '../helpers/helpers.util';
|
|
3
|
-
|
|
4
|
-
class LinearScale extends Scale {
|
|
5
|
-
/**
|
|
6
|
-
* Transforming label by designated format
|
|
7
|
-
* @param {number} value label value
|
|
8
|
-
* @param {object} data data for formatting
|
|
9
|
-
*
|
|
10
|
-
* @returns {string} formatted label
|
|
11
|
-
*/
|
|
12
|
-
getLabelFormat(value, data = {}) {
|
|
13
|
-
if (this.formatter) {
|
|
14
|
-
const formattedLabel = this.formatter(value, data);
|
|
15
|
-
|
|
16
|
-
if (typeof formattedLabel === 'string') {
|
|
17
|
-
return formattedLabel;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return Util.labelSignFormat(value, this.decimalPoint);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Calculate interval
|
|
26
|
-
* @param {object} range range information
|
|
27
|
-
*
|
|
28
|
-
* @returns {number} interval (한 칸에 표시할 값의 간격)
|
|
29
|
-
*/
|
|
30
|
-
getInterval(range) {
|
|
31
|
-
if (this.interval) return this.interval;
|
|
32
|
-
|
|
33
|
-
let _interval = 0;
|
|
34
|
-
|
|
35
|
-
const max = range.maxValue;
|
|
36
|
-
const min = range.minValue;
|
|
37
|
-
const steps = range.maxSteps;
|
|
38
|
-
|
|
39
|
-
// step이 0이면 interval 계산 불가
|
|
40
|
-
if (!steps || steps <= 0) return 0;
|
|
41
|
-
|
|
42
|
-
// startToZero이고, 최소값이 음수일 경우 0을 반드시 포함
|
|
43
|
-
if (this.startToZero && min < 0) {
|
|
44
|
-
const totalRange = Math.abs(min) + Math.abs(max);
|
|
45
|
-
|
|
46
|
-
// 비율로 나눔
|
|
47
|
-
const negativeRatio = Math.abs(min) / totalRange;
|
|
48
|
-
const positiveRatio = Math.abs(max) / totalRange;
|
|
49
|
-
|
|
50
|
-
// 각 방향에 최소 1칸 이상 배정되도록 보장
|
|
51
|
-
let negativeSteps = Math.max(1, Math.round(negativeRatio * steps));
|
|
52
|
-
let positiveSteps = Math.max(1, steps - negativeSteps);
|
|
53
|
-
|
|
54
|
-
// 다시 합이 steps보다 커질 수도 있으니, 조정
|
|
55
|
-
if (negativeSteps + positiveSteps > steps) {
|
|
56
|
-
// 가장 큰 쪽에서 하나 줄임
|
|
57
|
-
if (negativeRatio > positiveRatio) {
|
|
58
|
-
negativeSteps -= 1;
|
|
59
|
-
} else {
|
|
60
|
-
positiveSteps -= 1;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
_interval = Math.max(
|
|
65
|
-
Math.abs(min) / (negativeSteps || 1),
|
|
66
|
-
Math.abs(max) / (positiveSteps || 1),
|
|
67
|
-
);
|
|
68
|
-
} else {
|
|
69
|
-
_interval = (max - min) / steps;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return this.decimalPoint ? _interval : Math.ceil(_interval);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Get decimal point from range
|
|
77
|
-
* @param {object} {
|
|
78
|
-
* graphRange: number,
|
|
79
|
-
* numberOfSteps: number,
|
|
80
|
-
* interval: number,
|
|
81
|
-
* }
|
|
82
|
-
* @returns {number} decimal point
|
|
83
|
-
*/
|
|
84
|
-
getDecimalPointFromRange({
|
|
85
|
-
graphRange,
|
|
86
|
-
numberOfSteps,
|
|
87
|
-
}) {
|
|
88
|
-
if (numberOfSteps <= 0 || graphRange === 0) {
|
|
89
|
-
return 0;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const interval = graphRange / numberOfSteps;
|
|
93
|
-
if (interval === 0) {
|
|
94
|
-
return 0;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
let decimals = 0;
|
|
98
|
-
let temp = interval;
|
|
99
|
-
|
|
100
|
-
while (temp < 1) {
|
|
101
|
-
temp *= 10;
|
|
102
|
-
decimals++;
|
|
103
|
-
|
|
104
|
-
if (decimals > 10) {
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return decimals;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* With range information, calculate how many labels in axis
|
|
114
|
-
* @param {object} range min/max information
|
|
115
|
-
*
|
|
116
|
-
* @returns {object} steps, interval, min/max graph value
|
|
117
|
-
*/
|
|
118
|
-
calculateSteps(range) {
|
|
119
|
-
const { maxValue, minValue } = range;
|
|
120
|
-
let { maxSteps = 1 } = range;
|
|
121
|
-
|
|
122
|
-
let interval = this.getInterval(range);
|
|
123
|
-
let graphMin = 0;
|
|
124
|
-
let graphMax = 0;
|
|
125
|
-
|
|
126
|
-
// 그래프 최대/최소 값 계산
|
|
127
|
-
if (minValue >= 0) {
|
|
128
|
-
// 전부 양수
|
|
129
|
-
graphMin = +minValue;
|
|
130
|
-
graphMax = Math.ceil(maxValue / interval) * interval;
|
|
131
|
-
} else if (maxValue >= 0) {
|
|
132
|
-
// 양수/음수 혼합
|
|
133
|
-
graphMin = Math.floor(minValue / interval) * interval;
|
|
134
|
-
graphMax = Math.ceil(maxValue / interval) * interval;
|
|
135
|
-
} else {
|
|
136
|
-
// 전부 음수
|
|
137
|
-
graphMax = +maxValue;
|
|
138
|
-
graphMin = Math.floor(minValue / interval) * interval;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const graphRange = graphMax - graphMin;
|
|
142
|
-
let numberOfSteps = Math.round(graphRange / interval);
|
|
143
|
-
|
|
144
|
-
// 특수 케이스: 양수 최소값, 최대값이 1일 경우
|
|
145
|
-
if (minValue > 0 && maxValue === 1) {
|
|
146
|
-
if (!this.decimalPoint) {
|
|
147
|
-
interval = 1;
|
|
148
|
-
numberOfSteps = 1;
|
|
149
|
-
maxSteps = 1;
|
|
150
|
-
} else if (maxSteps > 2) {
|
|
151
|
-
interval = 0.2;
|
|
152
|
-
numberOfSteps = 5;
|
|
153
|
-
maxSteps = 5;
|
|
154
|
-
} else {
|
|
155
|
-
interval = 0.5;
|
|
156
|
-
numberOfSteps = 2;
|
|
157
|
-
maxSteps = 2;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// 최대 스텝 수 조정
|
|
162
|
-
while (numberOfSteps > maxSteps) {
|
|
163
|
-
interval *= 2;
|
|
164
|
-
numberOfSteps = Math.round(graphRange / interval);
|
|
165
|
-
interval = Math.ceil(graphRange / numberOfSteps);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (graphRange > (numberOfSteps * interval)) {
|
|
169
|
-
interval = Math.ceil(graphRange / numberOfSteps);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
if (this.decimalPoint === 'auto') {
|
|
173
|
-
this.decimalPoint = this?.getDecimalPointFromRange?.({
|
|
174
|
-
graphRange,
|
|
175
|
-
numberOfSteps,
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return {
|
|
180
|
-
steps: numberOfSteps,
|
|
181
|
-
interval,
|
|
182
|
-
graphMin,
|
|
183
|
-
graphMax,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Calculate min/max value, label and size information for axis
|
|
189
|
-
* @param {object} minMax min/max information
|
|
190
|
-
* @param {object} scrollbarOpt scrollbar option
|
|
191
|
-
*
|
|
192
|
-
* @returns {object} min/max value and label
|
|
193
|
-
*/
|
|
194
|
-
calculateScaleRange(minMax, scrollbarOpt) {
|
|
195
|
-
let maxValue;
|
|
196
|
-
let minValue;
|
|
197
|
-
let isDefaultMaxSameAsMin = false;
|
|
198
|
-
|
|
199
|
-
const range = scrollbarOpt?.use ? scrollbarOpt?.range : this.range;
|
|
200
|
-
if (Array.isArray(range) && range?.length === 2) {
|
|
201
|
-
if (this.options.type === 'heatMap') {
|
|
202
|
-
maxValue = range[1] > +minMax.max ? +minMax.max : range[1];
|
|
203
|
-
minValue = range[0] < +minMax.min ? +minMax.min : range[0];
|
|
204
|
-
} else {
|
|
205
|
-
maxValue = range[1];
|
|
206
|
-
minValue = range[0];
|
|
207
|
-
}
|
|
208
|
-
} else if (typeof range === 'function') {
|
|
209
|
-
[minValue, maxValue] = range(minMax.min, minMax.max);
|
|
210
|
-
} else {
|
|
211
|
-
maxValue = minMax.max;
|
|
212
|
-
minValue = minMax.min;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// autoScaleRatio 적용 케이스
|
|
216
|
-
if (this.autoScaleRatio) {
|
|
217
|
-
const temp = maxValue;
|
|
218
|
-
// 양수 방향에만 autoScaleRatio 적용
|
|
219
|
-
const _maxValue = maxValue * (this.autoScaleRatio + 1);
|
|
220
|
-
maxValue = this.decimalPoint ? _maxValue : Math.ceil(_maxValue);
|
|
221
|
-
|
|
222
|
-
if (maxValue > 0 && minValue < 0) {
|
|
223
|
-
// 양수/음수 혼합 케이스 -- 음수 방향에도 maxValue 증가분만큼 더하기
|
|
224
|
-
const diff = temp - maxValue;
|
|
225
|
-
minValue += diff;
|
|
226
|
-
} else if (maxValue < 0 && minValue < 0) {
|
|
227
|
-
// 전부 음수 케이스 -- 음수 방향에도 autoScaleRatio 적용
|
|
228
|
-
const _minValue = minValue * (this.autoScaleRatio + 1);
|
|
229
|
-
minValue = this.decimalPoint ? _minValue : Math.ceil(_minValue);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// 0 기준 축 설정 케이스
|
|
234
|
-
if (this.startToZero) {
|
|
235
|
-
if (minValue > 0) {
|
|
236
|
-
minValue = 0;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if (maxValue < 0) {
|
|
240
|
-
maxValue = 0;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
if (maxValue === minValue) {
|
|
245
|
-
maxValue += 1;
|
|
246
|
-
isDefaultMaxSameAsMin = true;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
const minLabel = this.getLabelFormat(minValue);
|
|
250
|
-
const maxLabel = this.getLabelFormat(maxValue, {
|
|
251
|
-
isMaxValueSameAsMin: isDefaultMaxSameAsMin,
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
return {
|
|
255
|
-
min: minValue,
|
|
256
|
-
max: maxValue,
|
|
257
|
-
minLabel,
|
|
258
|
-
maxLabel,
|
|
259
|
-
size: Util.calcTextSize(
|
|
260
|
-
maxLabel,
|
|
261
|
-
Util.getLabelStyle(this.labelStyle),
|
|
262
|
-
this.labelStyle?.padding,
|
|
263
|
-
),
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
export default LinearScale;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import Scale from './scale';
|
|
2
|
-
import Util from '../helpers/helpers.util';
|
|
3
|
-
|
|
4
|
-
class LogarithmicScale extends Scale {
|
|
5
|
-
/**
|
|
6
|
-
* Calculate min/max value, label and size information for logarithmic scale
|
|
7
|
-
* @param {object} minMax min/max information
|
|
8
|
-
*
|
|
9
|
-
* @returns {object} min/max value and label
|
|
10
|
-
*/
|
|
11
|
-
calculateScaleRange(minMax) {
|
|
12
|
-
let maxValue;
|
|
13
|
-
let minValue;
|
|
14
|
-
let isDefaultMaxSameAsMin = false;
|
|
15
|
-
if (Array.isArray(this.range) && this.range.length === 2) {
|
|
16
|
-
maxValue = this.range[1];
|
|
17
|
-
minValue = this.range[0];
|
|
18
|
-
} else if (typeof range === 'function') {
|
|
19
|
-
[minValue, maxValue] = this.range(minMax.min, minMax.max);
|
|
20
|
-
} else {
|
|
21
|
-
maxValue = minMax.max;
|
|
22
|
-
minValue = minMax.min;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const rangeMagnitude = Util.calculateMagnitude(maxValue - minValue);
|
|
26
|
-
maxValue = Math.ceil(maxValue / (10 ** rangeMagnitude)) * (10 ** rangeMagnitude);
|
|
27
|
-
|
|
28
|
-
if (this.startToZero) {
|
|
29
|
-
minValue = 0;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (maxValue === minValue) {
|
|
33
|
-
maxValue += 1;
|
|
34
|
-
isDefaultMaxSameAsMin = true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const minLabel = this.getLabelFormat(minValue);
|
|
38
|
-
const maxLabel = this.getLabelFormat(maxValue, {
|
|
39
|
-
isMaxValueSameAsMin: isDefaultMaxSameAsMin,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
return {
|
|
43
|
-
min: minValue,
|
|
44
|
-
max: maxValue,
|
|
45
|
-
minLabel,
|
|
46
|
-
maxLabel,
|
|
47
|
-
size: Util.calcTextSize(maxLabel, Util.getLabelStyle(this.labelStyle)),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* With range information, calculate how many labels in axis
|
|
53
|
-
* @param {object} range min/max information
|
|
54
|
-
* @param {boolean} skipFitting determines if label skipping job.
|
|
55
|
-
*
|
|
56
|
-
* @returns {object} steps, interval, min/max graph value
|
|
57
|
-
*/
|
|
58
|
-
calculateSteps(range, skipFitting) {
|
|
59
|
-
const maxValue = range.maxValue;
|
|
60
|
-
const minValue = range.minValue;
|
|
61
|
-
const maxSteps = range.maxSteps;
|
|
62
|
-
const rangeMagnitude = Util.calculateMagnitude(maxValue - minValue);
|
|
63
|
-
|
|
64
|
-
let interval = this.getInterval(range);
|
|
65
|
-
let numberOfSteps;
|
|
66
|
-
|
|
67
|
-
const graphMax = maxValue;
|
|
68
|
-
const graphMin = minValue;
|
|
69
|
-
const graphRange = graphMax - graphMin;
|
|
70
|
-
|
|
71
|
-
numberOfSteps = Math.round(graphRange / interval);
|
|
72
|
-
|
|
73
|
-
if (maxValue === 1) {
|
|
74
|
-
interval = 0.2;
|
|
75
|
-
numberOfSteps = 5;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
while ((numberOfSteps > maxSteps || (numberOfSteps * 2) < maxSteps) && !skipFitting) {
|
|
79
|
-
if (numberOfSteps > maxSteps) {
|
|
80
|
-
interval *= 2;
|
|
81
|
-
numberOfSteps = Math.ceil(graphRange / interval);
|
|
82
|
-
} else if (rangeMagnitude >= 0) {
|
|
83
|
-
if ((interval / 2) % 1 === 0) {
|
|
84
|
-
interval /= 2;
|
|
85
|
-
numberOfSteps = Math.ceil(graphRange / interval);
|
|
86
|
-
} else {
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
interval /= 2;
|
|
91
|
-
numberOfSteps = Math.ceil(graphRange / interval);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return {
|
|
96
|
-
steps: numberOfSteps,
|
|
97
|
-
interval,
|
|
98
|
-
graphMin,
|
|
99
|
-
graphMax: Math.ceil(graphMin + (numberOfSteps * interval)),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Transforming label by designated format
|
|
105
|
-
* @param {number} value label value
|
|
106
|
-
* @param {object} data data for formatting
|
|
107
|
-
*
|
|
108
|
-
* @returns {string} formatted label
|
|
109
|
-
*/
|
|
110
|
-
getLabelFormat(value, data = {}) {
|
|
111
|
-
if (this.formatter) {
|
|
112
|
-
const formattedLabel = this.formatter(value, data);
|
|
113
|
-
|
|
114
|
-
if (typeof formattedLabel === 'string') {
|
|
115
|
-
return formattedLabel;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return Util.labelSignFormat(value, this.decimalPoint);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Calculate interval
|
|
124
|
-
* @param {object} range range information
|
|
125
|
-
*
|
|
126
|
-
* @returns {number} interval
|
|
127
|
-
*/
|
|
128
|
-
getInterval(range) {
|
|
129
|
-
const max = range.maxValue;
|
|
130
|
-
const min = range.minValue;
|
|
131
|
-
return 10 ** Util.calculateMagnitude(max - min);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export default LogarithmicScale;
|