@swimlane/ngx-charts
Version:
Declarative Charting Framework for Angular
71 lines • 8.41 kB
JavaScript
import { ScaleType } from './types/scale-type.enum';
/**
* Based on the data, return an array with unique values.
*
* @export
* @returns array
*/
export function getUniqueXDomainValues(results) {
const valueSet = new Set();
for (const result of results) {
for (const d of result.series) {
valueSet.add(d.name);
}
}
return Array.from(valueSet);
}
/**
* Get the scaleType of enumerable of values.
* @returns 'time', 'linear' or 'ordinal'
*/
export function getScaleType(values, checkDateType = true) {
if (checkDateType) {
const allDates = values.every(value => value instanceof Date);
if (allDates) {
return ScaleType.Time;
}
}
const allNumbers = values.every(value => typeof value === 'number');
if (allNumbers) {
return ScaleType.Linear;
}
return ScaleType.Ordinal;
}
export function getXDomainArray(values, xScaleMin, xScaleMax) {
const scaleType = getScaleType(values);
let xSet = [];
let domain = [];
if (scaleType === ScaleType.Linear) {
values = values.map(v => Number(v));
}
let min;
let max;
if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {
const mappedValues = values.map(v => Number(v));
min = xScaleMin ? xScaleMin : Math.min(...mappedValues);
max = xScaleMax ? xScaleMax : Math.max(...mappedValues);
}
if (scaleType === ScaleType.Time) {
domain = [new Date(min), new Date(max)];
xSet = [...values].sort((a, b) => {
const aDate = a.getTime();
const bDate = b.getTime();
if (aDate > bDate)
return 1;
if (bDate > aDate)
return -1;
return 0;
});
}
else if (scaleType === ScaleType.Linear) {
domain = [min, max];
// Use compare function to sort numbers numerically
xSet = [...values].sort((a, b) => a - b);
}
else {
domain = values;
xSet = values;
}
return { domain, xSet, scaleType };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N3aW1sYW5lL25neC1jaGFydHMvc3JjL2xpYi9jb21tb24vZG9tYWluLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBYztJQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1FBQzVCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUM3QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QjtLQUNGO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWEsRUFBRSxnQkFBeUIsSUFBSTtJQUN2RSxJQUFJLGFBQWEsRUFBRTtRQUNqQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO0tBQ0Y7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDcEUsSUFBSSxVQUFVLEVBQUU7UUFDZCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUM7S0FDekI7SUFFRCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQXFDLEVBQ3JDLFNBQWtCLEVBQ2xCLFNBQWtCO0lBRWxCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxJQUFJLElBQUksR0FBMkIsRUFBRSxDQUFDO0lBQ3RDLElBQUksTUFBTSxHQUEyQixFQUFFLENBQUM7SUFFeEMsSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTtRQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTtRQUNsRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDeEQsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7S0FDekQ7SUFFRCxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1FBQ2hDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLEtBQUssR0FBRyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLElBQUksS0FBSyxHQUFHLEtBQUs7Z0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0tBQ0o7U0FBTSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFO1FBQ3pDLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQixtREFBbUQ7UUFDbkQsSUFBSSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDMUQ7U0FBTTtRQUNMLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsSUFBSSxHQUFHLE1BQU0sQ0FBQztLQUNmO0lBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjYWxlVHlwZSB9IGZyb20gJy4vdHlwZXMvc2NhbGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IFN0cmluZ09yTnVtYmVyT3JEYXRlIH0gZnJvbSAnLi4vbW9kZWxzL2NoYXJ0LWRhdGEubW9kZWwnO1xuLyoqXG4gKiBCYXNlZCBvbiB0aGUgZGF0YSwgcmV0dXJuIGFuIGFycmF5IHdpdGggdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcmV0dXJucyBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcXVlWERvbWFpblZhbHVlcyhyZXN1bHRzOiBhbnlbXSk6IGFueVtdIHtcbiAgY29uc3QgdmFsdWVTZXQgPSBuZXcgU2V0KCk7XG4gIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICBmb3IgKGNvbnN0IGQgb2YgcmVzdWx0LnNlcmllcykge1xuICAgICAgdmFsdWVTZXQuYWRkKGQubmFtZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKHZhbHVlU2V0KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNjYWxlVHlwZSBvZiBlbnVtZXJhYmxlIG9mIHZhbHVlcy5cbiAqIEByZXR1cm5zICAndGltZScsICdsaW5lYXInIG9yICdvcmRpbmFsJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVUeXBlKHZhbHVlczogYW55W10sIGNoZWNrRGF0ZVR5cGU6IGJvb2xlYW4gPSB0cnVlKTogU2NhbGVUeXBlIHtcbiAgaWYgKGNoZWNrRGF0ZVR5cGUpIHtcbiAgICBjb25zdCBhbGxEYXRlcyA9IHZhbHVlcy5ldmVyeSh2YWx1ZSA9PiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpO1xuICAgIGlmIChhbGxEYXRlcykge1xuICAgICAgcmV0dXJuIFNjYWxlVHlwZS5UaW1lO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFsbE51bWJlcnMgPSB2YWx1ZXMuZXZlcnkodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyk7XG4gIGlmIChhbGxOdW1iZXJzKSB7XG4gICAgcmV0dXJuIFNjYWxlVHlwZS5MaW5lYXI7XG4gIH1cblxuICByZXR1cm4gU2NhbGVUeXBlLk9yZGluYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRYRG9tYWluQXJyYXkoXG4gIHZhbHVlczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZT4sXG4gIHhTY2FsZU1pbj86IG51bWJlcixcbiAgeFNjYWxlTWF4PzogbnVtYmVyXG4pOiB7IGRvbWFpbjogYW55W107IHhTZXQ6IGFueVtdOyBzY2FsZVR5cGU6IHN0cmluZyB9IHtcbiAgY29uc3Qgc2NhbGVUeXBlID0gZ2V0U2NhbGVUeXBlKHZhbHVlcyk7XG4gIGxldCB4U2V0OiBTdHJpbmdPck51bWJlck9yRGF0ZVtdID0gW107XG4gIGxldCBkb21haW46IFN0cmluZ09yTnVtYmVyT3JEYXRlW10gPSBbXTtcblxuICBpZiAoc2NhbGVUeXBlID09PSBTY2FsZVR5cGUuTGluZWFyKSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLm1hcCh2ID0+IE51bWJlcih2KSk7XG4gIH1cblxuICBsZXQgbWluOiBudW1iZXI7XG4gIGxldCBtYXg6IG51bWJlcjtcbiAgaWYgKHNjYWxlVHlwZSA9PT0gU2NhbGVUeXBlLlRpbWUgfHwgc2NhbGVUeXBlID09PSBTY2FsZVR5cGUuTGluZWFyKSB7XG4gICAgY29uc3QgbWFwcGVkVmFsdWVzID0gdmFsdWVzLm1hcCh2ID0+IE51bWJlcih2KSk7XG4gICAgbWluID0geFNjYWxlTWluID8geFNjYWxlTWluIDogTWF0aC5taW4oLi4ubWFwcGVkVmFsdWVzKTtcbiAgICBtYXggPSB4U2NhbGVNYXggPyB4U2NhbGVNYXggOiBNYXRoLm1heCguLi5tYXBwZWRWYWx1ZXMpO1xuICB9XG5cbiAgaWYgKHNjYWxlVHlwZSA9PT0gU2NhbGVUeXBlLlRpbWUpIHtcbiAgICBkb21haW4gPSBbbmV3IERhdGUobWluKSwgbmV3IERhdGUobWF4KV07XG4gICAgeFNldCA9IFsuLi52YWx1ZXNdLnNvcnQoKGE6IERhdGUsIGI6IERhdGUpID0+IHtcbiAgICAgIGNvbnN0IGFEYXRlID0gYS5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBiRGF0ZSA9IGIuZ2V0VGltZSgpO1xuICAgICAgaWYgKGFEYXRlID4gYkRhdGUpIHJldHVybiAxO1xuICAgICAgaWYgKGJEYXRlID4gYURhdGUpIHJldHVybiAtMTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHNjYWxlVHlwZSA9PT0gU2NhbGVUeXBlLkxpbmVhcikge1xuICAgIGRvbWFpbiA9IFttaW4sIG1heF07XG4gICAgLy8gVXNlIGNvbXBhcmUgZnVuY3Rpb24gdG8gc29ydCBudW1iZXJzIG51bWVyaWNhbGx5XG4gICAgeFNldCA9IFsuLi52YWx1ZXNdLnNvcnQoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhIC0gYik7XG4gIH0gZWxzZSB7XG4gICAgZG9tYWluID0gdmFsdWVzO1xuICAgIHhTZXQgPSB2YWx1ZXM7XG4gIH1cblxuICByZXR1cm4geyBkb21haW4sIHhTZXQsIHNjYWxlVHlwZSB9O1xufVxuIl19