UNPKG

highcharts

Version:
11 lines 13.2 kB
!/** * Highstock JS v12.1.2 (2024-12-21) * @module highcharts/modules/datagrouping * @requires highcharts * * Data grouping module * * (c) 2010-2024 Torstein Hønsi * * License: www.highcharts.com/license */function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(t._Highcharts,t._Highcharts.SeriesRegistry,t._Highcharts.Templating):"function"==typeof define&&define.amd?define("highcharts/modules/datagrouping",["highcharts/highcharts"],function(t){return e(t,t.SeriesRegistry,t.Templating)}):"object"==typeof exports?exports["highcharts/modules/datagrouping"]=e(t._Highcharts,t._Highcharts.SeriesRegistry,t._Highcharts.Templating):t.Highcharts=e(t.Highcharts,t.Highcharts.SeriesRegistry,t.Highcharts.Templating)}("undefined"==typeof window?this:window,(t,e,i)=>(()=>{"use strict";let o;var a,n={512:t=>{t.exports=e},984:t=>{t.exports=i},944:e=>{e.exports=t}},r={};function s(t){var e=r[t];if(void 0!==e)return e.exports;var i=r[t]={exports:{}};return n[t](i,i.exports,s),i.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var l={};s.d(l,{default:()=>tm});var u=s(944),h=s.n(u);let p={},{arrayMax:d,arrayMin:c,correctFloat:g,extend:m,isNumber:f}=h();function x(t){let e=t.length,i=y(t);return f(i)&&e&&(i=g(i/e)),i}function y(t){let e=t.length,i;if(!e&&t.hasNulls)i=null;else if(e)for(i=0;e--;)i+=t[e];return i}let G={average:x,averages:function(){let t=[];return[].forEach.call(arguments,function(e){t.push(x(e))}),void 0===t[0]?void 0:t},close:function(t){return t.length?t[t.length-1]:t.hasNulls?null:void 0},high:function(t){return t.length?d(t):t.hasNulls?null:void 0},hlc:function(t,e,i){if(t=p.high(t),e=p.low(e),i=p.close(i),f(t)||f(e)||f(i))return[t,e,i]},low:function(t){return t.length?c(t):t.hasNulls?null:void 0},ohlc:function(t,e,i,o){if(t=p.open(t),e=p.high(e),i=p.low(i),o=p.close(o),f(t)||f(e)||f(i)||f(o))return[t,e,i,o]},open:function(t){return t.length?t[0]:t.hasNulls?null:void 0},range:function(t,e){return(t=p.low(t),e=p.high(e),f(t)||f(e))?[t,e]:null===t&&null===e?null:void 0},sum:y};m(p,G);let M={common:{groupPixelWidth:2,dateTimeLabelFormats:{millisecond:["%[AebHMSL]","%[AebHMSL]","-%[HMSL]"],second:["%[AebHMS]","%[AebHMS]","-%[HMS]"],minute:["%[AebHM]","%[AebHM]","-%[HM]"],hour:["%[AebHM]","%[AebHM]","-%[HM]"],day:["%[AebY]","%[Aeb]","-%[AebY]"],week:["week from %[AebY]","%[Aeb]","-%[AebY]"],month:["%[BY]","%[B]","-%[BY]"],year:["%Y","%Y","-%Y"]}},seriesSpecific:{line:{},spline:{},area:{},areaspline:{},arearange:{},column:{groupPixelWidth:10},columnrange:{groupPixelWidth:10},candlestick:{groupPixelWidth:10},ohlc:{groupPixelWidth:5},hlc:{groupPixelWidth:5},heikinashi:{groupPixelWidth:10}},units:[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1]],["week",[1]],["month",[1,3,6]],["year",null]]},{addEvent:v,extend:b,merge:T,pick:D}=h();function S(t){let e=this,i=e.series;i.forEach(function(t){t.groupPixelWidth=void 0}),i.forEach(function(i){i.groupPixelWidth=e.getGroupPixelWidth&&e.getGroupPixelWidth(),i.groupPixelWidth&&(i.hasProcessed=!0),i.applyGrouping(!!t.hasExtremesChanged)})}function C(){let t=this.series,e=t.length,i=0,o=!1,a,n;for(;e--;)(n=t[e].options.dataGrouping)&&(i=Math.max(i,D(n.groupPixelWidth,M.common.groupPixelWidth)),a=(t[e].dataTable.modified||t[e].dataTable).rowCount,(t[e].groupPixelWidth||a>this.chart.plotSizeX/i||a&&n.forced)&&(o=!0));return o?i:0}function w(){this.series.forEach(function(t){t.hasProcessed=!1})}function A(t,e){let i;if(e=D(e,!0),t||(t={forced:!1,units:null}),this instanceof o)for(i=this.series.length;i--;)this.series[i].update({dataGrouping:t},!1);else this.chart.options.series.forEach(function(e){e.dataGrouping="boolean"==typeof t?t:T(t,e.dataGrouping)});this.ordinal&&(this.ordinal.slope=void 0),e&&this.chart.redraw()}let P={compose:function(t){o=t;let e=t.prototype;e.applyGrouping||(v(t,"afterSetScale",w),v(t,"postProcessData",S),b(e,{applyGrouping:S,getGroupPixelWidth:C,setDataGrouping:A}))}},{fireEvent:k,isArray:H,objectEach:R,uniqueKey:F}=h(),W=class{constructor(t={}){this.autoId=!t.id,this.columns={},this.id=t.id||F(),this.modified=this,this.rowCount=0,this.versionTag=F();let e=0;R(t.columns||{},(t,i)=>{this.columns[i]=t.slice(),e=Math.max(e,t.length)}),this.applyRowCount(e)}applyRowCount(t){this.rowCount=t,R(this.columns,e=>{H(e)&&(e.length=t)})}getColumn(t,e){return this.columns[t]}getColumns(t,e){return(t||Object.keys(this.columns)).reduce((t,e)=>(t[e]=this.columns[e],t),{})}getRow(t,e){return(e||Object.keys(this.columns)).map(e=>this.columns[e]?.[t])}setColumn(t,e=[],i=0,o){this.setColumns({[t]:e},i,o)}setColumns(t,e,i){let o=this.rowCount;R(t,(t,e)=>{this.columns[e]=t.slice(),o=t.length}),this.applyRowCount(o),i?.silent||(k(this,"afterSetColumns"),this.versionTag=F())}setRow(t,e=this.rowCount,i,o){let{columns:a}=this,n=i?this.rowCount+1:e+1;R(t,(t,r)=>{let s=a[r]||o?.addColumns!==!1&&Array(n);s&&(i?s.splice(e,0,t):s[e]=t,a[r]=s)}),n>this.rowCount&&this.applyRowCount(n),o?.silent||(k(this,"afterSetRows"),this.versionTag=F())}},{addEvent:O,getMagnitude:E,normalizeTickInterval:N,timeUnits:I}=h();!function(t){function e(){return this.chart.time.getTimeTicks.apply(this.chart.time,arguments)}function i(){if("datetime"!==this.type){this.dateTime=void 0;return}this.dateTime||(this.dateTime=new o(this))}t.compose=function(t){return t.keepProps.includes("dateTime")||(t.keepProps.push("dateTime"),t.prototype.getTimeTicks=e,O(t,"afterSetType",i)),t};class o{constructor(t){this.axis=t}normalizeTimeTickInterval(t,e){let i=e||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],o=i[i.length-1],a=I[o[0]],n=o[1],r;for(r=0;r<i.length&&(a=I[(o=i[r])[0]],n=o[1],!i[r+1]||!(t<=(a*n[n.length-1]+I[i[r+1][0]])/2));r++);a===I.year&&t<5*a&&(n=[1,2,5]);let s=N(t/a,n,"year"===o[0]?Math.max(E(t/a),1):1);return{unitRange:a,count:s,unitName:o[0]}}getXDateFormat(t,e){let{axis:i}=this,o=i.chart.time;return i.closestPointRange?o.getDateFormat(i.closestPointRange,t,i.options.startOfWeek,e)||o.resolveDTLFormat(e.year).main:o.resolveDTLFormat(e.day).main}}t.Additions=o}(a||(a={}));let L=a;var Y=s(512);let{series:{prototype:j}}=s.n(Y)(),{addEvent:_,defined:z,error:X,extend:q,isNumber:B,merge:J,pick:K,splat:Q}=h(),U=j.generatePoints;function V(t){var e;let i,o;let a=this.chart,n=this.options.dataGrouping,r=!1!==this.allowDG&&n&&K(n.enabled,a.options.isStock),s=this.reserveSpace(),l=this.currentDataGrouping,u,h,p=!1;r&&!this.requireSorting&&(this.requireSorting=p=!0);let d=!1==!(this.isCartesian&&!this.isDirty&&!this.xAxis.isDirty&&!this.yAxis.isDirty&&!t)||!r;if(p&&(this.requireSorting=!1),d)return;this.destroyGroupedData();let c=n.groupAll?this.dataTable:this.dataTable.modified||this.dataTable,g=this.getColumn("x",!n.groupAll),m=a.plotSizeX,f=this.xAxis,x=f.getExtremes(),y=f.options.ordinal,G=this.groupPixelWidth;if(G&&g&&c.rowCount&&m&&B(x.min)){o=!0,this.isDirty=!0,this.points=null;let t=x.min,r=x.max,l=y&&f.ordinal&&f.ordinal.getGroupIntervalFactor(t,r,this)||1,p=G*(r-t)/m*l,d=f.getTimeTicks(L.Additions.prototype.normalizeTimeTickInterval(p,n.units||M.units),Math.min(t,g[0]),Math.max(r,g[g.length-1]),f.options.startOfWeek,g,this.closestPointRange),v=j.groupData.apply(this,[c,d,n.approximation]),b=v.modified,T=b.getColumn("x",!0),D=0;for(n?.smoothed&&b.rowCount&&(n.firstAnchor="firstPoint",n.anchor="middle",n.lastAnchor="lastPoint",X(32,!1,a,{"dataGrouping.smoothed":"use dataGrouping.anchor"})),i=1;i<d.length;i++)d.info.segmentStarts&&-1!==d.info.segmentStarts.indexOf(i)||(D=Math.max(d[i]-d[i-1],D));(u=d.info).gapSize=D,this.closestPointRange=d.info.totalRange,this.groupMap=v.groupMap,this.currentDataGrouping=u,!function(t,e,i){let o=t.options.dataGrouping,a=t.currentDataGrouping&&t.currentDataGrouping.gapSize,n=t.getColumn("x");if(!(o&&n.length&&a&&t.groupMap))return;let r=e.length-1,s=o.anchor,l=o.firstAnchor,u=o.lastAnchor,h=e.length-1,p=0;if(l&&n[0]>=e[0]){let i;p++;let o=t.groupMap[0].start,r=t.groupMap[0].length;B(o)&&B(r)&&(i=o+(r-1)),e[0]=({start:e[0],middle:e[0]+.5*a,end:e[0]+a,firstPoint:n[0],lastPoint:i&&n[i]})[l]}if(r>0&&u&&a&&e[r]>=i-a){h--;let i=t.groupMap[t.groupMap.length-1].start;e[r]=({start:e[r],middle:e[r]+.5*a,end:e[r]+a,firstPoint:i&&n[i],lastPoint:n[n.length-1]})[u]}if(s&&"start"!==s){let t=a*({middle:.5,end:1})[s];for(;h>=p;)e[h]+=t,h--}}(this,T||[],r),s&&T&&(z((e=T)[0])&&B(f.min)&&B(f.dataMin)&&e[0]<f.min&&((!z(f.options.min)&&f.min<=f.dataMin||f.min===f.dataMin)&&(f.min=Math.min(e[0],f.min)),f.dataMin=Math.min(e[0],f.dataMin)),z(e[e.length-1])&&B(f.max)&&B(f.dataMax)&&e[e.length-1]>f.max&&((!z(f.options.max)&&B(f.dataMax)&&f.max>=f.dataMax||f.max===f.dataMax)&&(f.max=Math.max(e[e.length-1],f.max)),f.dataMax=Math.max(e[e.length-1],f.dataMax))),n.groupAll&&(this.allGroupedTable=b,T=(b=(h=this.cropData(b,f.min||0,f.max||0)).modified).getColumn("x"),this.cropStart=h.start),this.dataTable.modified=b}else this.groupMap=void 0,this.currentDataGrouping=void 0;this.hasGroupedData=o,this.preventGraphAnimation=(l&&l.totalRange)!==(u&&u.totalRange)}function Z(){this.groupedData&&(this.groupedData.forEach(function(t,e){t&&(this.groupedData[e]=t.destroy?t.destroy():null)},this),this.groupedData.length=0,delete this.allGroupedTable)}function $(){U.apply(this),this.destroyGroupedData(),this.groupedData=this.hasGroupedData?this.points:null}function tt(){return this.is("arearange")?"range":this.is("ohlc")?"ohlc":this.is("hlc")?"hlc":this.is("column")||this.options.cumulative?"sum":"average"}function te(t,e,i){let o=t.getColumn("x",!0)||[],a=t.getColumn("y",!0),n=this,r=n.data,s=n.options&&n.options.data,l=[],u=new W,h=[],d=t.rowCount,c=!!a,g=[],m=n.pointArrayMap,f=m&&m.length,x=["x"].concat(m||["y"]),y=(m||["y"]).map(()=>[]),G=this.options.dataGrouping&&this.options.dataGrouping.groupAll,M,v,b,T=0,D=0,S="function"==typeof i?i:i&&p[i]?p[i]:p[n.getDGApproximation&&n.getDGApproximation()||"average"];if(f){let t=m.length;for(;t--;)g.push([])}else g.push([]);let C=f||1;for(let t=0;t<=d;t++)if(!(o[t]<e[0])){for(;void 0!==e[T+1]&&o[t]>=e[T+1]||t===d;){if(M=e[T],n.dataGroupInfo={start:G?D:n.cropStart+D,length:g[0].length,groupStart:M},b=S.apply(n,g),n.pointClass&&!z(n.dataGroupInfo.options)&&(n.dataGroupInfo.options=J(n.pointClass.prototype.optionsToObject.call({series:n},n.options.data[n.cropStart+D])),x.forEach(function(t){delete n.dataGroupInfo.options[t]})),void 0!==b){l.push(M);let t=Q(b);for(let e=0;e<t.length;e++)y[e].push(t[e]);h.push(n.dataGroupInfo)}D=t;for(let t=0;t<C;t++)g[t].length=0,g[t].hasNulls=!1;if(T+=1,t===d)break}if(t===d)break;if(m){let e;let i=G?t:n.cropStart+t,o=r&&r[i]||n.pointClass.prototype.applyOptions.apply({series:n},[s[i]]);for(let t=0;t<f;t++)B(e=o[m[t]])?g[t].push(e):null===e&&(g[t].hasNulls=!0)}else B(v=c?a[t]:null)?g[0].push(v):null===v&&(g[0].hasNulls=!0)}let w={x:l};return(m||["y"]).forEach((t,e)=>{w[t]=y[e]}),u.setColumns(w),{groupMap:h,modified:u}}function ti(t){let e=t.options,i=this.type,o=this.chart.options.plotOptions,a=this.useCommonDataGrouping&&M.common,n=M.seriesSpecific,r=h().defaultOptions.plotOptions[i].dataGrouping;if(o&&(n[i]||a)){let t=this.chart.rangeSelector;r||(r=J(M.common,n[i])),e.dataGrouping=J(a,r,o.series&&o.series.dataGrouping,o[i].dataGrouping,this.userOptions.dataGrouping,!e.isInternal&&t&&B(t.selected)&&t.buttonOptions[t.selected].dataGrouping)}}let to={compose:function(t){let e=t.prototype;e.applyGrouping||(_(t.prototype.pointClass,"update",function(){if(this.dataGroup)return X(24,!1,this.series.chart),!1}),_(t,"afterSetOptions",ti),_(t,"destroy",Z),q(e,{applyGrouping:V,destroyGroupedData:Z,generatePoints:$,getDGApproximation:tt,groupData:te}))},groupData:te};var ta=s(984);let{format:tn}=s.n(ta)(),{composed:tr}=h(),{addEvent:ts,extend:tl,isNumber:tu,pick:th,pushUnique:tp}=h();function td(t){let e=this.chart,i=e.time,o=t.point,a=o.series,n=a.options,r=a.tooltipOptions,s=n.dataGrouping,l=a.xAxis,u=r.xDateFormat||"",h,p,d,c,g,m=r[t.isFooter?"footerFormat":"headerFormat"];if(l&&"datetime"===l.options.type&&s&&tu(o.key)){p=a.currentDataGrouping,d=s.dateTimeLabelFormats||M.common.dateTimeLabelFormats,p?(c=d[p.unitName],1===p.count?u=c[0]:(u=c[1],h=c[2])):!u&&d&&l.dateTime&&(u=l.dateTime.getXDateFormat(o.x,r.dateTimeLabelFormats));let n=th(a.groupMap?.[o.index].groupStart,o.key),f=n+(p?.totalRange||0)-1;g=i.dateFormat(u,n),h&&(g+=i.dateFormat(h,f)),a.chart.styledMode&&(m=this.styledModeFormat(m)),t.text=tn(m,{point:tl(o,{key:g}),series:a},e),t.preventDefault()}}let tc={compose:function(t,e,i){P.compose(t),to.compose(e),i&&tp(tr,"DataGrouping")&&ts(i,"headerFormatter",td)},groupData:to.groupData},tg=h();tg.dataGrouping=tg.dataGrouping||{},tg.dataGrouping.approximationDefaults=tg.dataGrouping.approximationDefaults||G,tg.dataGrouping.approximations=tg.dataGrouping.approximations||p,tc.compose(tg.Axis,tg.Series,tg.Tooltip);let tm=h();return l.default})());