Skip to content

Commit bd80e5f

Browse files
committed
makes {value, scale} channel specification work with the interval transform
closes #1329
1 parent e22c41e commit bd80e5f

File tree

4 files changed

+1129
-17
lines changed

4 files changed

+1129
-17
lines changed

src/transforms/interval.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function maybeIntervalValue(value, {interval}) {
1212

1313
function maybeIntervalK(k, maybeInsetK, options, trivial) {
1414
const {[k]: v, [`${k}1`]: v1, [`${k}2`]: v2} = options;
15-
const {value, interval} = maybeIntervalValue(v, options);
15+
const {value, interval, scale} = maybeIntervalValue(v, options);
1616
if (value == null || (interval == null && !trivial)) return options;
1717
const label = labelof(v);
1818
if (interval == null) {
@@ -33,31 +33,37 @@ function maybeIntervalK(k, maybeInsetK, options, trivial) {
3333
return maybeInsetK({
3434
...options,
3535
[k]: undefined,
36-
[`${k}1`]: v1 === undefined ? {transform, label} : v1,
37-
[`${k}2`]: v2 === undefined ? {transform: (data) => transform(data).map((v) => interval.offset(v)), label} : v2
36+
[`${k}1`]: v1 === undefined ? {value: {transform, label}, scale} : v1,
37+
[`${k}2`]:
38+
v2 === undefined
39+
? {value: {transform: (data) => transform(data).map((v) => interval.offset(v)), label}, scale}
40+
: v2
3841
});
3942
}
4043

4144
function maybeIntervalMidK(k, maybeInsetK, options) {
4245
const {[k]: v} = options;
43-
const {value, interval} = maybeIntervalValue(v, options);
46+
const {value, interval, scale} = maybeIntervalValue(v, options);
4447
if (value == null || interval == null) return options;
4548
return maybeInsetK({
4649
...options,
4750
[k]: {
48-
label: labelof(v),
49-
transform: (data) => {
50-
const V1 = map(valueof(data, value), (v) => interval.floor(v));
51-
const V2 = V1.map((v) => interval.offset(v));
52-
return V1.map(
53-
isTemporal(V1)
54-
? (v1, v2) =>
55-
v1 == null || isNaN((v1 = +v1)) || ((v2 = V2[v2]), v2 == null) || isNaN((v2 = +v2))
56-
? undefined
57-
: new Date((v1 + v2) / 2)
58-
: (v1, v2) => (v1 == null || ((v2 = V2[v2]), v2 == null) ? NaN : (+v1 + +v2) / 2)
59-
);
60-
}
51+
value: {
52+
label: labelof(v),
53+
transform: (data) => {
54+
const V1 = map(valueof(data, value), (v) => interval.floor(v));
55+
const V2 = V1.map((v) => interval.offset(v));
56+
return V1.map(
57+
isTemporal(V1)
58+
? (v1, v2) =>
59+
v1 == null || isNaN((v1 = +v1)) || ((v2 = V2[v2]), v2 == null) || isNaN((v2 = +v2))
60+
? undefined
61+
: new Date((v1 + v2) / 2)
62+
: (v1, v2) => (v1 == null || ((v2 = V2[v2]), v2 == null) ? NaN : (+v1 + +v2) / 2)
63+
);
64+
}
65+
},
66+
scale
6167
}
6268
});
6369
}

0 commit comments

Comments
 (0)