feat: pr 366 initial merge
This commit is contained in:
parent
0781eb015d
commit
ae2ae01ed7
File diff suppressed because it is too large
Load Diff
@ -1,137 +1,140 @@
|
||||
import { fillArray } from "../utils/helpers";
|
||||
import {
|
||||
DEFAULT_AXIS_CHART_TYPE,
|
||||
AXIS_DATASET_CHART_TYPES,
|
||||
DEFAULT_CHAR_WIDTH,
|
||||
SERIES_LABEL_SPACE_RATIO,
|
||||
DEFAULT_AXIS_CHART_TYPE,
|
||||
AXIS_DATASET_CHART_TYPES,
|
||||
DEFAULT_CHAR_WIDTH,
|
||||
SERIES_LABEL_SPACE_RATIO,
|
||||
} from "../utils/constants";
|
||||
|
||||
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
|
||||
let datasets = data.datasets;
|
||||
let zeroArray = new Array(datasetLength).fill(0);
|
||||
if (!datasets) {
|
||||
// default
|
||||
datasets = [
|
||||
{
|
||||
values: zeroArray,
|
||||
},
|
||||
];
|
||||
}
|
||||
// Datasets
|
||||
let datasets = data.datasets;
|
||||
let zeroArray = new Array(datasetLength).fill(0);
|
||||
if (!datasets) {
|
||||
// default
|
||||
datasets = [
|
||||
{
|
||||
values: zeroArray,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
datasets.map((d) => {
|
||||
// Set values
|
||||
if (!d.values) {
|
||||
d.values = zeroArray;
|
||||
} else {
|
||||
// Check for non values
|
||||
let vals = d.values;
|
||||
vals = vals.map((val) => (!isNaN(val) ? val : 0));
|
||||
datasets.map((d) => {
|
||||
// Set values
|
||||
if (!d.values) {
|
||||
d.values = zeroArray;
|
||||
} else {
|
||||
// Check for non values
|
||||
let vals = d.values;
|
||||
vals = vals.map((val) => (!isNaN(val) ? val : 0));
|
||||
|
||||
// Trim or extend
|
||||
if (vals.length > datasetLength) {
|
||||
vals = vals.slice(0, datasetLength);
|
||||
} if (config) {
|
||||
vals = fillArray(vals, datasetLength - vals.length, null);
|
||||
} else {
|
||||
vals = fillArray(vals, datasetLength - vals.length, 0);
|
||||
}
|
||||
d.values = vals;
|
||||
}
|
||||
// Trim or extend
|
||||
if (vals.length > datasetLength) {
|
||||
vals = vals.slice(0, datasetLength);
|
||||
}
|
||||
if (config) {
|
||||
vals = fillArray(vals, datasetLength - vals.length, null);
|
||||
} else {
|
||||
vals = fillArray(vals, datasetLength - vals.length, 0);
|
||||
}
|
||||
d.values = vals;
|
||||
}
|
||||
|
||||
// Set type
|
||||
if (!d.chartType) {
|
||||
if (!AXIS_DATASET_CHART_TYPES.includes(type))
|
||||
type = DEFAULT_AXIS_CHART_TYPE;
|
||||
d.chartType = type;
|
||||
}
|
||||
});
|
||||
// Set type
|
||||
if (!d.chartType) {
|
||||
if (!AXIS_DATASET_CHART_TYPES.includes(type))
|
||||
type = DEFAULT_AXIS_CHART_TYPE;
|
||||
d.chartType = type;
|
||||
}
|
||||
});
|
||||
|
||||
// Markers
|
||||
// Markers
|
||||
|
||||
// Regions
|
||||
// data.yRegions = data.yRegions || [];
|
||||
if (data.yRegions) {
|
||||
data.yRegions.map((d) => {
|
||||
if (d.end < d.start) {
|
||||
[d.start, d.end] = [d.end, d.start];
|
||||
}
|
||||
});
|
||||
}
|
||||
// Regions
|
||||
// data.yRegions = data.yRegions || [];
|
||||
if (data.yRegions) {
|
||||
data.yRegions.map((d) => {
|
||||
if (d.end < d.start) {
|
||||
[d.start, d.end] = [d.end, d.start];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return data;
|
||||
return data;
|
||||
}
|
||||
|
||||
export function zeroDataPrep(realData) {
|
||||
let datasetLength = realData.labels.length;
|
||||
let zeroArray = new Array(datasetLength).fill(0);
|
||||
let datasetLength = realData.labels.length;
|
||||
let zeroArray = new Array(datasetLength).fill(0);
|
||||
|
||||
let zeroData = {
|
||||
labels: realData.labels.slice(0, -1),
|
||||
datasets: realData.datasets.map((d) => {
|
||||
return {
|
||||
name: "",
|
||||
values: zeroArray.slice(0, -1),
|
||||
chartType: d.chartType,
|
||||
};
|
||||
}),
|
||||
};
|
||||
let zeroData = {
|
||||
labels: realData.labels.slice(0, -1),
|
||||
datasets: realData.datasets.map((d) => {
|
||||
const { axisID } = d;
|
||||
return {
|
||||
axisID,
|
||||
name: "",
|
||||
values: zeroArray.slice(0, -1),
|
||||
chartType: d.chartType,
|
||||
};
|
||||
}),
|
||||
};
|
||||
|
||||
if (realData.yMarkers) {
|
||||
zeroData.yMarkers = [
|
||||
{
|
||||
value: 0,
|
||||
label: "",
|
||||
},
|
||||
];
|
||||
}
|
||||
if (realData.yMarkers) {
|
||||
zeroData.yMarkers = [
|
||||
{
|
||||
value: 0,
|
||||
label: "",
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
if (realData.yRegions) {
|
||||
zeroData.yRegions = [
|
||||
{
|
||||
start: 0,
|
||||
end: 0,
|
||||
label: "",
|
||||
},
|
||||
];
|
||||
}
|
||||
if (realData.yRegions) {
|
||||
zeroData.yRegions = [
|
||||
{
|
||||
start: 0,
|
||||
end: 0,
|
||||
label: "",
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
return zeroData;
|
||||
return zeroData;
|
||||
}
|
||||
|
||||
export function getShortenedLabels(chartWidth, labels = [], isSeries = true) {
|
||||
let allowedSpace = (chartWidth / labels.length) * SERIES_LABEL_SPACE_RATIO;
|
||||
if (allowedSpace <= 0) allowedSpace = 1;
|
||||
let allowedLetters = allowedSpace / DEFAULT_CHAR_WIDTH;
|
||||
let allowedSpace = (chartWidth / labels.length) * SERIES_LABEL_SPACE_RATIO;
|
||||
if (allowedSpace <= 0) allowedSpace = 1;
|
||||
let allowedLetters = allowedSpace / DEFAULT_CHAR_WIDTH;
|
||||
|
||||
let seriesMultiple;
|
||||
if (isSeries) {
|
||||
// Find the maximum label length for spacing calculations
|
||||
let maxLabelLength = Math.max(...labels.map((label) => label.length));
|
||||
seriesMultiple = Math.ceil(maxLabelLength / allowedLetters);
|
||||
}
|
||||
let seriesMultiple;
|
||||
if (isSeries) {
|
||||
// Find the maximum label length for spacing calculations
|
||||
let maxLabelLength = Math.max(...labels.map((label) => label.length));
|
||||
seriesMultiple = Math.ceil(maxLabelLength / allowedLetters);
|
||||
}
|
||||
|
||||
let calcLabels = labels.map((label, i) => {
|
||||
label += "";
|
||||
if (label.length > allowedLetters) {
|
||||
if (!isSeries) {
|
||||
if (allowedLetters - 3 > 0) {
|
||||
label = label.slice(0, allowedLetters - 3) + " ...";
|
||||
} else {
|
||||
label = label.slice(0, allowedLetters) + "..";
|
||||
}
|
||||
} else {
|
||||
if (i % seriesMultiple !== 0 && i !== labels.length - 1) {
|
||||
label = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
return label;
|
||||
});
|
||||
let calcLabels = labels.map((label, i) => {
|
||||
label += "";
|
||||
if (label.length > allowedLetters) {
|
||||
if (!isSeries) {
|
||||
if (allowedLetters - 3 > 0) {
|
||||
label = label.slice(0, allowedLetters - 3) + " ...";
|
||||
} else {
|
||||
label = label.slice(0, allowedLetters) + "..";
|
||||
}
|
||||
} else {
|
||||
if (i % seriesMultiple !== 0 && i !== labels.length - 1) {
|
||||
label = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
return label;
|
||||
});
|
||||
|
||||
return calcLabels;
|
||||
return calcLabels;
|
||||
}
|
||||
|
||||
1382
src/js/utils/draw.js
1382
src/js/utils/draw.js
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user