|
- import { fillArray } from '../utils/helpers';
- import { AXIS_CHART_DEFAULT_TYPE, AXIS_CHART_MIXED_TYPE, AXIS_DATASET_CHART_TYPES, DEFAULT_CHAR_WIDTH } from '../utils/constants';
-
- export function dataPrep(data, type) {
- data.labels = data.labels || [];
-
- let datasetLength = data.labels.length;
-
- // Datasets
- let datasets = data.datasets;
- let zeroArray = new Array(datasetLength).fill(0);
- if(!datasets) {
- // default
- datasets = [{
- values: zeroArray
- }];
- }
-
- let overridingType;
- if(AXIS_DATASET_CHART_TYPES.includes(type)) {
- overridingType = type;
- };
-
- 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);
- } else {
- vals = fillArray(vals, datasetLength - vals.length, 0);
- }
- }
-
- // Set labels
-
- // Set type
- if(overridingType) {
- d.chartType = overridingType;
- } else if(!d.chartType) {
- d.chartType = AXIS_CHART_DEFAULT_TYPE;
- }
- });
-
- // 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];
- }
- });
- }
-
- return data;
- }
-
- export function zeroDataPrep(realData) {
- 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
- };
- }),
- };
-
- if(realData.yMarkers) {
- zeroData.yMarkers = [
- {
- value: 0,
- label: ''
- }
- ];
- }
-
- if(realData.yRegions) {
- zeroData.yRegions = [
- {
- start: 0,
- end: 0,
- label: ''
- }
- ];
- }
-
- return zeroData;
- }
-
- export function getShortenedLabels(chartWidth, labels=[], isSeries=true) {
- let allowedSpace = chartWidth / labels.length;
- if(allowedSpace <= 0) allowedSpace = 1;
- let allowedLetters = allowedSpace / DEFAULT_CHAR_WIDTH;
-
- 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 {
- let multiple = Math.ceil(label.length/allowedLetters);
- if(i % multiple !== 0) {
- label = "";
- }
- }
- }
- return label;
- });
-
- return calcLabels;
- }
|