UNPKG

svelte-fusioncharts

Version:

A simple and lightweight official Svelte component for FusionCharts JavaScript charting library. `svelte-fusioncharts` enables you to add JavaScript charts in your Svelte application or project without any hassle.

71 lines (62 loc) 2.2 kB
const ATOMIC_DATA_TYPE = ['string', 'number', 'function', 'boolean', 'undefined'], charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', isResizeRequired = (oldConfig, newConfig) => { let { width, height } = oldConfig, newWidth = newConfig.width, newHeight = newConfig.height; if (width !== newWidth || height !== newHeight) { return true; } return false; }, isChartTypeChanged = (oldConfig, newConfig) => { return (oldConfig.type !== newConfig.type); }, cloneObject = (arg, purpose = 'clone') => { if ((ATOMIC_DATA_TYPE.indexOf(typeof arg) > -1) || arg === null) { return arg; } if (Array.isArray(arg)) { let i, len, arr = []; for (i = 0, len = arg.length; i < len; i++) { arr.push(cloneObject(arg[i], purpose)); } return arr; } else if (typeof arg === 'object') { let cloneObj = {}, key; for (key in arg) { if (key === 'data') { if (arg[key] && arg[key]._dataStore) { cloneObj[key] = (purpose === 'clone') ? arg[key] : '-' } else { cloneObj[key] = cloneObject(arg[key], purpose); } } else { cloneObj[key] = cloneObject(arg[key], purpose); } } return cloneObj; } }, isDataSourceUpdated = (oldConfig, newConfig) => { return JSON.stringify(cloneObject(oldConfig.dataSource, 'diff')) !== JSON.stringify(cloneObject(newConfig.dataSource, 'diff')); }, createUniqueId = (length = 20) => { let i, result = '', charactersLength = charSet.length; for (i = 0; i < length; i++) { result += charSet.charAt(Math.floor(Math.random() * charactersLength)); } return result; }; export { isResizeRequired, isChartTypeChanged, isDataSourceUpdated, cloneObject, createUniqueId };