@highcharts/dashboards
Version:
Highcharts Dashboards framework
7 lines • 10.6 kB
JavaScript
!/**
* Highcharts Dashboards Math 3.6.0 (2025-09-10)
*
* (c) 2009-2025 Highsoft AS
*
* License: www.highcharts.com/license
*/function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("dashboards/modules/math-modifier",["dashboards"],function(e){return t(e),t.Dashboards=e,t}):t("undefined"!=typeof Dashboards?Dashboards:void 0)}(function(t){"use strict";var e=t?t._modules:{};function r(e,r,n,o){e.hasOwnProperty(r)||(e[r]=o.apply(null,n),"function"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent("DashboardsModuleLoaded",{detail:{path:r,module:e[r]}})))}r(e,"Data/Formula/FormulaParser.js",[e["Core/Utilities.js"]],function(t){let{isString:e}=t,r=/^(?:FALSE|TRUE)/,n=/^[+\-]?\d+(?:\.\d+)?(?:e[+\-]\d+)?/,o=/^[+\-]?\d+(?:,\d+)?(?:e[+\-]\d+)?/,s=/^([A-Z][A-Z\d\.]*)\(/,a=/^(?:[+\-*\/^<=>]|<=|=>)/,u=/^(\$?[A-Z]+)(\$?\d+)\:(\$?[A-Z]+)(\$?\d+)/,i=/^R(\d*|\[\d+\])C(\d*|\[\d+\])\:R(\d*|\[\d+\])C(\d*|\[\d+\])/,l=/^(\$?[A-Z]+)(\$?\d+)(?![\:C])/,c=/^R(\d*|\[\d+\])C(\d*|\[\d+\])(?!\:)/;function f(t){let e=0;for(let r=0,n=t.length,o,s=1;r<n;++r){if("("===(o=t[r])){e||(s=r+1),++e;continue}if(")"===o&&!--e)return t.substring(s,r)}if(e>0){let t=Error("Incomplete parantheses.");throw t.name="FormulaParseError",t}return""}function m(t){let e=-1;for(let r=0,n=t.length,o,s=!1;r<n;++r){if("\\"===(o=t[r])){s=!s;continue}if(s){s=!1;continue}if('"'===o)if(!(e<0))return t.substring(e+1,r);else e=r}let r=Error("Incomplete string.");throw r.name="FormulaParseError",r}function p(t,e){let r;if(r=t.match(i)){let t=""===r[2]||"["===r[2][0],e=""===r[1]||"["===r[1][0],n=""===r[4]||"["===r[4][0],o=""===r[3]||"["===r[3][0],s={type:"range",beginColumn:t?parseInt(r[2].substring(1,-1)||"0",10):parseInt(r[2],10)-1,beginRow:e?parseInt(r[1].substring(1,-1)||"0",10):parseInt(r[1],10)-1,endColumn:n?parseInt(r[4].substring(1,-1)||"0",10):parseInt(r[4],10)-1,endRow:o?parseInt(r[3].substring(1,-1)||"0",10):parseInt(r[3],10)-1};return t&&(s.beginColumnRelative=!0),e&&(s.beginRowRelative=!0),n&&(s.endColumnRelative=!0),o&&(s.endRowRelative=!0),s}if(r=t.match(u)){let t="$"!==r[1][0],e="$"!==r[2][0],n="$"!==r[3][0],o="$"!==r[4][0],s={type:"range",beginColumn:F(t?r[1]:r[1].substring(1))-1,beginRow:parseInt(e?r[2]:r[2].substring(1),10)-1,endColumn:F(n?r[3]:r[3].substring(1))-1,endRow:parseInt(o?r[4]:r[4].substring(1),10)-1};return t&&(s.beginColumnRelative=!0),e&&(s.beginRowRelative=!0),n&&(s.endColumnRelative=!0),o&&(s.endRowRelative=!0),s}let n=h(t,e);return 1===n.length&&"string"!=typeof n[0]?n[0]:n}function g(t){let r=t.length,n=t[r-2];return"-"===t[r-1]&&e(n)&&!!n.match(/\*|\/|\^/)}function h(t,e){let u=e?o:n,i=[],d,b=("="===t[0]?t.substring(1):t).trim();for(;b;){if(d=b.match(c)){let t=""===d[2]||"["===d[2][0],e=""===d[1]||"["===d[1][0],r={type:"reference",column:t?parseInt(d[2].substring(1,-1)||"0",10):parseInt(d[2],10)-1,row:e?parseInt(d[1].substring(1,-1)||"0",10):parseInt(d[1],10)-1};t&&(r.columnRelative=!0),e&&(r.rowRelative=!0),g(i)&&(i.pop(),r.isNegative=!0),i.push(r),b=b.substring(d[0].length).trim();continue}if(d=b.match(l)){let t="$"!==d[1][0],e="$"!==d[2][0],r={type:"reference",column:F(t?d[1]:d[1].substring(1))-1,row:parseInt(e?d[2]:d[2].substring(1),10)-1};t&&(r.columnRelative=!0),e&&(r.rowRelative=!0),g(i)&&(i.pop(),r.isNegative=!0),i.push(r),b=b.substring(d[0].length).trim();continue}if(d=b.match(a)){i.push(d[0]),b=b.substring(d[0].length).trim();continue}if(d=b.match(r)){i.push("TRUE"===d[0]),b=b.substring(d[0].length).trim();continue}if(d=b.match(u)){let t=parseFloat(d[0]);g(i)&&(i.pop(),t=-t),i.push(t),b=b.substring(d[0].length).trim();continue}if('"'===b[0]){let t=m(b);i.push(t.substring(1,-1)),b=b.substring(t.length+2).trim();continue}if(d=b.match(s)){let t=f(b=b.substring(d[1].length).trim());i.push({type:"function",name:d[1],args:function(t,e){let r=[],n=e?";":",",o=0,s="";for(let a=0,u=t.length,i;a<u;++a)if((i=t[a])===n&&!o&&s)r.push(p(s,e)),s="";else if('"'!==i||o||s)" "!==i&&(s+=i,"("===i?++o:")"===i&&--o);else{let e=m(t.substring(a));r.push(e),a+=e.length+1}return!o&&s&&r.push(p(s,e)),r}(t,e)}),b=b.substring(t.length+2).trim();continue}if("("===b[0]){let t=f(b);if(t){i.push(h(t,e)),b=b.substring(t.length+2).trim();continue}}let n=t.length-b.length,o=Error("Unexpected character `"+t.substring(n,n+1)+"` at position "+(n+1)+". (`..."+t.substring(n-5,n+6)+"...`)");throw o.name="FormulaParseError",o}return i}function F(t){let e=0;for(let r=0,n=t.length,o,s=t.length-1;r<n;++r)(o=t.charCodeAt(r))>=65&&o<=90&&(e+=(o-64)*Math.pow(26,s)),--s;return e}return{parseFormula:h}}),r(e,"Data/Formula/Functions/ABS.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){let n=e(t[0],r);switch(typeof n){case"number":return Math.abs(n);case"object":{let t=[];for(let e=0,r=n.length,o;e<r;++e){if("number"!=typeof(o=n[e]))return NaN;t.push(Math.abs(o))}return t}default:return NaN}}return t.registerProcessorFunction("ABS",r),r}),r(e,"Data/Formula/Functions/AND.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,n){for(let o=0,s=t.length,a;o<s;++o)if(!(a=e(t[o],n))||"object"==typeof a&&!r(a,n))return!1;return!0}return t.registerProcessorFunction("AND",r),r}),r(e,"Data/Formula/Functions/AVERAGEA.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){let n=0,o=0;for(let s=0,a=t.length,u;s<a;++s)switch(typeof(u=e(t[s],r))){case"boolean":++n,o+=+!!u;continue;case"number":isNaN(u)||(++n,o+=u);continue;case"string":++n;continue;default:for(let t=0,e=u.length,r;t<e;++t)switch(typeof(r=u[t])){case"boolean":++n,o+=+!!r;continue;case"number":isNaN(r)||(++n,o+=r);continue;case"string":++n;continue}continue}return n?o/n:0}return t.registerProcessorFunction("AVERAGEA",r),r}),r(e,"Data/Formula/Functions/COUNTA.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){function e(r,n){let o=t.getArgumentsValues(r,n),s=0;for(let t=0,r=o.length,a;t<r;++t){switch(typeof(a=o[t])){case"number":if(isNaN(a))continue;break;case"object":s+=e(a,n);continue;case"string":if(!a)continue}++s}return s}return t.registerProcessorFunction("COUNTA",e),e}),r(e,"Data/Formula/Functions/IF.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){return e(t[0],r)?e(t[1],r):e(t[2],r)}return t.registerProcessorFunction("IF",r),r}),r(e,"Data/Formula/Functions/ISNA.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){let n=e(t[0],r);return"number"!=typeof n||isNaN(n)}return t.registerProcessorFunction("ISNA",r),r}),r(e,"Data/Formula/Functions/MOD.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){let n=e(t[0],r),o=e(t[1],r);return("object"==typeof n&&(n=n[0]),"object"==typeof o&&(o=o[0]),"number"!=typeof n||"number"!=typeof o||0===o)?NaN:n%o}return t.registerProcessorFunction("MOD",r),r}),r(e,"Data/Formula/Functions/MODE.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){function e(e,r){let n={},o=t.getArgumentsValues(e,r);for(let t=0,e=o.length,r;t<e;++t)switch(typeof(r=o[t])){case"number":isNaN(r)||(n[r]=(n[r]||0)+1);break;case"object":for(let t=0,e=r.length,o;t<e;++t)"number"!=typeof(o=r[t])||isNaN(o)||(n[o]=(n[o]||0)+1)}return n}function r(t,r){let n=e(t,r),o=Object.keys(n);if(!o.length)return NaN;let s=[parseFloat(o[0])],a=n[o[0]];for(let t=1,e=o.length,r,u;t<e;++t)a<(u=n[r=o[t]])?(s=[parseFloat(r)],a=u):a===u&&s.push(parseFloat(r));return a>1?s:NaN}function n(t,r){let n=e(t,r),o=Object.keys(n);if(!o.length)return NaN;let s=parseFloat(o[0]),a=n[o[0]];for(let t=1,e=o.length,r,u,i;t<e;++t)a<(i=n[r=o[t]])?(s=parseFloat(r),a=i):a===i&&s>(u=parseFloat(r))&&(s=u,a=i);return a>1?s:NaN}return t.registerProcessorFunction("MODE",n),t.registerProcessorFunction("MODE.MULT",r),t.registerProcessorFunction("MODE.SNGL",n),{MULT:r,SNGL:n}}),r(e,"Data/Formula/Functions/NOT.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){let n=e(t[0],r);switch("object"==typeof n&&(n=n[0]),typeof n){case"boolean":case"number":return!n}return NaN}return t.registerProcessorFunction("NOT",r),r}),r(e,"Data/Formula/Functions/OR.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,n){for(let o=0,s=t.length,a;o<s;++o)if("object"==typeof(a=e(t[o],n))){if(r(a,n))return!0}else if(a)return!0;return!1}return t.registerProcessorFunction("OR",r),r}),r(e,"Data/Formula/Functions/XOR.js",[e["Data/Formula/FormulaProcessor.js"]],function(t){let{getArgumentValue:e}=t;function r(t,r){for(let n=0,o=t.length,s,a;n<o;++n)switch(typeof(a=e(t[n],r))){case"boolean":case"number":if(void 0===s)s=!!a;else if(!!a!==s)return!0;break;case"object":for(let t=0,e=a.length,r;t<e;++t)switch(typeof(r=a[t])){case"boolean":case"number":if(void 0===s)s=!!r;else if(!!r!==s)return!0}}return!1}return t.registerProcessorFunction("XOR",r),r}),r(e,"Data/Formula/Formula.js",[e["Data/Formula/FormulaParser.js"],e["Data/Formula/FormulaProcessor.js"],e["Data/Formula/FormulaTypes.js"]],function(t,e,r){return{...t,...e,...r}}),r(e,"Data/Modifiers/MathModifier.js",[e["Data/Modifiers/DataModifier.js"],e["Data/Formula/FormulaParser.js"],e["Data/Formula/FormulaProcessor.js"]],function(t,e,r){class n extends t{constructor(t){super(),this.options={...n.defaultOptions,...t}}modifyTable(t,r){this.emit({type:"modify",detail:r,table:t});let n=this.options.alternativeSeparators,o=this.options.formulaColumns||t.getColumnNames(),s=t.modified;for(let e=0,r=o.length,n;e<r;++e)n=o[e],o.indexOf(n)>=0&&s.setColumn(n,this.processColumn(t,n));let a=this.options.columnFormulas||[];for(let r=0,o=a.length,u,i;r<o;++r)u=a[r],i=e.parseFormula(u.formula,n),s.setColumn(u.column,this.processColumnFormula(i,t,u.rowStart,u.rowEnd));return this.emit({type:"afterModify",detail:r,table:t}),t}processColumn(t,n,o=0){let s=this.options.alternativeSeparators,a=(t.getColumn(n,!0)||[]).slice(o>0?o:0);for(let n=0,o=a.length,u=[],i;n<o;++n)if("string"==typeof(i=a[n])&&"="===i[0])try{u=""===i?u:e.parseFormula(i.substring(1),s),a[n]=r.processFormula(u,t)}catch{a[n]=NaN}return a}processColumnFormula(t,e,n=0,o=e.getRowCount()){n=n>=0?n:0,o=o>=0?o:e.getRowCount()+o;let s=[],a=e.modified;for(let e=0,u=o-n;e<u;++e)try{s[e]=r.processFormula(t,a)}catch{s[e]=NaN}finally{t=r.translateReferences(t,0,1)}return s}}return n.defaultOptions={type:"Math",alternativeSeparators:!1},t.registerType("Math",n),n}),r(e,"masters/modules/math-modifier.js",[e["Dashboards/Globals.js"],e["Data/Formula/Formula.js"]],function(t,e){return t.Formula=e,t})});