UNPKG

@nteract/data-explorer

Version:
57 lines (56 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getUniqueValues = exports.sortByOrdinalRange = void 0; function stringOrFnAccessor(datapoint, accessor) { return typeof accessor === "function" ? accessor(datapoint) : datapoint[accessor]; } exports.sortByOrdinalRange = (oAccessor, rAccessor, secondarySort, data) => { const subsortData = {}; let subsortArrays = []; data.forEach((datapoint) => { const ordinalValue = stringOrFnAccessor(datapoint, oAccessor); if (!subsortData[ordinalValue]) { subsortData[ordinalValue] = { array: [], value: 0, label: ordinalValue }; subsortArrays.push(subsortData[ordinalValue]); } subsortData[ordinalValue].array.push(datapoint); subsortData[ordinalValue].value += stringOrFnAccessor(datapoint, rAccessor); }); subsortArrays = subsortArrays.sort((ordinalAData, ordinalBData) => { if (ordinalBData.value === ordinalAData.value) { if (ordinalAData.label < ordinalBData.label) { return -1; } if (ordinalAData.label > ordinalBData.label) { return 1; } return 1; } return ordinalBData.value - ordinalAData.value; }); if (secondarySort !== "none") { subsortArrays.forEach((ordinalData) => { ordinalData.array = ordinalData.array.sort((ordinalAData, ordinalBData) => stringOrFnAccessor(ordinalBData, secondarySort) - stringOrFnAccessor(ordinalAData, secondarySort)); }); } return subsortArrays.reduce((combinedArray, ordinalData) => [ ...combinedArray, ...ordinalData.array, ], []); }; /* Returns uniques values in a column as strings Safely stringifies different data types, including null/undefined. */ exports.getUniqueValues = (points, accessor) => { return [ ...new Set(points.map((d) => { const value = d[accessor]; // Don't call stringify on a string, as it will add "quote" marks around your value. return typeof value === "string" ? value : JSON.stringify(value); })), ]; };