@windborne/grapher 1.0.43 → 1.0.44
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/dist/bundle.cjs +1 -1
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.esm.js +1 -1
- package/dist/bundle.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/state/calculate_data_bounds.js +2 -1
- package/src/state/expand_bounds.js +6 -2
- package/src/state/space_conversions/simple_series_to_data_space.js +22 -2
- package/src/state/state_controller.js +43 -4
package/package.json
CHANGED
|
@@ -66,7 +66,7 @@ export default function calculateDataBounds(inDataSpace, {percentile=100, percen
|
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
if (percentile !== 100 && inDataSpace.length) {
|
|
69
|
-
return percentileBounds(inDataSpace, bounds, {percentile, percentileAsymmetry});
|
|
69
|
+
return percentileBounds(inDataSpace, bounds, {percentile, percentileAsymmetry, rangeValues});
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
let dates = false;
|
|
@@ -117,6 +117,7 @@ export default function calculateDataBounds(inDataSpace, {percentile=100, percen
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
+
|
|
120
121
|
|
|
121
122
|
return finalizeBounds(bounds, {dates});
|
|
122
123
|
}
|
|
@@ -31,8 +31,12 @@ export default function expandBounds(bounds, {expandYWith = [], extendXForNBars=
|
|
|
31
31
|
|
|
32
32
|
const range = expandedBounds.maxY - expandedBounds.minY;
|
|
33
33
|
const midpoint = expandedBounds.minY + range/2;
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const padding = 0.05 * range / 2;
|
|
35
|
+
const beforeMin = expandedBounds.minY;
|
|
36
|
+
const beforeMax = expandedBounds.maxY;
|
|
37
|
+
expandedBounds.minY = Math.min(expandedBounds.minY, midpoint - 1.05*range/2);
|
|
38
|
+
expandedBounds.maxY = Math.max(expandedBounds.maxY, midpoint + 1.05*range/2);
|
|
39
|
+
|
|
36
40
|
|
|
37
41
|
if (expandedBounds.minY === expandedBounds.maxY && expandedBounds.minY !== null) {
|
|
38
42
|
if (expandedBounds.minY > 0) {
|
|
@@ -14,12 +14,22 @@ export default function simpleSeriesToDataSpace(singleSeries, options={}) {
|
|
|
14
14
|
throw new Error(`Cannot normalize ${type} (expected a simple type)`);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const result = {
|
|
18
18
|
tuples: tuplesToDataSpace,
|
|
19
19
|
values: valuesToDataSpace,
|
|
20
20
|
objects: objectsToDataSpace
|
|
21
21
|
}[type](options.data || singleSeries.simpleData || singleSeries.data, singleSeries, options);
|
|
22
22
|
|
|
23
|
+
let inDataSpace;
|
|
24
|
+
let rangeValues = [];
|
|
25
|
+
|
|
26
|
+
if (Array.isArray(result)) {
|
|
27
|
+
inDataSpace = result;
|
|
28
|
+
} else {
|
|
29
|
+
inDataSpace = result.data;
|
|
30
|
+
rangeValues = result.rangeValues || [];
|
|
31
|
+
}
|
|
32
|
+
|
|
23
33
|
if (singleSeries.square) {
|
|
24
34
|
const square = [];
|
|
25
35
|
let prevY = options.prevY;
|
|
@@ -58,6 +68,13 @@ export default function simpleSeriesToDataSpace(singleSeries, options={}) {
|
|
|
58
68
|
}
|
|
59
69
|
}
|
|
60
70
|
|
|
71
|
+
if (rangeValues.length > 0) {
|
|
72
|
+
return {
|
|
73
|
+
data: inDataSpace,
|
|
74
|
+
rangeValues: rangeValues
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
61
78
|
return inDataSpace;
|
|
62
79
|
}
|
|
63
80
|
|
|
@@ -239,7 +256,10 @@ function objectsToDataSpace(data, series, options) {
|
|
|
239
256
|
}
|
|
240
257
|
|
|
241
258
|
if (rangeValues.length > 0) {
|
|
242
|
-
|
|
259
|
+
return {
|
|
260
|
+
data: inDataSpace,
|
|
261
|
+
rangeValues: rangeValues
|
|
262
|
+
};
|
|
243
263
|
}
|
|
244
264
|
|
|
245
265
|
return inDataSpace;
|
|
@@ -613,16 +613,35 @@ export default class StateController extends Eventable {
|
|
|
613
613
|
}
|
|
614
614
|
|
|
615
615
|
const simpleData = this._seriesToSimpleData(singleSeries);
|
|
616
|
-
|
|
616
|
+
const dataSpaceResult = simpleSeriesToDataSpace({
|
|
617
617
|
...singleSeries,
|
|
618
618
|
data: simpleData
|
|
619
619
|
}, {
|
|
620
620
|
stateController: this
|
|
621
621
|
});
|
|
622
|
+
|
|
623
|
+
let inDataSpace, rangeValues;
|
|
624
|
+
if (Array.isArray(dataSpaceResult)) {
|
|
625
|
+
inDataSpace = dataSpaceResult;
|
|
626
|
+
rangeValues = [];
|
|
627
|
+
} else {
|
|
628
|
+
inDataSpace = dataSpaceResult.data;
|
|
629
|
+
rangeValues = dataSpaceResult.rangeValues || [];
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
singleSeries.inDataSpace = inDataSpace;
|
|
622
633
|
singleSeries.simpleDataSliceStart = simpleData.length;
|
|
623
|
-
singleSeries.
|
|
624
|
-
|
|
634
|
+
singleSeries._rangeValues = rangeValues;
|
|
635
|
+
const allYValues = [...inDataSpace.map(([x, y]) => y).filter(y => typeof y === 'number'), ...rangeValues];
|
|
636
|
+
const extendedDataSpace = inDataSpace.map(([x, y]) => [x, y]);
|
|
637
|
+
for (let rangeValue of rangeValues) {
|
|
638
|
+
extendedDataSpace.push([null, rangeValue]);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
singleSeries.dataBounds = calculateDataBounds(extendedDataSpace, {
|
|
642
|
+
rangeValues: rangeValues
|
|
625
643
|
});
|
|
644
|
+
|
|
626
645
|
if (singleSeries.rendering === 'bar') {
|
|
627
646
|
singleSeries.dataBounds = expandBounds(singleSeries.dataBounds, { extendXForNBars: singleSeries.inDataSpace.length, expandYWith: singleSeries.expandYWith });
|
|
628
647
|
}
|
|
@@ -799,7 +818,27 @@ export default class StateController extends Eventable {
|
|
|
799
818
|
}
|
|
800
819
|
|
|
801
820
|
if (singleSeries._rangeValues && singleSeries._rangeValues.length > 0) {
|
|
802
|
-
|
|
821
|
+
const visibleDataPoints = singleSeries.inDataSpace.filter(([x, y]) =>
|
|
822
|
+
singleSeries.selectedBounds.minX <= x && x <= singleSeries.selectedBounds.maxX
|
|
823
|
+
);
|
|
824
|
+
|
|
825
|
+
const visibleRangeValues = [];
|
|
826
|
+
for (let i = 0; i < visibleDataPoints.length; i++) {
|
|
827
|
+
const dataPointIndex = singleSeries.inDataSpace.indexOf(visibleDataPoints[i]);
|
|
828
|
+
if (dataPointIndex >= 0) {
|
|
829
|
+
const rangeIndex = dataPointIndex * 2;
|
|
830
|
+
if (rangeIndex < singleSeries._rangeValues.length) {
|
|
831
|
+
visibleRangeValues.push(singleSeries._rangeValues[rangeIndex]);
|
|
832
|
+
if (rangeIndex + 1 < singleSeries._rangeValues.length) {
|
|
833
|
+
visibleRangeValues.push(singleSeries._rangeValues[rangeIndex + 1]);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
if (visibleRangeValues.length > 0) {
|
|
840
|
+
expandYWith.push(...visibleRangeValues);
|
|
841
|
+
}
|
|
803
842
|
}
|
|
804
843
|
}
|
|
805
844
|
|