highcharts
Version:
JavaScript charting framework
13 lines • 5.13 kB
JavaScript
/**
* Highcharts JS v12.5.0 (2026-01-12)
* @module highcharts/modules/parallel-coordinates
* @requires highcharts
*
* Support for parallel coordinates in Highcharts
*
* (c) 2010-2026 Highsoft AS
* Author: Pawel Fus
*
* A commercial license may be required depending on use.
* See www.highcharts.com/license
*/import*as t from"../highcharts.js";var e,i,s,l={};l.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return l.d(e,{a:e}),e},l.d=(t,e)=>{for(var i in e)l.o(e,i)&&!l.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},l.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let a=t.default;var o=l.n(a);let r={parallelCoordinates:!1,parallelAxes:{lineWidth:1,title:{text:"",reserveSpace:!1},labels:{x:0,y:4,align:"center",reserveSpace:!1},offset:0}},n={lineWidth:0,tickLength:0,opposite:!0,type:"category"},{addEvent:h,arrayMax:p,arrayMin:c,isNumber:d,merge:f,pick:u}=o();class x{constructor(t){this.axis=t}setPosition(t,e){let i=this.axis,s=i.chart,l=((this.position||0)+.5)/(s.parallelInfo.counter+1);s.polar?e.angle=360*l:(e[t[0]]=100*l+"%",i[t[1]]=e[t[1]]=0,i[t[2]]=e[t[2]]=null,i[t[3]]=e[t[3]]=null)}}!function(t){function e(t){let e=this.chart,i=this.parallelCoordinates,s=["left","width","height","top"];if(e.hasParallelCoordinates)if(e.inverted&&(s=s.reverse()),this.isXAxis)this.options=f(this.options,n,t.userOptions);else{let l=e.yAxis.indexOf(this);this.options=f(this.options,this.chart.options.chart.parallelAxes,t.userOptions),i.position=u(i.position,l>=0?l:e.yAxis.length),i.setPosition(s,this.options)}}function i(t){let e=this.chart,i=this.parallelCoordinates;if(i&&e&&e.hasParallelCoordinates&&!this.isXAxis){let e=i.position,s=[];this.series.forEach(function(t){t.visible&&d(e)&&(s=(t.pointArrayMap||["y"]).reduce((i,s)=>[...i,t.getColumn(s)?.[e]??null],s))}),s=s.filter(d),this.dataMin=c(s),this.dataMax=p(s),t.preventDefault()}}function s(){this.parallelCoordinates||(this.parallelCoordinates=new x(this))}t.compose=function(t){t.keepProps.includes("parallel")||(t.keepProps.push("parallel"),h(t,"init",s),h(t,"afterSetOptions",e),h(t,"getSeriesExtremes",i))}}(e||(e={}));let y=e,A=t.default.Templating;var m=l.n(A);let{composed:g}=o(),{format:P}=m(),{addEvent:v,defined:C,erase:b,extend:I,insertItem:X,isArray:M,isNumber:O,pushUnique:T}=o();!function(t){function e(){let t=this.chart,e=this.points,i=e&&e.length,s=Number.MAX_VALUE,l,a;if(this.chart.hasParallelCoordinates){for(let o=0;o<i;o++)C((a=e[o]).y)?(t.polar?a.plotX=t.yAxis[o].angleRad||0:t.inverted?a.plotX=t.plotHeight-t.yAxis[o].top+t.plotTop:a.plotX=t.yAxis[o].left-t.plotLeft,a.clientX=a.plotX,a.plotY=t.yAxis[o].translate(a.y,!1,!0,void 0,!0),O(a.high)&&(a.plotHigh=t.yAxis[o].translate(a.high,!1,!0,void 0,!0)),void 0!==l&&(s=Math.min(s,Math.abs(a.plotX-l))),l=a.plotX,a.isInside=t.isInsidePlot(a.plotX,a.plotY,{inverted:t.inverted})):a.isNull=!0;this.closestPointRangePx=s}}function i(t){let e=this.chart;if(e.hasParallelCoordinates){for(let t of e.axes)X(this,t.series),t.isDirty=!0;this.xAxis=e.xAxis[0],this.yAxis=e.yAxis[0],t.preventDefault()}}function s(){let t=this.chart;if(t.hasParallelCoordinates)for(let e of t.axes||[])e&&e.series&&(b(e.series,this),e.isDirty=e.forceRedraw=!0)}function l(){let t=this.chart;if(t?.hasParallelCoordinates)for(let e of this.points){let i,s=t.yAxis[e.x||0],l=s.options,a=l.tooltipValueFormat??l.labels.format;i=a?P(a,I(e,{value:e.y}),t):s.dateTime?t.time.dateFormat(t.time.resolveDTLFormat(l.dateTimeLabelFormats?.[s.tickPositions.info?.unitName||"year"]||"").main,e.y??void 0):M(l.categories)?l.categories[e.y??-1]:String(e.y??""),e.formattedValue=i}}t.compose=function(t){T(g,"ParallelSeries")&&(v(t,"afterTranslate",e,{order:1}),v(t,"bindAxes",i),v(t,"destroy",s),v(t,"afterGeneratePoints",l))}}(i||(i={}));let E=i,{addEvent:L,defined:S,merge:_,splat:N}=o();class D{constructor(t){this.chart=t}setParallelInfo(t){let e=this.chart||this,i=t.series;for(let t of(e.parallelInfo={counter:0},i))t.data&&(e.parallelInfo.counter=Math.max(e.parallelInfo.counter,t.data.length-1))}}function V(t){let e=t.args[0],i=N(e.yAxis||{}),s=[],l=i.length;if(this.hasParallelCoordinates=e.chart&&e.chart.parallelCoordinates,this.hasParallelCoordinates){for(this.setParallelInfo(e);l<=this.parallelInfo.counter;l++)s.push({});e.legend||(e.legend={}),e.legend&&void 0===e.legend.enabled&&(e.legend.enabled=!1),_(!0,e,{boost:{seriesThreshold:Number.MAX_VALUE},plotOptions:{series:{boostThreshold:Number.MAX_VALUE}}}),e.yAxis=i.concat(s),e.xAxis=_(n,N(e.xAxis||{})[0])}}function k(t){let e=t.options;if(e.chart&&(S(e.chart.parallelCoordinates)&&(this.hasParallelCoordinates=e.chart.parallelCoordinates),this.options.chart.parallelAxes=_(this.options.chart.parallelAxes,e.chart.parallelAxes)),this.hasParallelCoordinates)for(let t of(e.series&&this.setParallelInfo(e),this.yAxis))t.update({},!1)}(s||(s={})).compose=function(t,e,i,s){y.compose(t),E.compose(s);let l=D.prototype,a=e.prototype;a.setParallelInfo||(a.setParallelInfo=l.setParallelInfo,L(e,"init",V),L(e,"update",k),_(!0,i.chart,r))};let w=s,F=o();w.compose(F.Axis,F.Chart,F.defaultOptions,F.Series);let j=o();export{j as default};