@streetscape.gl/monochrome
Version:
A toolkit of React components for streetscape.gl
42 lines (39 loc) • 1.37 kB
JavaScript
export function formatTimeCode(value) {
let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '{hh}:{mm}:{ss}.{SSS}';
const formatters = {
h: (format.match(/\{(h+)\}/) || [])[1],
m: (format.match(/\{(m+)\}/) || [])[1],
s: (format.match(/\{(s+)\}/) || [])[1],
S: (format.match(/\{(S+)\}/) || [])[1]
};
const parts = {
h: x => Math.floor(x / 3600),
m: x => Math.floor(x / 60) % 60,
s: x => Math.floor(x % 60),
S: (x, len) => Math.floor(x % 1 * Math.pow(10, len))
};
let result = format;
for (const key in parts) {
const f = formatters[key] || '';
if (f) {
const digits = f.length;
result = result.replace("{".concat(f, "}"), String(parts[key](value, digits)).padStart(digits, '0'));
}
}
return result;
}
export function getTimelineTicks(scale) {
let spacing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
let format = arguments.length > 2 ? arguments[2] : undefined;
const range = scale.range();
const domain = scale.domain();
const ticksCount = Math.floor((range[1] - range[0]) / spacing) + 1;
scale.domain([0, domain[1] - domain[0]]);
const ticks = scale.ticks(ticksCount);
scale.domain(domain);
return ticks.map(t => ({
x: scale(t + domain[0]),
label: format(t + domain[0])
}));
}
//# sourceMappingURL=utils.js.map