Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 2x 2x 2x | import type {VariableFilterParsed} from '../types'
import type {DataViewParsed} from './dataview'
import {patterns} from './patterns'
type TimeFuns = {
number: Function
first: Function
selected: Function
last: Function
}
const time_funs = {
number: function (this: number, v: VariableFilterParsed) {
return this - v.range[0]
},
first: function (v: VariableFilterParsed) {
return 0
},
selected: function (v: VariableFilterParsed, p: DataViewParsed) {
return p.time_agg - v.range[0]
},
last: function (v: VariableFilterParsed) {
return v.range[1] - v.range[0]
},
}
export function component_fun(times: number[], c: string | number): Function {
Iif ('string' === typeof c && patterns.number.test(c)) {
c = times.indexOf(+c)
Iif (-1 === c)
return function () {
return NaN
}
}
return 'number' === typeof c
? time_funs.number.bind(c)
: c in time_funs
? time_funs[c as keyof TimeFuns]
: function () {
return NaN
}
}
|