feat: pr 366 initial merge

This commit is contained in:
Arjun Choudhary 2022-12-19 11:34:00 +05:30
parent 0781eb015d
commit ae2ae01ed7
3 changed files with 1384 additions and 1218 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,137 +1,140 @@
import { fillArray } from "../utils/helpers"; import { fillArray } from "../utils/helpers";
import { import {
DEFAULT_AXIS_CHART_TYPE, DEFAULT_AXIS_CHART_TYPE,
AXIS_DATASET_CHART_TYPES, AXIS_DATASET_CHART_TYPES,
DEFAULT_CHAR_WIDTH, DEFAULT_CHAR_WIDTH,
SERIES_LABEL_SPACE_RATIO, SERIES_LABEL_SPACE_RATIO,
} from "../utils/constants"; } from "../utils/constants";
export function dataPrep(data, type, config) { export function dataPrep(data, type, config) {
data.labels = data.labels || []; data.labels = data.labels || [];
let datasetLength = data.labels.length; let datasetLength = data.labels.length;
// Datasets // Datasets
let datasets = data.datasets; let datasets = data.datasets;
let zeroArray = new Array(datasetLength).fill(0); let zeroArray = new Array(datasetLength).fill(0);
if (!datasets) { if (!datasets) {
// default // default
datasets = [ datasets = [
{ {
values: zeroArray, values: zeroArray,
}, },
]; ];
} }
datasets.map((d) => { datasets.map((d) => {
// Set values // Set values
if (!d.values) { if (!d.values) {
d.values = zeroArray; d.values = zeroArray;
} else { } else {
// Check for non values // Check for non values
let vals = d.values; let vals = d.values;
vals = vals.map((val) => (!isNaN(val) ? val : 0)); vals = vals.map((val) => (!isNaN(val) ? val : 0));
// Trim or extend // Trim or extend
if (vals.length > datasetLength) { if (vals.length > datasetLength) {
vals = vals.slice(0, datasetLength); vals = vals.slice(0, datasetLength);
} if (config) { }
vals = fillArray(vals, datasetLength - vals.length, null); if (config) {
} else { vals = fillArray(vals, datasetLength - vals.length, null);
vals = fillArray(vals, datasetLength - vals.length, 0); } else {
} vals = fillArray(vals, datasetLength - vals.length, 0);
d.values = vals; }
} d.values = vals;
}
// Set type // Set type
if (!d.chartType) { if (!d.chartType) {
if (!AXIS_DATASET_CHART_TYPES.includes(type)) if (!AXIS_DATASET_CHART_TYPES.includes(type))
type = DEFAULT_AXIS_CHART_TYPE; type = DEFAULT_AXIS_CHART_TYPE;
d.chartType = type; d.chartType = type;
} }
}); });
// Markers // Markers
// Regions // Regions
// data.yRegions = data.yRegions || []; // data.yRegions = data.yRegions || [];
if (data.yRegions) { if (data.yRegions) {
data.yRegions.map((d) => { data.yRegions.map((d) => {
if (d.end < d.start) { if (d.end < d.start) {
[d.start, d.end] = [d.end, d.start]; [d.start, d.end] = [d.end, d.start];
} }
}); });
} }
return data; return data;
} }
export function zeroDataPrep(realData) { export function zeroDataPrep(realData) {
let datasetLength = realData.labels.length; let datasetLength = realData.labels.length;
let zeroArray = new Array(datasetLength).fill(0); let zeroArray = new Array(datasetLength).fill(0);
let zeroData = { let zeroData = {
labels: realData.labels.slice(0, -1), labels: realData.labels.slice(0, -1),
datasets: realData.datasets.map((d) => { datasets: realData.datasets.map((d) => {
return { const { axisID } = d;
name: "", return {
values: zeroArray.slice(0, -1), axisID,
chartType: d.chartType, name: "",
}; values: zeroArray.slice(0, -1),
}), chartType: d.chartType,
}; };
}),
};
if (realData.yMarkers) { if (realData.yMarkers) {
zeroData.yMarkers = [ zeroData.yMarkers = [
{ {
value: 0, value: 0,
label: "", label: "",
}, },
]; ];
} }
if (realData.yRegions) { if (realData.yRegions) {
zeroData.yRegions = [ zeroData.yRegions = [
{ {
start: 0, start: 0,
end: 0, end: 0,
label: "", label: "",
}, },
]; ];
} }
return zeroData; return zeroData;
} }
export function getShortenedLabels(chartWidth, labels = [], isSeries = true) { export function getShortenedLabels(chartWidth, labels = [], isSeries = true) {
let allowedSpace = (chartWidth / labels.length) * SERIES_LABEL_SPACE_RATIO; let allowedSpace = (chartWidth / labels.length) * SERIES_LABEL_SPACE_RATIO;
if (allowedSpace <= 0) allowedSpace = 1; if (allowedSpace <= 0) allowedSpace = 1;
let allowedLetters = allowedSpace / DEFAULT_CHAR_WIDTH; let allowedLetters = allowedSpace / DEFAULT_CHAR_WIDTH;
let seriesMultiple; let seriesMultiple;
if (isSeries) { if (isSeries) {
// Find the maximum label length for spacing calculations // Find the maximum label length for spacing calculations
let maxLabelLength = Math.max(...labels.map((label) => label.length)); let maxLabelLength = Math.max(...labels.map((label) => label.length));
seriesMultiple = Math.ceil(maxLabelLength / allowedLetters); seriesMultiple = Math.ceil(maxLabelLength / allowedLetters);
} }
let calcLabels = labels.map((label, i) => { let calcLabels = labels.map((label, i) => {
label += ""; label += "";
if (label.length > allowedLetters) { if (label.length > allowedLetters) {
if (!isSeries) { if (!isSeries) {
if (allowedLetters - 3 > 0) { if (allowedLetters - 3 > 0) {
label = label.slice(0, allowedLetters - 3) + " ..."; label = label.slice(0, allowedLetters - 3) + " ...";
} else { } else {
label = label.slice(0, allowedLetters) + ".."; label = label.slice(0, allowedLetters) + "..";
} }
} else { } else {
if (i % seriesMultiple !== 0 && i !== labels.length - 1) { if (i % seriesMultiple !== 0 && i !== labels.length - 1) {
label = ""; label = "";
} }
} }
} }
return label; return label;
}); });
return calcLabels; return calcLabels;
} }

File diff suppressed because it is too large Load Diff