UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 5.06 kB
import{isNumber}from'./typeUtils';import{numberComparator,stringComparator}from'./comparators';import sort from'./sort';import{getConfig}from'../globalConfig';import TimeConverter from'../../../fc-utils/src/time-converter';import Set from'core-js/fn/set';function columnIndexOf(a,b){if(!b||!a)return null;for(let c=0;c<b.length;c++)if(b[c]&&b[c].hasOwnProperty('name')&&b[c].name===a)return c;return-1}function columnMinValue(a,b,c){let d,e;if(d=columnIndexOf(a,c),null===d||-1===d)return null;if(b&&0<b.length){let a;e=Number.POSITIVE_INFINITY;for(let f=0;f<b.length;f++)a='interval'===c[d].type?b[f][d]?b[f][d].start:null:b[f][d],isNumber(a)&&a<e&&(e=a)}return e}function columnMaxValue(a,b,c){let d,e;if(d=columnIndexOf(a,c),null===d||-1===d)return null;if(b&&0<b.length){let a;e=Number.NEGATIVE_INFINITY;for(let f=0;f<b.length;f++)a='interval'===c[d].type?b[f][d]?b[f][d].end:null:b[f][d],isNumber(a)&&a>e&&(e=a)}return e}function columnMinDiff(a,b,c,d){var e=Number.POSITIVE_INFINITY;let f,g,h=b,i=b.length;if(f=columnIndexOf(a,c),null===f||-1===f)return null;if(c[f]&&0>['date','number'].indexOf(c[f].type))throw new Error('Operation valid only on date or number columns');if(d&&a===d||(h=b.slice(0),h.sort((c,a)=>numberComparator(c[f],a[f]))),h&&0<i){let c,d,a;g=e;for(let b=0;b<h.length-1&&(d=h[b][f],a=h[b+1][f],!!(isNumber(a)&&isNumber(d)))&&(c=a-d,g=isNumber(c)&&0<=c&&c<g?c:g,0!==g);b++);}return g===e?null:g}function columnExtents(a,b,c){let d,e=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,g=columnIndexOf(a,c);if(null===g||-1===g)return null;if(b&&0<b.length)for(let a=0;a<b.length;a++)d='interval'===c[g].type?b[a][g]?b[a][g].start:null:b[a][g],isNumber(d)&&d<e&&(e=d),d='interval'===c[g].type?b[a][g]?b[a][g].end:null:b[a][g],isNumber(d)&&d>f&&(f=d);return{min:e,max:f}}function columnUnique(a,b,c){let d,e=columnIndexOf(a,c),f=[];if(null===e||-1===e)return[];for(let d=0;d<b.length;d++)f.push(b[d][e]);return b&&0<b.length?(d=Array.from(new Set(f)),1===d.length&&'undefined'==typeof d[0]?[]:d):[]}function addColumnsSchema(a,b){var c=b.length,d=a.slice(0);for(let e,f=0;f<c;f++){e=d.length,b[f].originalName=b[f].name;for(let a=0;a<e;a++)b[f].name===d[a].name&&(b[f].i=b[f].i&&++b[f].i||1,b[f].name=b[f].originalName+' '+b[f].i),b[f].type&&-1!==['string','number','date'].indexOf(b[f].type)||(b[f].type='string');delete b[f].originalName,delete b[f].i,d.push({name:b[f].name,type:b[f].type||'string'}),b[f].calcFn&&(d[d.length-1].calcFn=b[f].calcFn),b[f].format&&(d[d.length-1].format=b[f].format),b[f].enableUTC&&(d[d.length-1].enableUTC=b[f].enableUTC),b[f].columnIndex=d.length-1}return{schema:d,calcColumns:b}}function addColumnsData(a,b,c){var d,e=a.length,f=c.length,g=b.length,h={},k=buildDateColumnsFormatter(c);for(let d=0;d<g;d++)h[b[d].name]=d;for(let g=0;g<e;g++)for(let b=0;b<f;b++)c[b].calcFn&&(d=c[b].calcFn(a[g],h,g),d=_parseCell(c[b],d,k),a[g][c[b].columnIndex]=d);return a}function _parseCell(a,b,c){return void 0!==c[a.name]&&b?c[a.name]?+c[a.name].parse(b):+new Date(b):'number'===a.type?isNumber(b)?b:b?parseFloat(b):null:b}function parseAndIndexData(a,b,c){let d=buildDateColumnsFormatter(b),e=parseData(a,b,d);return indexData(e,b,c,d),e}function buildDateColumnsFormatter(a){let b={};for(let c=0;c<a.length;c++){if(!a[c].name)throw new Error('Input schema is not in a correct format - each column must have a name');a[c].type&&'date'===a[c].type&&(b[a[c].name]=a[c].format?(a[c].enableUTC===void 0?getConfig('enableUTC'):a[c].enableUTC)?TimeConverter.utcParser(a[c].format):TimeConverter.parser(a[c].format):null)}return b}function parseData(a,b,c){let d=[];if(0<a.length){let e,f=c;f||(f=buildDateColumnsFormatter(b));try{let c,g,h,i=b.length;for(let j=0;j<a.length;j++){if(c=[],g=a[j],g.constructor===Array)for(h=Math.min(i,g.length),e=0;e<h;e++)c[e]=_parseCell(b[e],g[e],f);else if('object'==typeof g)for(e=0;e<i;e++)g[b[e].name]&&(c[e]=_parseCell(b[e],g[b[e].name],f));else continue;d.push(c)}}catch(a){throw new Error('Error while parsing the data - '+a)}}return d}function indexData(a,b,c,d){if(c.enableIndex){let e,f,g;if(!c.indexBy){g=d,g||(g=buildDateColumnsFormatter(b));let a=Object.keys(g);if(0<a.length)c.indexBy=a[0];else{for(e=0;e<b.length;e++)if(b[e].type&&'number'===b[e].type){c.indexBy=b[e].name;break}e===b.length&&(c.indexBy=b[0].name)}}for(e=0;e<b.length&&!(b[e]&&b[e].name===c.indexBy);e++);if(e===b.length)throw new Error('Index column is not found in schema');switch(b[e].type){case'number':case'date':f=numberComparator;break;default:f=stringComparator;}sort(a,(c,a)=>f(c[e],a[e]))}}function createTableID(a){let b=a.length,c=b+1;for(;a.includes('table-'+c);)c++;return'table-'+c}function isUTCEnabled(a,b){let c;return c=columnIndexOf(a,b),null===c||-1===c||'date'!==b[c].type&&'interval'!==b[c].type?null:void 0===b[c].enableUTC?getConfig('enableUTC'):b[c].enableUTC}export{columnIndexOf,columnMinValue,columnMaxValue,columnMinDiff,columnExtents,columnUnique,addColumnsSchema,addColumnsData,parseAndIndexData,createTableID,buildDateColumnsFormatter,parseData,indexData,isUTCEnabled};