{"version":3,"sources":["webpack:///./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack:///./src/components/public/cCell/cCell.vue?848d","webpack:///./src/components/public/cCell/cCell.vue","webpack:///./src/components/public/pinyinSelect/pinyinSelect.vue?f156","webpack:///./src/components/public/pinyinSelect/pinyinSelect.vue?52d5","webpack:///./src/components/public/pinyinSelect/pinyinSelect.vue","webpack:///./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack:///./node_modules/echarts/lib/model/referHelper.js","webpack:///./node_modules/echarts/lib/chart/helper/createSeriesData.js","webpack:///./src/views/Cass/Datanalysis/components/caseeffect.vue?42f6","webpack:///./src/views/Cass/Datanalysis/components/casstable.vue?e1a8","webpack:///./src/views/Cass/Datanalysis/components/casstable.vue","webpack:///./src/components/page/person/dialectical.vue?f8b4","webpack:///./src/components/page/person/dialectical.vue?13cb","webpack:///./src/components/page/person/dialectical.vue","webpack:///./src/views/Cass/Datanalysis/components/breadnav.vue?1ec2","webpack:///./src/views/Cass/Datanalysis/components/breadnav.vue","webpack:///./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack:///./src/components/page/emrDetail/emrDetail.vue?1fc2","webpack:///./node_modules/echarts/lib/label/labelLayoutHelper.js","webpack:///./src/components/public/cSteps/cStep/cStep.vue?8622","webpack:///./src/components/public/cSteps/cStep/cStep.vue","webpack:///./src/components/public/cSteps/cSteps.vue?91ca","webpack:///./src/components/public/cSteps/cSteps.vue","webpack:///./src/components/page/emrDetail/emrDetail.vue?5ca0","webpack:///./src/components/page/emrDetail/emrDetail.vue","webpack:///./src/views/Cass/Datanalysis/datanalysis/datanalysis.vue?09eb","webpack:///./src/components/public/pinyinSelect/pinyinSelect.vue?2fb4","webpack:///./src/views/Cass/Datanalysis/components/breadnav.vue?0f92","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack:///./node_modules/echarts/lib/component/tooltip/helper.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipHTMLContent.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack:///./node_modules/echarts/lib/component/tooltip/install.js","webpack:///./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack:///./node_modules/echarts/lib/export/api/helper.js","webpack:///./node_modules/zrender/lib/contain/polygon.js","webpack:///./node_modules/echarts/lib/coord/geo/Region.js","webpack:///./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack:///./node_modules/echarts/lib/export/api.js","webpack:///./node_modules/echarts/lib/export/core.js","webpack:///./src/views/Cass/Datanalysis/components/caserecord.vue?40cf","webpack:///./src/components/public/cSteps/cStep/cStep.vue?7e5e","webpack:///./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack:///./node_modules/echarts/lib/processor/dataFilter.js","webpack:///./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack:///./node_modules/echarts/lib/chart/helper/pieHelper.js","webpack:///./node_modules/echarts/lib/chart/pie/PieView.js","webpack:///./node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js","webpack:///./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack:///./node_modules/echarts/lib/processor/negativeDataFilter.js","webpack:///./node_modules/echarts/lib/chart/pie/install.js","webpack:///./src/components/public/navTitle/navTitle.vue?e90c","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/echarts/lib/component/axis/AxisView.js","webpack:///./node_modules/echarts/lib/scale/Ordinal.js","webpack:///./node_modules/echarts/lib/scale/Time.js","webpack:///./node_modules/echarts/lib/scale/Log.js","webpack:///./node_modules/echarts/lib/coord/scaleRawExtentInfo.js","webpack:///./node_modules/echarts/lib/coord/axisHelper.js","webpack:///./node_modules/echarts/lib/data/helper/SeriesDataSchema.js","webpack:///./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack:///./node_modules/echarts/lib/coord/Axis.js","webpack:///./node_modules/echarts/lib/label/labelGuideHelper.js","webpack:///./node_modules/echarts/lib/scale/Interval.js","webpack:///./node_modules/echarts/lib/data/OrdinalMeta.js","webpack:///./src/views/Cass/Datanalysis/datanalysis/datanalysis.vue?284d","webpack:///./src/views/Cass/Datanalysis/components/caserecord.vue?b80f","webpack:///./src/views/Cass/Datanalysis/components/caserecord.vue","webpack:///./src/views/Cass/Datanalysis/datanalysis/datanalysis.vue?2b51","webpack:///./src/views/Cass/Datanalysis/datanalysis/datanalysis.vue","webpack:///./node_modules/echarts/lib/scale/helper.js","webpack:///./node_modules/echarts/lib/legacy/getTextRect.js","webpack:///./node_modules/echarts/lib/util/vendor.js","webpack:///./node_modules/echarts/lib/layout/barGrid.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./src/views/Cass/Datanalysis/datanalysis.vue?cf6a","webpack:///./src/views/Cass/Datanalysis/datanalysis.vue?0149","webpack:///./src/views/Cass/Datanalysis/datanalysis.vue?4b87","webpack:///./src/views/Cass/Datanalysis/datanalysis.vue","webpack:///./src/components/public/navTitle/navTitle.vue?dcb1","webpack:///./src/components/public/navTitle/navTitle.vue?286a","webpack:///./src/components/public/navTitle/navTitle.vue","webpack:///./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack:///./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack:///./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack:///./node_modules/echarts/lib/component/axisPointer/install.js","webpack:///./node_modules/echarts/lib/data/helper/createDimensions.js","webpack:///./node_modules/echarts/lib/data/DataDiffer.js","webpack:///./node_modules/echarts/lib/data/SeriesData.js","webpack:///./src/views/Cass/Datanalysis/components/pieTree.ts","webpack:///./src/views/Cass/Datanalysis/components/templateprogress.vue?c837","webpack:///./src/views/Cass/Datanalysis/components/templateprogress.vue","webpack:///./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack:///./src/components/public/dataStatistics/dataStatistics.vue?e8ba","webpack:///./src/components/public/dataStatistics/dataStatistics.vue","webpack:///./src/components/public/cCell/cCell.vue?578c","webpack:///./src/components/page/person/components/effcoll.vue?089f","webpack:///./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack:///./node_modules/echarts/lib/data/SeriesDimensionDefine.js","webpack:///./src/views/Cass/Datanalysis/components/casstable.vue?d577","webpack:///./src/views/Cass/Datanalysis/components/templateprogress.vue?2777","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./src/components/public/cSteps/cSteps.vue?888b","webpack:///./src/views/Cass/Datanalysis/components/caseeffect.vue?3afe","webpack:///./src/views/Cass/Datanalysis/components/caseeffect.vue","webpack:///./src/components/page/person/components/effcoll.vue?d085","webpack:///./src/util/class/effcoll.ts","webpack:///./src/components/page/person/components/effcoll.vue?31b3","webpack:///./src/components/page/person/components/effcoll.vue","webpack:///./src/components/public/dataStatistics/dataStatistics.vue?d2bc","webpack:///./node_modules/@element-plus/icons-vue/dist/es/delete.mjs","webpack:///./node_modules/echarts/lib/scale/Scale.js","webpack:///./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack:///./node_modules/echarts/lib/label/LabelManager.js","webpack:///./node_modules/echarts/lib/label/installLabelLayout.js","webpack:///./node_modules/zrender/lib/canvas/Layer.js","webpack:///./node_modules/zrender/lib/canvas/Painter.js","webpack:///./node_modules/echarts/lib/renderer/installCanvasRenderer.js","webpack:///./src/components/page/person/dialectical.vue?3216","webpack:///./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack:///./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack:///./node_modules/echarts/lib/component/legend/LegendModel.js","webpack:///./node_modules/echarts/lib/component/helper/listComponent.js","webpack:///./node_modules/echarts/lib/component/legend/LegendView.js","webpack:///./node_modules/echarts/lib/component/legend/legendFilter.js","webpack:///./node_modules/echarts/lib/component/legend/legendAction.js","webpack:///./node_modules/echarts/lib/component/legend/installLegendPlain.js","webpack:///./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack:///./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack:///./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack:///./node_modules/echarts/lib/component/legend/installLegendScroll.js","webpack:///./node_modules/echarts/lib/component/legend/install.js"],"names":["layout","gridModel","axisModel","opt","grid","coordinateSystem","axis","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","position","axisPosition","axisDim","dim","rect","getRect","rectBound","x","width","y","height","idx","left","right","top","bottom","onZero","axisOffset","get","posBound","onZeroCoord","toGlobalCoord","dataToCoord","Math","max","min","rotation","PI","dirMap","labelDirection","tickDirection","nameDirection","labelOffset","labelInside","labelRotate","z2","isCartesian2DSeries","seriesModel","findAxisModels","axisModelMap","xAxisModel","yAxisModel","v","key","axisType","replace","getReferringComponents","models","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","props","title","default","label","isbetween","type","Boolean","tip","setup","__props","_ctx","_cache","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","$slots","_toDisplayString","_createCommentVNode","__exports__","render","$props","$setup","$data","$options","_component_el_col","_resolveComponent","_component_el_row","_createVNode","_withCtx","span","_createTextVNode","code","onClick","$event","select","_Fragment","_renderList","charCodeArr","e","i","_","defineComponent","name","emits","components","String","emit","toRefs","findPointFromSeries","finder","ecModel","point","seriesIndex","getSeriesByIndex","data","getData","dataIndex","el","getItemGraphicEl","coordSys","getTooltipPosition","dataToPoint","isStacked","baseAxis","getBaseAxis","valueAxis","getOtherAxis","valueAxisDim","baseAxisDim","baseDataOffset","baseDim","mapDimension","stackedData","getCalculationInfo","getValues","dimensions","getBoundingRect","clone","applyTransform","transform","$","$reduce","arrayMethodIsStrict","CHROME_VERSION","IS_NODE","STRICT_METHOD","CHROME_BUG","target","proto","forced","reduce","callbackfn","length","arguments","this","undefined","inner","each","register","api","handler","node","zr","getZr","records","initGlobalListeners","record","useHandler","eventType","cb","on","dis","makeDispatchAction","dispatchAction","dispatchTooltipFinally","pendings","initialized","doEnter","onLeave","actuallyPayload","showLen","showTip","hideLen","hideTip","currTrigger","payload","pendingList","push","unregister","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","result","fetch","fetchers","cartesian2d","set","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","geo","parallel","parallelModel","getComponent","slice","parallelAxisIndex","axisIndex","index","getCoordSysDimDefs","coordSysInfo","coordSysDimDefs","registeredCoordSys","CoordinateSystem","dimInfo","getDimensionsInfo","injectOrdinalMeta","dimInfoList","createInvertedIndices","hasNameEncode","dimIndex","coordDim","categoryAxisModel","ordinalMeta","getOrdinalMeta","otherDims","itemName","createSeriesData","sourceRaw","source","sourceManager","getSourceManager","isOriginalSource","getSource","sourceFormat","useEncodeDefaulter","encodeDefaulter","createDimensionOptions","coordDimensions","generateCoord","encodeDefine","getEncode","canOmitUnusedDimensions","schema","store","getSharedDataStore","stackCalculationInfo","SeriesData","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","dimName","defaultDimValueGetter","hasItemOption","initData","sampleItem","firstDataNotNull","arr","tableData","arrlenth","tableType","tableList","ref","reactive","handleCaseNo","item","row","id","per","patnId","handleEffect","patName","watch","val","immediate","_component_el_table_column","_component_el_table","style","scope","_createBlock","prop","$index","src","_unref","ImgUrlFix","alt","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_99","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_107","_hoisted_108","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_component_el_popover","_component_el_option","_component_el_select","_component_el_input","_component_groupOfLabel","_component_el_radio_button","_component_el_radio_group","_component_el_button","_component_medic","_component_fvia","_component_ll","_component_el_dialog","_component_effcoll","_directive_loading","_resolveDirective","synDiff","synDiffName","modelValue","dialogVisible2","onClose","footer","_withDirectives","onConfirm","disabled","confirmBtnDisabled","loading","confirmBtnLoading","_vShow","readonly","dxName","dxCode","alias","icdName","icdCode","placement","trigger","reference","redenrIcdJsonObject","sex","maxAge","minAge","dep","content","weight","isShowillustrate2","illustrate","synDiffCode","filterable","placeholder","onChange","synDiffCodeChangeHandle","state","dsSynDiff","value","synDiffAlias","maxlength","labelStr","groupOfLabel","isLock","modelModifiers","trim","autosize","minRows","maxRows","mainPoints","analysis","treatRuleCode","dsTreatRuleChangeHandle","dsTreatRule","rx","fjName","showWhat","fill","usage","directionType","factory","factoryList","drugProduct","changeFactorHandle","drugData","getnewMedic","isStdDurg","isWide","drugType","onUpdateHandle","medicUpdateHandle","origiDrugData","fviaUpdateHandle","getnewLl","ll","llUpdateHandle","pageId","rx2nd","args","editEffcollHandle","effcollDate","effcollDateSelect","provenance","author","dialogVisible","tocpicDialogVisible","dialecticalID","CloseBold","effcoll","medic","fvia","Object","Number","useStore","t","SynDiff","drugRxType","rxType","drug","bingzongIndex","accompanyingSymptoms","list","icdJsonObject","forEach","join","assign","JSON","parse","stringify","_loading","reSynDiff","re","pbFn","checkSynDiff","flag","ElNotification","message","msg","duration","saveSynDiff","then","r","catch","err","getDiseaseSynDiffExplanation","explanation","treatRuleName","getDefaultMethod","queryString","defaultMethod","druglist","len","splice","synDiffDrugList","fjbDrugList","fjbDrug","diffDrugToFjbDrug","drugSort","fjbDrugObj","fjType","sort","drugConvertList","szDrugList","accompanyingSymptom","accompanyingSymptomsDrug","szDrugObj","tem","func","lee_sort","synDiffDrug","fjbDrugToDiffDrug","temp","map","NewGetDrugConversionToFactoryV2","organizationId","organization","fjDetails","lostDrugList","drugLostList","lostDrug","drugName","Set","str","ElMessageBox","confirm","confirmButtonText","cancelButtonText","console","error","getID","cassDrugListAddAttribute","tPharmacy","getSynDiff","_times","Date","getTime","tt","header","firsttitle","secondtitle","propsecondtitle","showCaseBack","AxisModelCommonMixin","prototype","getNeedCrossZero","option","scale","getCoordSysModel","prepareLayoutList","input","rawItem","defaultAttr","ignore","getComputedTransform","localRect","isAxisAligned","minMargin","margin","globalRect","obb","labelLine","priority","layoutOption","computedLayoutOption","axisAligned","shiftLayout","xyDim","sizeDim","minBound","maxBound","balanceShift","a","b","delta","lastPos","adjusted","shifts","totalShifts","shift","shiftList","minGap","maxGap","first","last","updateMinMaxGap","squeezeGaps","takeBoundsGap","squeezeWhenBailout","gapThisBound","gapOtherBound","moveDir","moveFromMaxGap","remained","start","end","maxSqeezePercent","gaps","totalGaps","prevItemRect","gap","squeezePercent","abs","movement","dir","moveForEachLabel","ceil","shiftLayoutOnX","leftBound","rightBound","shiftLayoutOnY","topBound","bottomBound","hideOverlap","labelList","displayedLabels","hideEl","emphasisState","ensureState","labelItem","copy","overlapped","j","existsTextCfg","intersect","attr","labelGuideIgnore","_withScopeId","n","_pushScopeId","_popScopeId","direction","description","assistLabel","strpsProp","inject","active","provide","_normalizeStyle","dataId","isSimplyType","medicineRadio","dataLoading","listLoading","startval","changeTimeToUse","split","endval","initDate","dateValue","emrList","emrData","curAutor","userName","computed","userInfo","B_RealName","selectTree","level","ElLoading","service","lock","text","background","saveClinicalSeminarEmr","grapaId","mdtrt_no","patn_id","parentId","close","treeValue","clinicalSeminarTree","treeData","caseList","labelTip","recipeData","stepActive","drugUeWayData","drugUeWayList","qidData","qidList","selectStep","getDetail","async","getEmrList","emrDetailData","getEmrDetail","cseIsDeleted","getTmplInfo","getTmplInfoByid","synDiffId","mdtrt_date","emrExpand","atddrName","wm_diagsArr","tcm_disesArr","tcm_dises","tcm_dise_name","tcm_dise_code","wm_diags","wm_diag_name","wm_diag_code","tcm_symp_code","prnp_trt_code","drord","emrType","getClinicalSeminarTree","isSelectAll","tmplList","obj","synList","synDiffList","obj1","children","QueryStreamlineData","getQueryStreamline","startDate","endDate","times","mdtrtDate","AssistLabel","floor","changeEmrType","updateEmrType","_component_el_space","_component_el_aside","_component_el_tree_select","_component_el_header","_component_el_main","_component_el_container","plain","pickerGroup","cSteps","cStep","onSelect","tcmDiseName","tcmSympName","curEff","clearable","onNodeClick","emrDetail","_super","TooltipModel","_this","apply","dependencies","defaultOption","z","show","showContent","triggerOn","alwaysShowContent","displayMode","renderMode","confine","showDelay","hideDelay","transitionDuration","enterable","backgroundColor","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","borderRadius","borderWidth","padding","extraCssText","axisPointer","animation","animationDurationUpdate","animationEasingUpdate","crossStyle","color","textStyle","fontSize","Component","shouldTooltipConfine","tooltipModel","confineOption","testStyle","styleProps","env","domSupported","document","documentElement","TRANSFORM_VENDOR","TRANSITION_VENDOR","toCSSVendorPrefix","styleVendor","styleProp","indexOf","toLowerCase","getComputedStyle","stl","currentStyle","defaultView","CSS_TRANSITION_VENDOR","CSS_TRANSFORM_VENDOR","gCssText","transform3dSupported","mirrorPos","pos","assembleArrow","borderColor","arrowPosition","rotateDeg","arrowPos","arrowSize","round","positionStyle","transformStyle","rotateRadian","arrowWH","rotatedWH","cos","sin","arrowOffset","SQRT2","borderStyle","styleCss","assembleTransition","onlyFade","transitionCurve","transitionOption","transitionText","transformSupported","assembleTransform","toString","x0","toFixed","y0","is3d","translate","assembleFont","textStyleModel","cssText","getTextColor","getFont","assembleCssText","enableTransition","getModel","boxShadow","borderName","camelCase","makeStyleCoord","out","appendToBody","zrX","zrY","zrPainter","painter","zrViewportRoot","getViewportRoot","body","viewportRootOffset","getViewportRootOffset","offsetLeft","offsetTop","getWidth","getHeight","TooltipHTMLContent","container","_show","_styleCoord","_enterable","_firstShow","_longHide","wxa","createElement","domBelongToZr","_zr","_appendToBody","appendChild","_container","self","onmouseenter","clearTimeout","_hideTimeout","_inContent","onmousemove","window","event","dispatch","onmouseleave","hideLater","_hideDelay","update","domStyle","_moveIfResized","className","nearPointColor","_longHideTimeout","styleCoord","innerHTML","display","setContent","markers","arrow","parentNode","childNodes","arrowEl","setEnterable","getSize","offsetWidth","offsetHeight","moveTo","style_1","transforms","ratioX","ratioY","hide","visibility","opacity","willChange","setTimeout","time","isShow","dispose","removeChild","TooltipRichContent","markupStyleCreator","remove","rich","richTextStyles","lineHeight","textShadowColor","verticalAlign","align","propName","add","bounding","shadowOuterSize","calcShadowOuterSize","mathMaxWith0","markRedraw","proxyRect","Rect","shape","TooltipView","init","getDom","_renderMode","_tooltipContent","group","removeAll","_tooltipModel","_ecModel","_api","_alwaysShowContent","tooltipContent","_initGlobalListener","_keepShow","globalListener","_tryShow","_hide","_lastX","_lastY","self_1","_refreshUpdateTimeout","isDisposed","manuallyShowTip","dataByCoordSys","_lastDataByCoordSys","from","uid","_ticket","cmptRef","findComponentReference","offsetX","offsetY","positionDefault","tooltip","tooltipConfig","tooltipOption","_manuallyAxisShowTip","pointInfo","cx","cy","findHover","manuallyHideTip","coordSysAxesInfo","tooltipCascadedModel","buildTooltipModel","getItemModel","model","_showAxisTooltip","seriesDispatcher_1","cmptDispatcher_1","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","delay","_showTimout","globalTooltipModel","singleTooltipModel","cbParamsList","articleMarkup","blocks","noHeader","markupTextArrLegacy","itemCoordSys","dataByAxis","axisItem","axisValue","axisValueLabel","seriesDataIndices","valueLabelOpt","axisSectionMarkup","sortBlocks","idxItem","series","dataIndexInside","cbParams","getDataParams","axisId","axisHelper","marker","makeTooltipMarker","seriesTooltipResult","formatTooltip","frag","valueFormatter","reverse","positionExpr","orderMode","builtMarkupText","unshift","blockBreak","allMarkupText","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","random","dispatcher","ecData","dataModel","dataType","tooltipTrigger","params","markupText","asyncTicket","getRawIndex","tooltipOpt","formatter","tooltipModelCascade","cmpt","componentMainType","componentIndex","subTooltipModel","defaultHtml","formatterParams","html","nearPoint","_getNearestPoint","useUTC","params0","isTimeAxis","format","callback","cbTicket","tooltipDataParams","viewWidth","viewHeight","contentSize","vAlign","viewSize","boxLayoutPosition","layoutRect","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","lastCbParamsList","_cbParamsList","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","newIdxItem","seriesIdx","lastCbParams","modelCascade","defaultTooltipOption","resultModel","Model","gapH","gapV","size","domWidth","domHeight","offset","rectWidth","rectHeight","queryOptionMap","keys","queryResult","useDefault","enableAll","enableNone","view","getViewOfComponentModel","traverse","subEl","registers","install","registerComponentModel","registerComponentView","registerAction","DimensionUserOuput","encode","dimRequest","_encode","_schema","fullDimensions","_getFullDimensionNames","_cachedDimNames","makeOutputDimensionNames","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","userOutputEncode","dimItem","getDimensionInfo","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","getDimensionIndex","defaultTooltip","otherDim","encodeArr","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","concat","dataDimIndicesOnCoord","storeDimIndex","encodeLabel","encodeTooltip","userOutput","hasOwnProperty","getDimensionTypeByAxis","dimType","createList","dataStack","isDimensionStacked","enableDataStack","getStackedDimension","createScale","dataExtent","setExtent","mixinAxisModelCommonMethods","createTextStyle","opts","EPSILON","isAroundEqual","contain","points","w","p","p2","windingLine","p0","TMP_TRANSFORM","transformPoints","updateBBoxFromPoints","projection","project","isFinite","centroid","signedArea","x1","y1","Region","setCenter","center","_center","getCenter","calcCenter","GeoJSONPolygonGeometry","exterior","interiors","GeoJSONLineStringGeometry","GeoJSONRegion","geometries","cp","call","largestGeo","largestGeoSize","_rect","Infinity","BoundingRect","coord","loopGeo","k","transformTo","aspect","calculateTransform","interior","cloneShallow","newRegion","GeoSVGRegion","elOnlyForCalculate","_elOnlyForCalculate","mat","matrix","isGeoSVGGraphicRoot","getLocalTransform","parent","decode","json","UTF8Encoding","jsonCompressed","encodeScale","UTF8Scale","features","feature","geometry","encodeOffsets","coordinates","decodeRing","decodeRings","rings","c","coordinate","prevX","prevY","charCodeAt","parseGeoJSON","geoJson","nameProperty","featureObj","properties","region","extendComponentModel","extend","registerClass","extendComponentView","View","extendSeriesModel","Series","extendChartView","Chart","installLabelLayout","PI2","RADIAN","getViewRect","getBoxLayoutParams","getBasicPieLayout","viewRect","radius","r0","pieLayout","seriesType","eachSeriesByType","valueDim","_a","startAngle","minAngle","validDataCount","isNaN","sum","getSum","unitRadian","clockwise","roseType","stillShowZeroSum","extent","getDataExtent","restAngle","valueSumLargerThanMinAngle","currentAngle","setLayout","angle","setItemLayout","NaN","endAngle","angle_1","layout_1","getItemLayout","layout_2","dataFilter","reset","legendModels","findComponents","mainType","filterSelf","getName","isSelected","adjustSingleSide","viewLeft","viewTop","farthestX","labelAlignTo","dx","linePoints","recalculateX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","dy","rA","rA2","sqrt","newX","len2","deltaX","newTargetWidth","targetTextWidth","constrainTextWidth","items","topSemi","maxY","bottomSemi","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","MAX_VALUE","rightmostX","isPositionCenter","labelStyleWidth","labelDistance","edgeDistance","bleedMargin","isAlignToEdge","paddingH","extraPaddingH","realTextWidth","dist","availableWidth","forceRecalculate","textRect","bgColor","overflow","oldOuterWidth","oldHeight","match","setStyle","innerRect","availableInnerWidth","newWidth","unconstrainedWidth","newRect","sectorShape","pieLabelLayout","hasLabelRotate","minShowLabelRadian","getLayout","setNotShow","isLabelShown","states","sector","getTextContent","getTextGuideLine","itemModel","labelModel","labelPosition","labelLineModel","labelLineLen","labelLineLen2","textX","textY","textAlign","midAngle","nx","ny","isLabelInside","x2","y2","x3","y3","rotate","radialAngle","rad","atan2","isDown","selectState","minTurnAngle","maxSurfaceAngle","surfaceNormal","Point","setTextConfig","inside","notShowLabel","setShape","__hostTarget","textGuideLineConfig","anchor","getSectorCornerRadius","zeroIfNull","cornerRadius","dr","cr","PiePiece","setTextContent","updateData","firstCreate","hostModel","emphasisModel","animationType","getShallow","ssr","scaleX","scaleY","isFrom","originX","originY","useStyle","getItemVisual","cursorStyle","_updateLabel","labelText","visualColor","visualOpacity","labelFetcher","labelDataIndex","inheritColor","defaultOpacity","defaultText","getFormattedLabel","removeTextGuideLine","polyline","setTextGuideLine","stroke","PieView","ignoreLabelLineUpdate","oldData","_data","count","s","_emptyCircleSector","getItemStyle","diff","piePiece","setItemGraphicEl","newIdx","oldIdx","off","execute","containPoint","itemLayout","createSeriesDataSimply","nameList","PieSeriesModel","legendVisualProvider","LegendVisualProvider","getRawData","_defaultLabelLine","mergeOption","getInitialData","valueList","seats","percent","$vars","labelLineNormalOpt","labelLineEmphasisOpt","emphasis","legendHoverLink","colorBy","minShowLabelAngle","selectedOffset","percentPrecision","alignTo","distanceToLabelLine","length2","smooth","lineStyle","itemStyle","borderJoin","showEmptyCircle","emptyCircleStyle","labelLayout","scaleSize","avoidLabelOverlap","animationDuration","animationTypeUpdate","animationEasing","PieSeries","negativeDataFilter","curValue","registerChartView","registerSeriesModel","registerLayout","registerProcessor","classof","global","module","exports","process","axisPointerClazz","AxisView","axisPointerClass","_doUpdateAxisPointerClass","updateAxisPointer","_axisPointer","_disposeAxisPointer","forceRender","Clazz","getAxisPointerClass","axisPointerModel","registerAxisPointerClass","clazz","OrdinalScale","setting","getSetting","OrdinalMeta","categories","_ordinalMeta","_extent","getOrdinal","rank","normalize","_getTickNumber","getRawOrdinalNumber","getTicks","ticks","getMinorTicks","splitNumber","setSortInfo","info","infoOrdinalNumbers","ordinalNumbers","ordinalsByTick","_ordinalNumbersByTick","ticksByOrdinal","_ticksByOrdinalNumber","tickNum","allCategoryLen","ordinalNumber","unusedOrdinal","ordinal","ticksByOrdinalNumber","tickNumber","ordinalNumbersByTick","getLabel","tick","isBlank","cateogry","unionExtentFromData","unionExtent","getApproximateExtent","isInExtentRange","calcNiceTicks","calcNiceExtent","Scale","Ordinal","bisect","lo","hi","mid","TimeScale","settings","_minLevelUnit","second","labelFormatter","isUTC","lang","interval","_interval","innerTicks","getIntervalTicks","_approxInterval","d","getFullYear","getMonth","getDate","minInterval","maxInterval","approxTickNum","scaleIntervalsLen","scaleIntervals","number","Interval","isUnitValueSame","unit","valueA","valueB","dateA","dateB","isSame","isSameYear","isSameMonth","isSameDay","isSameHour","isSameMinute","isSameSecond","isSameMilliSecond","getDateInterval","approxInterval","daysInMonth","getMonthInterval","APPROX_ONE_MONTH","getHourInterval","getMinutesAndSecondsInterval","isMinutes","getMillisecondsInterval","getFirstTimestampOfUnit","date","unitName","outDate","bottomUnitName","safeLimit","unitNames","iter","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","isDate","dateTime","notAdd","addLevelTicks","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","startTick","endTick","getterName","setterName","levelsTicks","currentLevelTicks","tickCount","lastLevelTickCount","primaryTimeUnit","nextPrimaryTimeUnit","levelTicksRemoveDuplicated","i_1","tickValue","targetTickNum","levelsTicksInExtent","maxLevel","Time","scaleProto","intervalScaleProto","roundingErrorFix","mathFloor","mathCeil","mathPow","pow","mathLog","log","LogScale","base","_originalScale","expandToNicedExtent","originalScale","originalExtent","getExtent","powVal","_fixMin","fixRoundingError","_fixMax","niceExtent","_niceExtent","fixMin","fixMax","originalVal","Log","ScaleRawExtentInfo","_prepareParams","_dataMin","_dataMax","isOrdinal","_isOrdinal","_needCrossZero","modelMinRaw","_modelMinRaw","_modelMinNum","parseAxisModelMinMax","modelMaxRaw","_modelMaxRaw","_modelMaxNum","_axisDataLen","getCategories","boundaryGap","boundaryGapArr","_boundaryGapInner","calculate","dataMin","dataMax","axisDataLen","boundaryGapInner","minFixed","maxFixed","determinedMin","_determinedMin","determinedMax","_determinedMax","modifyDataMinMax","minMaxName","DATA_MIN_MAX_ATTR","setDeterminedMinMax","DETERMINED_MIN_MAX_ATTR","freeze","frozen","ensureScaleRawExtentInfo","rawExtentInfo","minMax","getScaleExtent","scaleType","rawExtentResult","setBlank","barSeriesModels","isBaseAxisAndHasBarSeries_1","barWidthAndOffset","adjustedScale","adjustScaleForOverflow","axisExtent","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","inModel","extentInfo","isIntervalOrTime","setInterval","createScaleByModel","locale","getLocaleModel","getClass","ifAxisCrossZero","makeLabelFormatter","getLabelModel","categoryTickStart","tpl","getAxisRawValue","estimateLabelUnionRect","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","step","unrotatedSingleRect","getTextRect","singleRect","rotateTextRect","union","rotateRadians","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","dataDimMap","mapDimensionsAll","dataDim","dimTypeShort","float","int","SeriesDataSchema","_dimOmitted","dimensionOmitted","_fullDimCount","fullDimensionCount","_updateDimOmitted","isDimensionOmitted","_dimNameMap","ensureSourceDimNameMap","getSourceDimensionIndex","getSourceDimension","dimensionsDefine","makeStoreSchema","dimCount","willRetrieveDataByName","makeHashStrict","shouldOmitUnusedDimensions","dimHash","dims","fullDimIdx","seriesDimIdx","property","seriesDimDef","sourceDimDef","isCalculationCoord","hash","seriesLayoutBy","startIndex","name_1","appendCalculationDimension","dimDef","isSeriesDataSchema","createDimNameMap","dimsDef","dataDimNameMap","dimDefItemRaw","userDimName","innerSource","dimNameMap","createAxisLabels","makeCategoryLabels","makeRealNumberLabels","createAxisTicks","tickModel","makeCategoryTicks","makeCategoryLabelsActually","labels","labelCategoryInterval","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","formattedLabel","rawLabel","cache","autoInterval","calculateCategoryInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","font","dw","dh","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","getRotate","isHorizontal","categoryInterval","onlyTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tickObj","NORMALIZED_EXTENT","Axis","onBand","inverse","containData","getPixelPrecision","clamp","fixExtentWithBands","coordToData","pointToData","getTicksCoords","getTickModel","ticksCoords","tickVal","alignWithLabel","fixOnBandTicksCoords","getMinorTicksCoords","minorTickModel","minorTicks","minorTicksCoords","minorTicksGroup","minorTick","getViewLabels","getBandWidth","nTick","ticksLen","diffSize","crossLen","shift_1","ticksItem","littleThan","pop","CMD","DEFAULT_SEARCH_SPACE","getCandidateAnchor","distance","outPt","outDir","projectPointToArc","anticlockwise","ox","oy","tmp","d1","d2","projectPointToLine","limitToEnds","dx1","dy1","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","path","xi","yi","minDist","cmd","M","L","C","Q","A","ry","theta","dTheta","_x","R","Z","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelGuideConfig","searchSpace","candidates","labelRect","anchorPoint","targetTransform","targetInversedTransform","candidate","scaleAndAdd","boundingRect","toArray","limitTurnAngle","tmpArr","tmpProjPoint","fromArray","sub","len1","angleCos","dot","minTurnAngleCos","tan","limitSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","acos","newAngle","setLabelLineState","stateName","stateModel","isNormal","stateObj","styleObj","getLineStyle","buildLabelLinePath","lineTo","moveLen","midPoint0","midPoint2","midPoint1","bezierCurveTo","setLabelLineStyle","targetEl","statesModels","defaultStyle","normalModel","normal","showNormal","labelIgnoreNormal","stateShow","isLabelIgnored","stateProxy","showAbove","labelLineConfig","buildPath","getLabelLineStatesModels","labelLineName","roundNumber","IntervalScale","_intervalPrecision","thisExtent","parseFloat","other","getInterval","niceTickExtent","intervalPrecision","lastNiceTick","nextTick","prevTick","minorInterval","precision","dataNum","expandSize","setNiceExtent","uidBase","_needCollect","needCollect","_deduplication","deduplication","createByAxisModel","dedplication","category","_getOrCreateMap","parseAndCollect","_map","_component_nav_title","_component_picker_group","_component_el_form_item","_component_search","_component_el_form","_component_pinyinSelect","_component_data_statistics","_component_empty","_component_caserecord","showCase","secondLabel","inline","mrType","options","onSearchHandle","searchMethod","searchWord","keyword","placeholderText","btnText","selectFirstCode","codeFIrst","dataList","showCaseMethod","caseLoading","caseid","onEmitshowCase","emitshowCase","propcaseid","propcaseidVal","dialecticalVisible","recordLoading","tabsArr","cur","treeCur","bzName","bingliShow","caseeffectShow","caseeffectitem","diffStadata","totalScore","rxTypeList","tabInx","compArr","organizationSet","temList","isMutilDrugType","isAuthoritPackagingDrug","deep","getTabsName","getDiffMeth","gettreeId","getComp","emitshowCaseNo","dialecticalOnConfirm","emitshowEffect","getSynDiffComp","stime","etime","tmplId","drugStr","tmpl","qty","keyList","patnRemarks","effcollId","els","getSynDiffSta","pre","breadnav","onEmitshowNav","itemArr","conut","avgEff","parseInt","substring","cassTable","onEmitshowEffect","onEmitshowCaseNo","dialectical","onOnConfirm","caseeffect","dataStatistics","templateProgress","caserecord","pinyinSelect","navTitle","search","empty","nameArr","sameCount","sameAvgEff","parCount","parAvgEff","diffCount","diffAvgEff","version","getSearch","getAnalysis","firstLetter","Search","isIntervalOrLogScale","intervalScaleNiceTicks","getIntervalPrecision","fixExtent","increaseInterval","exp10","f","truncate","textEl","supportFloat32Array","Float32Array","Float32ArrayCtor","Array","createFloat32Array","arg","STACK_PREFIX","getSeriesStackId","getAxisKey","prepareLayoutBarSeries","seriesModels","isOnCartesian","getValueAxesMinGaps","barSeries","axisValues","cartesian","dimIdx","getStore","cnt","axisMinGaps","valuesInAxis","makeColumnLayout","seriesInfoList","bandWidth","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","isInLargeMode","barGap","barCategoryGap","axisKey","stackId","doCalBarWidthAndOffset","columnsMap","seriesInfo","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","stacks","maxWidth","minWidth","categoryGapPercent","columnCount","barGapPercent","autoWidth","column","finalWidth","lastColumn","widthSum","retrieveColumnLayout","columnLayoutInfo","columnOffset","columnWidth","createProgressiveLayout","plan","createRenderPlanner","valueDimIdx","baseDimIdx","drawBackground","stackResultDim","stacked","isValueAxisH","valueAxisStart","getValueAxisStart","isLarge","barMinHeight","stackedDimIdx","progress","largePoints","largeBackgroundPoints","largeDataIndices","coordLayout","master","bgSize","idxOffset","next","baseValue","baseCoord","startValue","startCoord","valueAxisHorizontal","pipelineContext","large","fails","METHOD_NAME","argument","method","_component_router_view","navlabel","secondNavLabel","bind","BaseAxisPointer","_dragging","animationThreshold","status","_axisModel","_axisPointerModel","_lastValue","_lastStatus","_group","handle","_handle","elOption","makeElOption","graphicKey","_lastGraphicKey","clear","moveAnimation","_moveAnimation","determineAnimation","doUpdateProps","updateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","updateMandatoryProps","_renderHandle","isCategoryAxis","useSnap","seriesDataCount","pointerOption","pointer","pointerEl","graphic","labelEl","updateLabelShowHide","updateHandleTransform","isInit","handleModel","cursor","draggable","onmousedown","_onHandleDragMove","drift","ondragend","_onHandleDragEnd","handleSize","throttle","_moveHandleToValue","getHandleTransProps","getHandleTransform","trans","_payloadInfo","stopAnimation","lastProp","_doDispatchAxisPointer","payloadInfo","cursorPoint","axesInfo","doClear","buildLabel","xy","wh","xDimIndex","animationModel","propsEqual","lastProps","newProps","equals_1","silent","zlevel","CartesianAxisPointer","axisPointerType","otherExtent","getCartesian","getGlobalExtent","pixelValue","elStyle","viewHelper","pointerShapeBuilder","layoutInfo","cartesianAxisHelper","labelMargin","currPosition","cursorOtherValue","tooltipOptions","line","targetShape","getAxisDimIndex","subPixelOptimize","shadow","AxisPointerModel","snap","triggerTooltip","link","shadowStyle","icon","AxisPointerView","globalAxisPointerModel","axisTrigger","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputPayload","showValueMap","updaters","showPointer","showTooltip","coordSysMap","coordSysKey","coordSysContainsPoint","axisInfo","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","mapper","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","noSnap","outputFinder","involveSeries","buildPayloadsBySeries","payloadBatch","snapToValue","minDiff","seriesNestestValue","dataIndices","getAxisTooltipData","nestestValue","indicesOfNearest","coordSysModel","modelHelper","coordSysItem","coordSysId","coordSysIndex","coordSysType","coordSysMainType","outputAxesInfo","valItem","useHandle","escapeConnect","highDownKey","lastHighlights","newHighlights","batchItem","toHighlight","toDownplay","notBlur","batch","axisName","registerPreprocessor","PRIORITY","PROCESSOR","STATISTIC","createDimensions","prepareSeriesDataSchema","sysDims","coordDimNameMap","resultList","getDimCount","dimensionsCount","omitUnusedDimensions","isUsingSourceDimensionsDef","encodeDef","encodeDefMap","indicesMap","getResultItem","dimDefItem","resultItem","displayName","dataDimsRaw","dataDims","validDataDims","resultDimIdxOrName","resultDimIdx","applyDim","availDimIdx","sysDimItemRaw","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItem","sysDimItemDimsDefItem","generateCoordCount","fromZero","extra","ifNoNameFillWithCoordName","item0","item1","genCoordDimName","Must","seriesName","removeDuplication","duplicationMap","dimOriginalName","optDimCount","dimensionsDetectedCount","mapData","dataIndexMapValueLength","valNumOrArrLengthMoreThan2","defaultKeyGetter","prepareInvertedIndex","getId","getIdNameFromStore","normalizeDimensions","transferProperties","cloneListForMapAndSample","makeIdFromName","DataDiffer","oldArr","newArr","oldKeyGetter","newKeyGetter","context","diffMode","_old","_new","_oldKeyGetter","_newKeyGetter","_diffModeMultiple","_add","_update","updateManyToOne","_updateManyToOne","updateOneToMany","_updateOneToMany","updateManyToMany","_updateManyToMany","_remove","_executeOneToOne","newDataIndexMap","oldDataKeyArr","newDataKeyArr","_initIndexMap","oldKey","newIdxMapVal","newIdxMapValLen","_performRestAdd","_executeMultiple","oldDataIndexMap","oldIdxMapVal","oldIdxMapValLen","newKey","idxMapValLen","keyArr","keyGetterName","cbModeMultiple","idxMapVal","isObject","CtorInt32Array","Int32Array","ID_PREFIX","INDEX_NOT_FOUND","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","dimensionsInput","_nameList","_idList","_visual","_layout","_itemVisuals","_itemLayouts","_graphicEls","_approximateExtent","_calculationInfo","TRANSFERABLE_METHODS","CHANGABLE_METHODS","DOWNSAMPLE_METHODS","assignStoreDimIdx","dimensionInfos","dimensionNames","invertedIndicesMap","needsHasOwn","emptyObj","dimInfoInput","dimensionInfo","SeriesDimensionDefine","dimensionName","_nameDimIdx","itemId","_idDimIdx","_dimInfos","_initGetDimensionInfo","_invertedIndicesMap","dimIdxToName_1","_dimIdxToName","getDimension","_recognizeDimIndex","_getDimInfo","_getStoreDimIndex","getDimensionsOnCoord","_dimSummary","dimensionsSummary","_store","DataStore","provider","_nameRepeatCount","_doInit","appendData","range","appendValues","values","names","shouldMakeIdFromName","_shouldMakeIdFromName","_updateOrdinalMeta","sourceIdx","collectOrdinalMeta","getProvider","fillStorage","idList","isFormatOriginal","pure","sharedDataItem","dataItem","getItem","setApproximateExtent","rawIndex","_getCategory","getByRawIndex","rawIdx","getIndices","getMedian","hasValue","indexOfName","indexOfRawIndex","rawIndexOf","invertedIndices","maxDistance","ctx","fCtx","dimIndices","filter","selectRange","innerRange","mapArray","ctxCompat","modify","downSample","dimension","rate","sampleValue","sampleIndex","lttbDownSample","valueDimension","getRawDataItem","otherList","thisList","getVisual","visual","setVisual","kvObj","itemVisual","hasItemVisual","ensureUniqueItemVisual","itemVisuals","setItemVisual","clearAllVisual","merge","clearItemLayouts","eachItemGraphicEl","wrapMethod","methodName","injectFunction","originalMethod","__wrappedMethods","res","internalField","original","nameDimIdx","idDimIdx","nameRepeatCount","nmCnt","echart","TooltipComponent","PieChart","CanvasRenderer","LabelLayout","echarts","onMounted","myChart","subtext","subtextStyle","fontWeight","LinearGradient","setOption","param","ref_key","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","rawData","containName","dataWithEncodedVisual","LegendComponent","charts","stateTitle","colorList","cCell","collect","seriesInvolved","collectAxesInfo","collectSeriesInfo","linksOption","linkGroups","getCoordinateSystems","axisPointerEnabled","makeKey","axesInfoInCoordSys","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","cross","tooltipAxes","baseAxes","otherAxes","fromTooltip","axisPointerShow","isHandleTrigger","makeAxisPointerModel","groupIndex","getLinkGroupIndex","tooltipAxisPointerModel","fields","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","eachSeries","seriesTooltipTrigger","seriesTooltipShow","getAxis","linkOption","checkPropInLink","linkPropValue","axisPropValue","fixValue","getAxisInfo","getAxisPointerModel","aCallable","toObject","IndexedObject","lengthOfArrayLike","$TypeError","TypeError","createMethod","IS_RIGHT","that","argumentsLength","memo","O","propcaseeffectitem","radio","dialogeffectVisible","effectData","topicData","checkboxSelect","getCisw","getQuestionnaire","submitTopic","effcollforms","submitOption","selected","Score","_component_el_radio","_component_el_checkbox","_component_el_checkbox_group","_directive_key","gutter","selectName","_component_delete","_component_el_icon","_component_el_popconfirm","_component_CloseBold","radio1","radio2","radio3","radio4","addTopicHandle","effcollList","effcollType","ALPHA","removeEffcollOption","addEffcollOptionHandle","deleteTopicHandle","EffcollOption","constructor","score","serialNum","topicId","Effcoll","enabled","required","respondent","useCat","Delete","ElMessage","saveTopicList","topicListId","topicList","getTopicList","_sfc_main","viewBox","xmlns","_sfc_render","_delete","_setting","_isBlank","dimensionDefineList","byIndex","stackedCoordDimension","isLegacyDimensionsInput","stackedByDimInfo","stackedDimInfo","stackResultDimension","stackedOverDimension","mayStack","stackedDimCoordDim_1","stackedDimType","stackedDimCoordIndex_1","stackedOverDimensionDefine","stackResultDimensionDefine","ensureCalculationDimension","stackedDimension","stackedByDimension","isStackedByIndex","stackedDim","targetDim","cloneArr","newPoints","prepareLayoutCallbackParams","hostEl","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","Transformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","labelStyle","textConfig","labelTransform","setLocalTransform","host","labelGuide","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","child","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","local","needsUpdateLabelLine","guideLine","labelLayoutStore","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","animationEnabled","isAnimationEnabled","forceLabelAnimation","_updateLabelLine","_animateLabels","visualStyle","visualType","invisible","disableLabelAnimation","layoutStore","oldLayout","prevStates","oldLayoutSelect","oldLayoutEmphasis","valueAnimation","oldOpacity","layoutSelect","layoutEmphasis","newLayout","strokePercent","getLabelManager","registerUpdateLifecycle","labelManager","updatedSeries","getViewOfSeriesModel","createDom","dpr","newDom","platform","createCanvas","newDomStyle","setAttribute","Layer","dom","motionBlur","lastFrameAlpha","virtual","config","incremental","maxRepaintRectCount","__dirty","__firstTimePaint","__used","__drawIndex","__startIndex","__endIndex","__prevStartIndex","__prevEndIndex","util","onselectstart","getElementCount","afterBrush","initContext","getContext","setUnpainted","createBackBuffer","domBack","ctxBack","createRepaintRects","displayList","prevList","hasIntersections","mergedRepaintRects","full","pendingRect","addRectToMergePool","isZero","isMerged","minDeltaArea","bestRectToMergeIdx","mergedRect","pendingRect_1","aArea","bArea","pendingArea","deltaArea","shouldPaint","shouldBePainted","prevRect","__isRendered","getPrevPaintRect","curRect","getPaintRect","__zr","_paintRects","debugGetPaintRects","resize","clearAll","clearColor","repaintRects","haveMotionBLur","globalCompositeOperation","drawImage","clearRect","clearColorGradientOrPattern","__canvasGradient","dirty","__painter","refresh","save","fillStyle","fillRect","restore","globalAlpha","Eventful","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","isLayerValid","layer","__builtin__","createRoot","domRoot","CanvasPainter","root","storage","_zlevelList","_prevDisplayList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","nodeName","toUpperCase","_opts","devicePixelRatio","_singleCanvas","rootStyle","zlevelList","layers","rootCanvas","_width","_height","mainLayer","_domRoot","getType","isSingleCanvas","viewportRoot","paintAll","getDisplayList","_redrawId","_paintList","_backgroundColor","useDirtyRect","refreshHover","_paintHoverList","hoverLayer","_hoverlayer","inHover","__inHover","getLayer","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_doPaintList","finished","needsRefreshHover","_compositeManually","eachLayer","requestAnimationFrame","eachBuiltinLayer","layerList","zi","_loop_1","this_1","useTimer","now","startTime","firstEl","notClear","repaint","repaintRect","allClipped","prevEl","_doPaintEl","dTime","prevElClipPaths","beginPath","clip","draw","currentLayer","isLast","paintRect","setPrevPaintRect","insertLayer","layersMap","prevLayer","prevDom","nextSibling","insertBefore","firstChild","eachOtherLayer","getLayers","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","setBackgroundColor","configLayer","layerConfig","_zlevel","delLayer","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","renderToCanvas","registerPainter","AxisBuilder","handleAutoShown","transformGroup","updateTransform","_transformGroup","hasBuilder","builders","getGroup","innerTextLayout","axisRotation","textRotation","textVerticalAlign","rotationDiff","makeAxisEventDataBase","eventData","componentType","isLabelSilent","axisLine","shown","lineCap","strokeContainThreshold","lineWidth","anid","arrows","symbolWidth_1","symbolHeight_1","symbol","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","axisNameAvailableWidth","nameLocation","gapSignal","isNameLocationCenter","nameRotation","endTextLayout","textFont","truncateOpt","ellipsis","nameTruncateMaxWidth","componentModel","__fullText","targetType","decomposeTransform","textPosition","textRotate","onLeft","tickEls","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","lastTick","ignoreEl","isTwoLabelOverlapped","current","firstRect","nextRect","mRotationBack","createTicks","tickTransform","tickEndCoord","tickLineStyle","anidPrefix","tickCoord","tickEl","autoBatch","lineStyleModel","minorTickLineStyle","minorTicksEls","axisLabelShow","labelRotation","rawCategoryData","triggerEvent","itemLabelModel","rawCategoryItem","textColor","tickIndex","buildElStyle","styleModel","getAreaStyle","buildLabelElOption","labelPos","getValueLabel","paddings","confineInContainer","params_1","axisDimension","seriesData","dataParams","getTransformedPosition","buildCartesianSingleLabelElOption","textLayout","makeLineShape","p1","makeRectShape","getDefaultSelectorOptions","LegendModel","layoutMode","ignoreSize","parentModel","mergeDefaultAndTheme","_updateSelector","selector","optionUpdated","_updateData","legendData","hasSelected","potentialData","availableNames","eachRawSeries","isPotential","isSeriesFiltered","_availableNames","selectedMode","unSelect","toggleSelected","allSelect","inverseSelect","getOrient","orient","itemGap","itemWidth","itemHeight","symbolRotate","symbolKeepAspect","inactiveColor","inactiveBorderColor","inactiveBorderWidth","borderCap","borderDashOffset","borderMiterLimit","inactiveWidth","cap","dashOffset","miterLimit","selectorLabel","fontFamily","selectorPosition","selectorItemGap","selectorButtonGap","makeBackground","curry","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","legendModel","isFirstRender","resetInner","itemAlign","renderInner","positionInfo","viewportSize","maxSize","mainRect","layoutInner","_backgroundEl","contentGroup","legendDrawnMap","selectMode","excludeSeriesId","legendItemModel","g","newline","getSeriesByName","lineVisualStyle","legendIcon","itemGroup","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","colorArr","_createSelector","selectorGroup","selectorItem","onclick","emphasisLabelModel","itemVisualStyle","drawType","visualDrawType","iconRotate","legendIconType","getLegendStyle","getLegendIcon","getDefaultLegendIcon","hitRect","itemTooltipOption","eachChild","__legendDataIndex","contentRect","contentPos","selectorRect","selectorPos","orientIdx","hw","yx","iconType","handleCommonProps","propVal","itemStyleModel","iconBrushType","lastIndexOf","decalStyle","decal","legendLineModel","visualHasBorder","symboType","setOrigin","dataName","isUseHoverLayer","legendFilter","filterSeries","legendSelectActionHandler","selectedMap","isToggleSelect","eachComponent","isItemSelected","installLegendAction","SERIES_FILTER","registerSubTypeDefaulter","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","inputPositionParams","mergeAndNormalizeLayoutParams","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","horizontal","vertical","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","raw","WH","XY","ScrollableLegendView","_currentIndex","_containerGroup","_controllerGroup","removeClipPath","__rectSize","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","processMaxSize","_layoutContentAndController","containerGroup","controllerRect","showController","_showController","containerPos","controllerPos","setPosition","clipShape","setClipPath","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","to","legendId","canJump","childOfName","pageText","total","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","itemRect","itemInfo","winStart","targetDataIndex","defaultIndex","legendDataIdx","installScrollableLegendAction","subType","query"],"mappings":"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","file":"js/Cass-datanalysis.ca0ba766.js","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n/**\n * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n */\n\nexport function layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get(['axisTick', 'inside'])) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get(['axisLabel', 'rotate']);\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\nexport function isCartesian2DSeries(seriesModel) {\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\nexport function findAxisModels(seriesModel) {\n var axisModelMap = {\n xAxisModel: null,\n yAxisModel: null\n };\n zrUtil.each(axisModelMap, function (v, key) {\n var axisType = key.replace(/Model$/, '');\n var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!axisModel) {\n throw new Error(axisType + ' \"' + zrUtil.retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\n }\n }\n\n axisModelMap[key] = axisModel;\n });\n return axisModelMap;\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-362d7721\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"cCell_title\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { class: \"cCell_label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"cCell-tip\"\n}\nconst _hoisted_6 = { key: 0 }\n\nimport { withDefaults } from 'vue';\r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'cCell',\n props: {\n title: { default: '' },\n label: { default: '' },\n isbetween: { type: Boolean, default: false },\n tip: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, label: string, isbetween: boolean, tip: string };\n\r\n \r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"cCell\", {isbetween: props.isbetween}])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"icon\"),\n (__props.title)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(props.title), 1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (props.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(props.label), 1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"label\")\n ]),\n (props.tip || _ctx.$slots.tip)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (props.tip)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(props.tip), 1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"tip\")\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","import script from \"./cCell.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./cCell.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./cCell.vue?vue&type=style&index=0&id=362d7721&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-362d7721\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-aa5070a6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pinyinSelect\" }\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_col = _resolveComponent(\"el-col\")!\n const _component_el_row = _resolveComponent(\"el-row\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_row, { class: \"pinyincode\" }, {\n default: _withCtx(() => [\n _createVNode(_component_el_col, { span: 24 }, {\n default: _withCtx(() => [\n _createTextVNode(\" 首拼音: \"),\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"pinyincode-code\", [_ctx.code ===''? 'selected': '']]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.select('')))\n }, \"全\", 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.charCodeArr, (e, i) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"pinyincode-code\", [_ctx.code===e ? 'selected': '']]),\n onClick: ($event: any) => (_ctx.select(e)),\n key: i\n }, _toDisplayString(e), 11, _hoisted_2))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]))\n}","\r\nimport { defineComponent, toRefs } from 'vue';\r\n\r\nimport { charCodeArr } from '@/util/contant'\r\n\r\nexport default defineComponent({\r\n name: \"pinyinSelect\",\r\n emits: ['select'],\r\n components: {},\r\n props: {\r\n code:{\r\n type:String,\r\n default:''\r\n }\r\n },\r\n setup(props, { emit }) {\r\n const {code} = toRefs(props)\r\n const select = (e: string) => {\r\n emit('select', e)\r\n }\r\n\r\n return {\r\n code,\r\n charCodeArr,\r\n select,\r\n props,\r\n }\r\n },\r\n})\r\n","import { render } from \"./pinyinSelect.vue?vue&type=template&id=aa5070a6&scoped=true&ts=true\"\nimport script from \"./pinyinSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./pinyinSelect.vue?vue&type=script&lang=ts\"\n\nimport \"./pinyinSelect.vue?vue&type=style&index=0&id=aa5070a6&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aa5070a6\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\n/**\n * @param finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param ecModel\n * @return {point: [x, y], el: ...} point Will not be null.\n */\n\nexport default function findPointFromSeries(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n if (finder.isStacked) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueAxisDim = valueAxis.dim;\n var baseAxisDim = baseAxis.dim;\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var baseDim = data.mapDimension(baseAxisDim);\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(baseDim, dataIndex);\n stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex);\n point = coordSys.dataToPoint(stackedData) || [];\n } else {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex)) || [];\n }\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\n };\n}","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nexport function register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n\nexport function unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\nimport { createHashMap, retrieve, each } from 'zrender/lib/core/util.js';\nimport { SINGLE_REFERRING } from '../util/model.js';\n/**\n * @class\n * For example:\n * {\n * coordSysName: 'cartesian2d',\n * coordSysDims: ['x', 'y', ...],\n * axisMap: HashMap({\n * x: xAxisModel,\n * y: yAxisModel\n * }),\n * categoryAxisMap: HashMap({\n * x: xAxisModel,\n * y: undefined\n * }),\n * // The index of the first category axis in `coordSysDims`.\n * // `null/undefined` means no category axis exists.\n * firstCategoryDimIndex: 1,\n * // To replace user specified encode.\n * }\n */\n\nvar CoordSysInfo =\n/** @class */\nfunction () {\n function CoordSysInfo(coordSysName) {\n this.coordSysDims = [];\n this.axisMap = createHashMap();\n this.categoryAxisMap = createHashMap();\n this.coordSysName = coordSysName;\n }\n\n return CoordSysInfo;\n}();\n\nexport function getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!xAxisModel) {\n throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\n }\n\n if (!yAxisModel) {\n throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\n }\n }\n\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!singleAxisModel) {\n throw new Error('singleAxis should be specified.');\n }\n }\n\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n\n if (process.env.NODE_ENV !== 'production') {\n if (!angleAxisModel) {\n throw new Error('angleAxis option not found');\n }\n\n if (!radiusAxisModel) {\n throw new Error('radiusAxis option not found');\n }\n }\n\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel)) {\n categoryAxisMap.set(axisDim, axisModel);\n\n if (result.firstCategoryDimIndex == null) {\n result.firstCategoryDimIndex = index;\n }\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper.js';\nimport { getDataItemValue } from '../../util/model.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport { getCoordSysInfoBySeries } from '../../model/referHelper.js';\nimport { createSourceFromSeriesDataOption } from '../../data/Source.js';\nimport { enableDataStack } from '../../data/helper/dataStackHelper.js';\nimport { makeSeriesEncodeForAxisCoordSys } from '../../data/helper/sourceHelper.js';\nimport { SOURCE_FORMAT_ORIGINAL } from '../../util/types.js';\n\nfunction getCoordSysDimDefs(seriesModel, coordSysInfo) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysDimDefs;\n\n if (coordSysInfo && coordSysInfo.coordSysDims) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n return coordSysDimDefs;\n}\n\nfunction injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n\n if (createInvertedIndices) {\n dimInfo.createInvertedIndices = true;\n }\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n return firstCategoryDimIndex;\n}\n/**\n * Caution: there are side effects to `sourceManager` in this method.\n * Should better only be called in `Series['getInitialData']`.\n */\n\n\nfunction createSeriesData(sourceRaw, seriesModel, opt) {\n opt = opt || {};\n var sourceManager = seriesModel.getSourceManager();\n var source;\n var isOriginalSource = false;\n\n if (sourceRaw) {\n isOriginalSource = true;\n source = createSourceFromSeriesDataOption(sourceRaw);\n } else {\n source = sourceManager.getSource(); // Is series.data. not dataset.\n\n isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;\n }\n\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);\n var useEncodeDefaulter = opt.useEncodeDefaulter;\n var encodeDefaulter = zrUtil.isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;\n var createDimensionOptions = {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefine: seriesModel.getEncode(),\n encodeDefaulter: encodeDefaulter,\n canOmitUnusedDimensions: !isOriginalSource\n };\n var schema = prepareSeriesDataSchema(source, createDimensionOptions);\n var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);\n var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;\n var stackCalculationInfo = enableDataStack(seriesModel, {\n schema: schema,\n store: store\n });\n var data = new SeriesData(schema, seriesModel);\n data.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n data.hasItemOption = false;\n data.initData( // Try to reuse the data store in sourceManager if using dataset.\n isOriginalSource ? source : store, null, dimValueGetter);\n return data;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(arr) {\n var i = 0;\n\n while (i < arr.length && arr[i] == null) {\n i++;\n }\n\n return arr[i];\n}\n\nexport default createSeriesData;","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./caseeffect.vue?vue&type=style&index=0&id=68d29b8a&lang=scss\"","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1faff333\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"casstable\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = { key: 2 }\n\nimport { reactive, ref, watch} from \"vue\";\r\nimport { ImgUrlFix } from '@u/contant'\r\nimport effectmodel from './effectmodel.vue'\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'casstable',\n props: {\n tableData: null,\n arrlenth: null,\n tableType: null\n },\n emits: ['emitshowCaseNo', 'emitshowEffect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n tableData: any,\r\n arrlenth: any,\r\n tableType: any\r\n };\n\r\n\r\n\r\nconst activeName = ref('first')\r\nconst showCaseDetails = ref(false);//是否显示病案弹框\r\nconst showEffectDetails = ref(false);//是否显示疗效弹框\r\nconst tableList = reactive(props.tableData)\r\n\r\n//点击病案代号。弹出病案页面\r\nconst handleCaseNo = (index:number, item:any) => {\r\n const row = {id:'',per:'',patnId:''}\r\n row.id = item['id' + index]\r\n row.patnId = item['patnId' + index]\r\n emit('emitshowCaseNo',{\r\n data: row,\r\n index\r\n })\r\n\r\n}\r\n//点击百分比。弹出疗效弹窗\r\nconst handleEffect = (index:number, item:any) => {//i是$index,\r\n if(typeof(item) == 'number' && item > -1){\r\n const row = {id:'', per:'', patnId:'', patName:''}\r\n row.id = tableList[0]['effcollId' + index] || tableList[0]['id' + index];\r\n row.per = item > -1 ? item : 0 ;\r\n row.patName = tableList[0]['column' + index];\r\n emit('emitshowEffect',row)\r\n }\r\n \r\n}\r\nwatch(() => props.tableData, (val) => {\r\n props.tableData = val \r\n },{\r\n immediate:true\r\n })\r\nwatch(() => props.arrlenth, (val) => {\r\n props.arrlenth = val \r\n})\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_table_column = _resolveComponent(\"el-table-column\")!\n const _component_el_table = _resolveComponent(\"el-table\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_table, {\n data: tableList,\n \"show-header\": false,\n style: {\"width\":\"100%\",\"overflow-y\":\"scroll\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_table_column, { width: \"100\" }, {\n default: _withCtx((scope) => [\n _createTextVNode(_toDisplayString(scope.row.title), 1)\n ]),\n _: 1\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.arrlenth, (item, idx) => {\n return (_openBlock(), _createBlock(_component_el_table_column, {\n width: \"360\",\n prop: 'column' + idx,\n key: idx\n }, {\n default: _withCtx((scope) => [\n (scope.$index == 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n onClick: ($event: any) => (handleCaseNo(idx, scope.row)),\n class: _normalizeClass({'underline':scope.row['column' + idx] > -1 })\n }, [\n _createTextVNode(_toDisplayString(scope.row['column' + idx]), 1),\n (scope.row['isSeminar' + idx])\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"img\",\n src: _unref(ImgUrlFix) + 'images/research.png',\n alt: \"\"\n }, null, 8, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_2))\n : (scope.$index == 1)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass({'underline':scope.row['column' + idx] > -1 }),\n onClick: ($event: any) => (handleEffect(idx, scope.row['column' + idx]))\n }, _toDisplayString(scope.row['column' + idx] > -1 ? scope.row['column' + idx] + '%' : '--'), 11, _hoisted_4))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(scope.row['column' + idx]), 1))\n ]),\n _: 2\n }, 1032, [\"prop\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"data\"])\n ]))\n}\n}\n\n})","import script from \"./casstable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./casstable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./casstable.vue?vue&type=style&index=0&id=1faff333&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1faff333\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vShow as _vShow, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, resolveDirective as _resolveDirective } from \"vue\"\n\nconst _hoisted_1 = { class: \"dialogBox\" }\nconst _hoisted_2 = { class: \"diacrisis bg-base\" }\nconst _hoisted_3 = { class: \"diacrisisLine\" }\nconst _hoisted_4 = { class: \"w50\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"中医诊断\", -1)\nconst _hoisted_6 = { class: \"diacrisis_item dxName\" }\nconst _hoisted_7 = { class: \"text-right text-aaa\" }\nconst _hoisted_8 = { class: \"w50\" }\nconst _hoisted_9 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"别名\", -1)\nconst _hoisted_10 = { class: \"diacrisis_item\" }\nconst _hoisted_11 = { class: \"text-aaa\" }\nconst _hoisted_12 = { class: \"diacrisisLine\" }\nconst _hoisted_13 = { class: \"w50\" }\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"西医诊断\", -1)\nconst _hoisted_15 = { class: \"diacrisis_item dxName\" }\nconst _hoisted_16 = { class: \"text-right text-aaa\" }\nconst _hoisted_17 = { class: \"w50\" }\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"更多西医诊断\", -1)\nconst _hoisted_19 = {\n class: \"diacrisis_item\",\n style: {\"min-width\":\"0\"}\n}\nconst _hoisted_20 = { class: \"oneLine\" }\nconst _hoisted_21 = { class: \"diacrisisLine\" }\nconst _hoisted_22 = { class: \"w50\" }\nconst _hoisted_23 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"性别\", -1)\nconst _hoisted_24 = { class: \"diacrisis_item text-aaa\" }\nconst _hoisted_25 = { key: 0 }\nconst _hoisted_26 = { key: 1 }\nconst _hoisted_27 = { key: 2 }\nconst _hoisted_28 = { class: \"w50\" }\nconst _hoisted_29 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"年龄(岁)\", -1)\nconst _hoisted_30 = {\n key: 0,\n class: \"diacrisis_item\"\n}\nconst _hoisted_31 = { class: \"text-aaa\" }\nconst _hoisted_32 = {\n key: 1,\n class: \"diacrisis_item\"\n}\nconst _hoisted_33 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"text-aaa\" }, \"不限\", -1)\nconst _hoisted_34 = [\n _hoisted_33\n]\nconst _hoisted_35 = { class: \"w50\" }\nconst _hoisted_36 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"科室\", -1)\nconst _hoisted_37 = { class: \"diacrisis_item\" }\nconst _hoisted_38 = { class: \"text-aaa\" }\nconst _hoisted_39 = { class: \"diacrisisLine\" }\nconst _hoisted_40 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"第一诊断要素\", -1)\nconst _hoisted_41 = { class: \"diacrisis_item\" }\nconst _hoisted_42 = { class: \"diacrisis_qz\" }\nconst _hoisted_43 = { class: \"diacrisisLine\" }\nconst _hoisted_44 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"第二诊断要素\", -1)\nconst _hoisted_45 = { class: \"diacrisis_item\" }\nconst _hoisted_46 = { class: \"diacrisis_qz\" }\nconst _hoisted_47 = { class: \"diacrisisLine\" }\nconst _hoisted_48 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"第三诊断要素\", -1)\nconst _hoisted_49 = { class: \"diacrisis_item\" }\nconst _hoisted_50 = { class: \"diacrisis_qz\" }\nconst _hoisted_51 = { class: \"diacrisisLine\" }\nconst _hoisted_52 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"diacrisis_tit\" }, \"病种说明\", -1)\nconst _hoisted_53 = { class: \"diacrisis_item illustrate\" }\nconst _hoisted_54 = [\"src\"]\nconst _hoisted_55 = [\"src\"]\nconst _hoisted_56 = { key: 0 }\nconst _hoisted_57 = { class: \"bzBox mt-10\" }\nconst _hoisted_58 = { class: \"line\" }\nconst _hoisted_59 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, [\n /*#__PURE__*/_createTextVNode(\" 证型名称 \"),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"red\" }, \"*\")\n], -1)\nconst _hoisted_60 = { class: \"line_item synDiffCodeBox\" }\nconst _hoisted_61 = { class: \"synDiffCodeBoxLine\" }\nconst _hoisted_62 = { class: \"synDiffCode\" }\nconst _hoisted_63 = { class: \"text-aaa\" }\nconst _hoisted_64 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"synDiffAlias\" }, \"备注\", -1)\nconst _hoisted_65 = { class: \"synDiffAlias2 nb\" }\nconst _hoisted_66 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"groupOfLabelBox\" }, \"标签\", -1)\nconst _hoisted_67 = { class: \"groupOfLabelBox2\" }\nconst _hoisted_68 = { class: \"illustrateBox\" }\nconst _hoisted_69 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"illustrateTit fontWeight\" }, \" 说明 \", -1)\nconst _hoisted_70 = { class: \"illustrate\" }\nconst _hoisted_71 = { class: \"line\" }\nconst _hoisted_72 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, [\n /*#__PURE__*/_createTextVNode(\" 辨证要点 \"),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"red\" }, \"*\")\n], -1)\nconst _hoisted_73 = { class: \"line_item nb\" }\nconst _hoisted_74 = { class: \"line\" }\nconst _hoisted_75 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"辨证分析\", -1)\nconst _hoisted_76 = { class: \"line_item nb\" }\nconst _hoisted_77 = { class: \"line\" }\nconst _hoisted_78 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"治法治则\", -1)\nconst _hoisted_79 = { class: \"line_item flr\" }\nconst _hoisted_80 = { class: \"text-aaa\" }\nconst _hoisted_81 = { class: \"line\" }\nconst _hoisted_82 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"方药\", -1)\nconst _hoisted_83 = { class: \"line_item nb\" }\nconst _hoisted_84 = { class: \"line\" }\nconst _hoisted_85 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"组方\", -1)\nconst _hoisted_86 = { class: \"line_item\" }\nconst _hoisted_87 = { class: \"showWhatBox\" }\nconst _hoisted_88 = { class: \"usageBox\" }\nconst _hoisted_89 = { style: {\"padding\":\"12px\"} }\nconst _hoisted_90 = { class: \"factor\" }\nconst _hoisted_91 = { class: \"ml-10\" }\nconst _hoisted_92 = { class: \"line\" }\nconst _hoisted_93 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"特色诊疗\", -1)\nconst _hoisted_94 = { class: \"line_item\" }\nconst _hoisted_95 = { class: \"line\" }\nconst _hoisted_96 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"第二处方\", -1)\nconst _hoisted_97 = { class: \"line_item nb\" }\nconst _hoisted_98 = { class: \"line\" }\nconst _hoisted_99 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"随访\", -1)\nconst _hoisted_100 = { class: \"line_item effcollDate\" }\nconst _hoisted_101 = { class: \"effcollDateBox\" }\nconst _hoisted_102 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"text-aaa\" }, \"随访用于跟踪患者的疗效反馈\", -1)\nconst _hoisted_103 = { class: \"effcollDateTime\" }\nconst _hoisted_104 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"lineheight32 fontWeight\" }, \"随访时间:\", -1)\nconst _hoisted_105 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"lineheight32\" }, \"就诊结束\", -1)\nconst _hoisted_106 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"lineheight32\" }, \"后\", -1)\nconst _hoisted_107 = { class: \"line\" }\nconst _hoisted_108 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"原出处\", -1)\nconst _hoisted_109 = { class: \"line_item nb\" }\nconst _hoisted_110 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line_tit\" }, \"创建人\", -1)\nconst _hoisted_111 = { class: \"line_item nb\" }\nconst _hoisted_112 = { class: \"dialog-footer\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_popover = _resolveComponent(\"el-popover\")!\n const _component_el_option = _resolveComponent(\"el-option\")!\n const _component_el_select = _resolveComponent(\"el-select\")!\n const _component_el_input = _resolveComponent(\"el-input\")!\n const _component_groupOfLabel = _resolveComponent(\"groupOfLabel\")!\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\")!\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_medic = _resolveComponent(\"medic\")!\n const _component_fvia = _resolveComponent(\"fvia\")!\n const _component_ll = _resolveComponent(\"ll\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n const _component_effcoll = _resolveComponent(\"effcoll\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_el_dialog, {\n title: _ctx.synDiff.synDiff.synDiffName || '请选择辨证',\n modelValue: _ctx.dialogVisible2,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((_ctx.dialogVisible2) = $event)),\n width: \"90%\",\n onClose: _ctx.onClose,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n top: \"20px\",\n \"custom-class\": \"dialectical\"\n }, {\n footer: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_112, [\n _createVNode(_component_el_button, { onClick: _ctx.onClose }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _withDirectives(_createVNode(_component_el_button, {\n type: \"success\",\n onClick: _ctx.onConfirm,\n disabled: _ctx.confirmBtnDisabled,\n loading: _ctx.confirmBtnLoading\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"保存\")\n ]),\n _: 1\n }, 8, [\"onClick\", \"disabled\", \"loading\"]), [\n [_vShow, !_ctx.$props.readonly]\n ])\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.synDiff.dxName), 1),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.synDiff.dxCode), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, _toDisplayString(_ctx.synDiff.alias), 1)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.synDiff.icdName), 1),\n _createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.synDiff.icdCode), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(_component_el_popover, {\n placement: \"bottom-start\",\n width: 450,\n trigger: \"hover\"\n }, {\n reference: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.redenrIcdJsonObject()), 1)\n ]),\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.redenrIcdJsonObject()), 1)\n ]),\n _: 1\n })\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"div\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"div\", _hoisted_24, [\n (_ctx.synDiff.sex === -1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_25, \"不限\"))\n : (_ctx.synDiff.sex === 0)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_26, \"女\"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_27, \"男\"))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_28, [\n _hoisted_29,\n (_ctx.synDiff.maxAge)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_30, [\n _createElementVNode(\"div\", _hoisted_31, _toDisplayString(_ctx.synDiff.minAge) + \"-\" + _toDisplayString(_ctx.synDiff.maxAge), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, _hoisted_34))\n ]),\n _createElementVNode(\"div\", _hoisted_35, [\n _hoisted_36,\n _createElementVNode(\"div\", _hoisted_37, [\n _createElementVNode(\"div\", _hoisted_38, _toDisplayString(_ctx.synDiff.dep), 1)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_39, [\n _hoisted_40,\n _createElementVNode(\"div\", _hoisted_41, _toDisplayString(_ctx.synDiff.el[0].content), 1),\n _createElementVNode(\"div\", _hoisted_42, \"权重:\" + _toDisplayString(_ctx.synDiff.el[0].weight) + \"%\", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_43, [\n _hoisted_44,\n _createElementVNode(\"div\", _hoisted_45, _toDisplayString(_ctx.synDiff.el[1].content), 1),\n _createElementVNode(\"div\", _hoisted_46, \"权重:\" + _toDisplayString(_ctx.synDiff.el[1].weight) + \"%\", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_47, [\n _hoisted_48,\n _createElementVNode(\"div\", _hoisted_49, _toDisplayString(_ctx.synDiff.el[2].content), 1),\n _createElementVNode(\"div\", _hoisted_50, \"权重:\" + _toDisplayString(_ctx.synDiff.el[2].weight) + \"%\", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_51, [\n _hoisted_52,\n _createElementVNode(\"div\", _hoisted_53, [\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + 'images/eyeopen.png',\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.isShowillustrate2 = !_ctx.isShowillustrate2))\n }, null, 8, _hoisted_54), [\n [_vShow, _ctx.isShowillustrate2]\n ]),\n _withDirectives(_createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + 'images/eyeclose.png',\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.isShowillustrate2 = !_ctx.isShowillustrate2))\n }, null, 8, _hoisted_55), [\n [_vShow, !_ctx.isShowillustrate2]\n ])\n ]),\n (_ctx.isShowillustrate2)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_56, _toDisplayString(_ctx.synDiff.illustrate), 1))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_57, [\n _createElementVNode(\"div\", _hoisted_58, [\n _hoisted_59,\n _createElementVNode(\"div\", _hoisted_60, [\n _createElementVNode(\"div\", _hoisted_61, [\n _createElementVNode(\"div\", _hoisted_62, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_select, {\n modelValue: _ctx.synDiff.synDiff.synDiffCode,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.synDiff.synDiff.synDiffCode) = $event)),\n filterable: \"\",\n placeholder: \"请选择证型\",\n \"no-match-text\": \"没有匹配的数据\",\n onChange: _ctx.synDiffCodeChangeHandle,\n disabled: _ctx.$props.readonly\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.store.state.dsSynDiff, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.code,\n label: item.name,\n value: item.code\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_63, _toDisplayString(_ctx.synDiff.synDiff.synDiffCode), 1)\n ]),\n _hoisted_64,\n _createElementVNode(\"div\", _hoisted_65, [\n _createVNode(_component_el_input, {\n modelValue: _ctx.synDiff.synDiff.synDiffAlias,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.synDiff.synDiff.synDiffAlias) = $event)),\n placeholder: \"请输入\",\n disabled: _ctx.$props.readonly,\n maxlength: \"30\"\n }, null, 8, [\"modelValue\", \"disabled\"])\n ]),\n _hoisted_66,\n _createElementVNode(\"div\", _hoisted_67, [\n _createVNode(_component_groupOfLabel, {\n labelStr: _ctx.synDiff.synDiff.groupOfLabel,\n \"onUpdate:labelStr\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.synDiff.synDiff.groupOfLabel) = $event)),\n isLock: _ctx.$props.readonly\n }, null, 8, [\"labelStr\", \"isLock\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_68, [\n _hoisted_69,\n _createElementVNode(\"div\", _hoisted_70, [\n _createVNode(_component_el_input, {\n modelValue: _ctx.synDiff.synDiff.illustrate,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.synDiff.synDiff.illustrate) = $event)),\n modelModifiers: { trim: true },\n placeholder: \"请输入\",\n type: \"textarea\",\n autosize: { minRows: 3, maxRows: 3 },\n maxlength: \"300\",\n disabled: _ctx.$props.readonly\n }, null, 8, [\"modelValue\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_71, [\n _hoisted_72,\n _createElementVNode(\"div\", _hoisted_73, [\n _createVNode(_component_el_input, {\n modelValue: _ctx.synDiff.synDiff.mainPoints,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.synDiff.synDiff.mainPoints) = $event)),\n modelModifiers: { trim: true },\n autosize: { minRows: 2, maxRows: 4 },\n type: \"textarea\",\n placeholder: \"请输入辨证要点\",\n maxlength: \"300\",\n disabled: _ctx.$props.readonly\n }, null, 8, [\"modelValue\", \"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_74, [\n _hoisted_75,\n _createElementVNode(\"div\", _hoisted_76, [\n _createVNode(_component_el_input, {\n modelValue: _ctx.synDiff.synDiff.analysis,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.synDiff.synDiff.analysis) = $event)),\n modelModifiers: { trim: true },\n autosize: { minRows: 2, maxRows: 4 },\n type: \"textarea\",\n placeholder: \"请输入辨证分析\",\n maxlength: \"300\",\n disabled: _ctx.$props.readonly\n }, null, 8, [\"modelValue\", \"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_77, [\n _hoisted_78,\n _createElementVNode(\"div\", _hoisted_79, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_select, {\n modelValue: _ctx.synDiff.synDiff.treatRuleCode,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((_ctx.synDiff.synDiff.treatRuleCode) = $event)),\n filterable: \"\",\n placeholder: \"请选择治法治则\",\n \"no-match-text\": \"没有匹配的数据\",\n onChange: _ctx.dsTreatRuleChangeHandle,\n disabled: _ctx.$props.readonly\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.store.state.dsTreatRule, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.code,\n label: item.name,\n value: item.code\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_80, _toDisplayString(_ctx.synDiff.synDiff.treatRuleCode), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_81, [\n _hoisted_82,\n _createElementVNode(\"div\", _hoisted_83, [\n _createVNode(_component_el_input, {\n modelValue: _ctx.synDiff.synDiff.rx.fjName,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.synDiff.synDiff.rx.fjName) = $event)),\n placeholder: \"请输入\",\n maxlength: \"30\",\n disabled: _ctx.$props.readonly\n }, null, 8, [\"modelValue\", \"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_84, [\n _hoisted_85,\n _createElementVNode(\"div\", _hoisted_86, [\n _createElementVNode(\"div\", _hoisted_87, [\n _createVNode(_component_el_radio_group, {\n modelValue: _ctx.synDiff.synDiff.rx.showWhat,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((_ctx.synDiff.synDiff.rx.showWhat) = $event)),\n fill: \"#2b9466\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_radio_button, { label: \"处方\" }),\n _createVNode(_component_el_radio_button, { label: \"随证加减\" })\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n (_ctx.synDiff.synDiff.rx.showWhat === '处方')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_88, [\n _createElementVNode(\"div\", _hoisted_89, [\n _createTextVNode(\" 处方用法: \"),\n _createVNode(_component_el_select, {\n modelValue: _ctx.synDiff.synDiff.rx.usage,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((_ctx.synDiff.synDiff.rx.usage) = $event)),\n class: \"m-2\",\n placeholder: \"请选择\",\n \"no-match-text\": \"没有匹配的数据\",\n disabled: _ctx.$props.readonly\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.directionType, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.value,\n label: item.label,\n value: item.value\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_90, [\n _createTextVNode(\" 按: \"),\n _createVNode(_component_el_select, {\n modelValue: _ctx.synDiff.synDiff.rx.factory,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.synDiff.synDiff.rx.factory) = $event)),\n class: \"m-2\",\n placeholder: \"Select\",\n \"no-match-text\": \"没有匹配的数据\",\n disabled: _ctx.$props.readonly\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.factoryList, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.drugProduct,\n label: item.drugProduct,\n value: item.drugProduct\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"]),\n _createElementVNode(\"span\", _hoisted_91, [\n _createVNode(_component_el_button, {\n type: \"success\",\n disabled: _ctx.$props.readonly,\n onClick: _ctx.changeFactorHandle\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"转换\")\n ]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"])\n ])\n ])\n ]),\n _createVNode(_component_medic, {\n drugData: _ctx.getnewMedic(_ctx.synDiff.synDiff.rx),\n readonly: _ctx.$props.readonly,\n isStdDurg: false,\n isWide: true,\n drugType: -1,\n onUpdateHandle: _ctx.medicUpdateHandle\n }, null, 8, [\"drugData\", \"readonly\", \"onUpdateHandle\"])\n ], 64))\n : (_ctx.synDiff.synDiff.rx.showWhat === '随证加减')\n ? (_openBlock(), _createBlock(_component_fvia, {\n key: 1,\n origiDrugData: _ctx.getnewMedic(_ctx.synDiff.synDiff.rx),\n readonly: _ctx.$props.readonly,\n isStdDurg: false,\n drugType: -1,\n onUpdateHandle: _ctx.fviaUpdateHandle\n }, null, 8, [\"origiDrugData\", \"readonly\", \"onUpdateHandle\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_92, [\n _hoisted_93,\n _createElementVNode(\"div\", _hoisted_94, [\n _createVNode(_component_ll, {\n drugData: _ctx.getnewLl(_ctx.synDiff.synDiff.ll),\n readonly: _ctx.$props.readonly,\n isStdDurg: false,\n isWide: true,\n onUpdateHandle: _ctx.llUpdateHandle,\n pageId: _ctx.pageId\n }, null, 8, [\"drugData\", \"readonly\", \"onUpdateHandle\", \"pageId\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_95, [\n _hoisted_96,\n _createElementVNode(\"div\", _hoisted_97, [\n _createVNode(_component_el_input, {\n modelValue: _ctx.synDiff.synDiff.rx2nd,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((_ctx.synDiff.synDiff.rx2nd) = $event)),\n placeholder: \"请输入\",\n maxlength: \"100\",\n disabled: _ctx.$props.readonly\n }, null, 8, [\"modelValue\", \"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_98, [\n _hoisted_99,\n _createElementVNode(\"div\", _hoisted_100, [\n _createElementVNode(\"div\", _hoisted_101, [\n _createElementVNode(\"span\", {\n class: \"effcollDate\",\n onClick: _cache[14] || (_cache[14] = \n//@ts-ignore\n(...args) => (_ctx.editEffcollHandle && _ctx.editEffcollHandle(...args)))\n }, \"编辑问卷\"),\n _hoisted_102\n ]),\n _createElementVNode(\"div\", _hoisted_103, [\n _hoisted_104,\n _hoisted_105,\n _createVNode(_component_el_select, {\n modelValue: _ctx.synDiff.synDiff.effcollDate,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((_ctx.synDiff.synDiff.effcollDate) = $event)),\n class: \"m-2\",\n placeholder: \"请选择\",\n \"no-match-text\": \"没有匹配的数据\",\n disabled: _ctx.$props.readonly\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.effcollDateSelect, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.value,\n label: item.label,\n value: item.value\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"]),\n _hoisted_106\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_107, [\n _hoisted_108,\n _createElementVNode(\"div\", _hoisted_109, _toDisplayString(_ctx.synDiff.provenance), 1),\n _hoisted_110,\n _createElementVNode(\"div\", _hoisted_111, _toDisplayString(_ctx.synDiff.author), 1)\n ])\n ])\n ])), [\n [_directive_loading, _ctx.loading]\n ])\n ])\n ]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"onClose\"]),\n _createVNode(_component_effcoll, {\n dialogVisible: _ctx.tocpicDialogVisible,\n \"onUpdate:dialogVisible\": _cache[17] || (_cache[17] = ($event: any) => ((_ctx.tocpicDialogVisible) = $event)),\n dialecticalID: _ctx.synDiff.synDiff.id,\n isLock: _ctx.$props.readonly\n }, null, 8, [\"dialogVisible\", \"dialecticalID\", \"isLock\"])\n ], 64))\n}","\r\nimport { defineComponent, toRefs, ref, watch, reactive, PropType } from 'vue';\r\nimport { useStore } from \"vuex\"\r\n\r\nimport { ElMessageBox, ElNotification } from 'element-plus'\r\nimport { CloseBold } from '@element-plus/icons-vue'\r\n\r\nimport effcoll from './components/effcoll.vue'\r\nimport ll from '@c/public/modelDrugList/ll.vue' //特色诊疗\r\nimport medic from '@c/public/modelDrugList/medic.vue' // 处方\r\nimport fvia from '@c/public/modelDrugList/fvia.vue' //随证\r\nimport groupOfLabel from '@c/public/groupOfLabel/groupOfLabel.vue' //辨证的标签\r\n\r\nimport { getSynDiff, saveSynDiff, getDiseaseSynDiffExplanation } from '@r/api/xingling'\r\nimport { NewGetDrugConversionToFactoryV2 } from '@r/api/medicalstock'\r\nimport { pbFn } from '@u/publicMethod'\r\nimport { SynDiff } from \"@u/class/synDiff\"\r\nimport { SynDiffDrug } from \"@u/class/synDiffDrug\"\r\nimport { AccompanyingSymptom, AccompanyingSymptomsDrug } from \"@u/class/AccompanyingSymptom\"\r\nimport { FjbDrug } from '@u/class/fjbDrug'\r\n\r\nimport { header, effcollDateSelect, directionType, defaultMethod, ImgUrlFix } from '@/util/contant'\r\n\r\n\r\n\r\nexport default defineComponent({\r\n name: \"dialectical\",\r\n emits: {\r\n 'update:dialogVisible': null,\r\n 'onConfirm': null\r\n },\r\n components: {\r\n CloseBold,\r\n effcoll,\r\n ll, medic, fvia, groupOfLabel,\r\n },\r\n props: {\r\n dialogVisible: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n dialecticalID: {\r\n type: String,\r\n default: ''\r\n },\r\n synDiff: {\r\n type: Object,\r\n default: null\r\n },\r\n type: {\r\n //类型, 1个人模型 2研讨模型 3研讨模型回收站\r\n type: Number,\r\n default: 1\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: true\r\n },\r\n },\r\n\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n\r\n const { dialogVisible, dialecticalID } = toRefs(props)\r\n const dialogVisible2 = ref(dialogVisible.value)\r\n const t = new SynDiff()\r\n const synDiff = reactive(t)\r\n const loading = ref(true)\r\n const tocpicDialogVisible = ref(false) //是否显示随访问卷\r\n\r\n const confirmBtnLoading = ref(false)\r\n const confirmBtnDisabled = ref(false)\r\n const isShowillustrate2 = ref(true) //是否显示病种说明\r\n const drugRxType = ref(-1) //当前药品类型\r\n const rxType = ref(0) //处方类型 0中药 1西/成药 3特色诊疗 4检验 5检查\r\n const pageId = ref('')\r\n\r\n const factoryList: any[] = reactive([])\r\n\r\n\r\n const getnewLl = (ll: any) => {\r\n return {\r\n drug: ll,\r\n bingzongIndex: 0,\r\n }\r\n }\r\n\r\n const getnewMedic = (rx: any) => {\r\n return {\r\n drug: rx.drug,\r\n bingzongIndex: 0,\r\n accompanyingSymptoms: rx.accompanyingSymptoms,\r\n }\r\n }\r\n\r\n\r\n const redenrIcdJsonObject = () => {\r\n const list: string[] = []\r\n synDiff.icdJsonObject.forEach((item: any) => {\r\n list.push(item.icdName)\r\n })\r\n\r\n return list.join(';')\r\n }\r\n\r\n //关闭本弹窗\r\n const onClose = () => {\r\n Object.assign(synDiff, JSON.parse(JSON.stringify(t)))\r\n emit('update:dialogVisible', false)\r\n }\r\n\r\n //确认保存\r\n const onConfirm = () => {\r\n _loading(true)\r\n\r\n\r\n\r\n const t = JSON.parse(JSON.stringify(synDiff))\r\n const reSynDiff = t.synDiff\r\n reSynDiff.type = props.type\r\n const re = pbFn.checkSynDiff(reSynDiff)\r\n\r\n if (!re.flag) {\r\n _loading(false)\r\n\r\n ElNotification({\r\n title: '提示',\r\n message: re.msg,\r\n position: 'top-right',\r\n duration: 3000,\r\n type: 'error',\r\n })\r\n return\r\n }\r\n\r\n saveSynDiff({\r\n data: reSynDiff\r\n }).then((r: any) => {\r\n _loading(false)\r\n\r\n\r\n emit('onConfirm', t)\r\n ElNotification({\r\n title: '提示',\r\n message: \"保存成功\",\r\n position: 'top-right',\r\n duration: 3000,\r\n type: 'success',\r\n })\r\n\r\n }).catch((err: any) => {\r\n _loading(false)\r\n\r\n ElNotification({\r\n title: '提示',\r\n message: err.message,\r\n position: 'top-right',\r\n duration: 3000,\r\n type: 'error',\r\n })\r\n })\r\n\r\n }\r\n\r\n //选择辨证事件\r\n const synDiffCodeChangeHandle = (val: string) => {\r\n let flag = false;\r\n\r\n for (let i = 0; i < store.state.dsSynDiff.length; i++) {\r\n if (val === store.state.dsSynDiff[i].code) {\r\n synDiff.synDiff.synDiffName = store.state.dsSynDiff[i].name\r\n synDiff.synDiff.synDiffAlias = store.state.dsSynDiff[i].alias\r\n flag = true\r\n\r\n break\r\n }\r\n }\r\n\r\n if (flag) {\r\n _loading(true)\r\n getDiseaseSynDiffExplanation({\r\n data: {\r\n code: val,\r\n name: synDiff.synDiff.synDiffName,\r\n type: 1\r\n }\r\n }).then((data: any) => {\r\n _loading(false)\r\n if (data.length > 0) {\r\n synDiff.synDiff.illustrate = data[0].explanation\r\n } else {\r\n synDiff.synDiff.illustrate = ''\r\n }\r\n }).catch(() => {\r\n _loading(false)\r\n })\r\n } else {\r\n synDiff.synDiff.illustrate = ''\r\n }\r\n }\r\n\r\n // 选择治法治则事件\r\n const dsTreatRuleChangeHandle = (val: string) => {\r\n for (let i = 0; i < store.state.dsTreatRule.length; i++) {\r\n if (val === store.state.dsTreatRule[i].code) {\r\n synDiff.synDiff.treatRuleName = store.state.dsTreatRule[i].name\r\n break\r\n }\r\n }\r\n }\r\n\r\n //获取默认药品用法\r\n const getDefaultMethod = (queryString: string, cb: any) => {\r\n cb(defaultMethod)\r\n }\r\n\r\n //展现随访问卷\r\n const editEffcollHandle = () => {\r\n tocpicDialogVisible.value = true\r\n }\r\n\r\n\r\n //更新特色诊疗数据\r\n const llUpdateHandle = (druglist: any) => {\r\n const len = synDiff.synDiff.ll.length;\r\n synDiff.synDiff.ll.splice(0, len, ...druglist)\r\n }\r\n\r\n //更新处方数据\r\n const medicUpdateHandle = (druglist: any) => {\r\n const len = synDiff.synDiff.rx.drug.length;\r\n synDiff.synDiff.rx.drug.splice(0, len, ...druglist)\r\n }\r\n\r\n //更新随证数据\r\n const fviaUpdateHandle = (druglist: any) => {\r\n const len = synDiff.synDiff.rx.accompanyingSymptoms.length;\r\n synDiff.synDiff.rx.accompanyingSymptoms.splice(0, len, ...druglist)\r\n }\r\n\r\n //更换厂家\r\n const changeFactorHandle = () => {\r\n synDiff.synDiff.rx.factory === '请选择'\r\n if (synDiff.synDiff.rx.factory === '请选择') {\r\n ElNotification({\r\n title: '提示',\r\n message: \"请先选择供应商\",\r\n position: 'top-right',\r\n type: 'warning',\r\n duration: 3000,\r\n })\r\n return\r\n }\r\n\r\n let factory = '' // 要转换的厂家名\r\n let drugType = -1 //要转换药品类型\r\n\r\n const synDiffDrugList = JSON.parse(JSON.stringify(synDiff.synDiff.rx.drug))\r\n const fjbDrugList: FjbDrug[] = []\r\n synDiffDrugList.forEach((item: SynDiffDrug, idx: number) => {\r\n let fjbDrug: any = pbFn.diffDrugToFjbDrug(item)\r\n fjbDrug.drugSort = idx + 1\r\n fjbDrugList.push(fjbDrug)\r\n })\r\n const fjbDrugObj = {\r\n fjType: 1,\r\n sort: 0,\r\n drugConvertList: fjbDrugList,\r\n type: 1 // 1处方 2随证\r\n }\r\n\r\n const accompanyingSymptoms = JSON.parse(JSON.stringify(synDiff.synDiff.rx.accompanyingSymptoms))\r\n const szDrugList: any = []\r\n accompanyingSymptoms.forEach((accompanyingSymptom: AccompanyingSymptom) => {\r\n const fjbDrugList: FjbDrug[] = []\r\n accompanyingSymptom.accompanyingSymptomsDrug.forEach((item: AccompanyingSymptomsDrug, idx: number) => {\r\n let fjbDrug: any = pbFn.diffDrugToFjbDrug(item)\r\n fjbDrug.drugSort = idx + 1\r\n fjbDrugList.push(fjbDrug)\r\n })\r\n szDrugList.push(fjbDrugList)\r\n })\r\n\r\n const szDrugObj: any = []\r\n for (let i = 0; i < szDrugList.length; ++i) {\r\n const tem = {\r\n fjType: 1,\r\n sort: i + 1,\r\n drugConvertList: szDrugList[i],\r\n type: 2 // 1处方 2随证\r\n }\r\n szDrugObj.push(tem)\r\n }\r\n\r\n store.state.factory.forEach((item: any) => {\r\n if (item.drugProduct === synDiff.synDiff.rx.factory) {\r\n drugType = item.drugType\r\n factory = item.factory\r\n }\r\n })\r\n\r\n _loading(true)\r\n\r\n NewGetDrugConversionToFactoryV2({\r\n data: {\r\n factory: factory,\r\n drugType: drugType,\r\n organizationId: store.state.organization,\r\n fjDetails: [\r\n fjbDrugObj, ...szDrugObj\r\n ]\r\n }\r\n }).then((data: any) => {\r\n _loading(false)\r\n\r\n let lostDrugList: string[] = []\r\n data.forEach((item: any) => {\r\n item.drugLostList.forEach((lostDrug: any) => {\r\n lostDrugList.push(lostDrug.drugName)\r\n })\r\n })\r\n lostDrugList = [...new Set(lostDrugList)]\r\n\r\n let str = ''\r\n if (lostDrugList.length) {\r\n lostDrugList.forEach((item: any) => {\r\n str += item + ' '\r\n })\r\n\r\n ElMessageBox.confirm(\r\n '转换后,' + str + ' 药品冲突,请确认是否继续转换,转换后我们将冲突药去除',\r\n '警告',\r\n {\r\n confirmButtonText: '确认',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n }\r\n ).then(() => {\r\n func(data)\r\n }).catch(() => {\r\n\r\n })\r\n } else {\r\n func(data)\r\n }\r\n }).catch((err: any) => {\r\n _loading(false)\r\n\r\n console.error('error:', err)\r\n })\r\n\r\n function func(data: any) {\r\n const synDiffDrugList: SynDiffDrug[] = []\r\n\r\n pbFn.lee_sort(data[0].drugConvertList, 'drugSort')\r\n\r\n data[0].drugConvertList.forEach((item: FjbDrug) => {\r\n // @ts-ignore \r\n let synDiffDrug = pbFn.fjbDrugToDiffDrug(item)\r\n // @ts-ignore \r\n synDiffDrugList.push(synDiffDrug)\r\n })\r\n\r\n synDiff.synDiff.rx.drug.splice(0, synDiff.synDiff.rx.drug.length, ...synDiffDrugList)\r\n\r\n //转换随证\r\n const temp = JSON.parse(JSON.stringify(synDiff.synDiff.rx.accompanyingSymptoms))\r\n temp.map((item: any) => {\r\n item.accompanyingSymptomsDrug = []\r\n })\r\n for (let i = 1; i < data.length; i++) {\r\n pbFn.lee_sort(data[i].drugConvertList, 'drugSort')\r\n data[i].drugConvertList.forEach((item: any, idx: number) => {\r\n let synDiffDrug = pbFn.fjbDrugToDiffDrug(item)\r\n\r\n // @ts-ignore\r\n synDiffDrug.drugSort = idx + 1\r\n\r\n temp[i - 1].accompanyingSymptomsDrug.push(synDiffDrug)\r\n })\r\n }\r\n\r\n synDiff.synDiff.rx.accompanyingSymptoms.splice(0, synDiff.synDiff.rx.accompanyingSymptoms.length, ...temp)\r\n }\r\n }\r\n\r\n\r\n const _loading = (flag: boolean) => {\r\n loading.value = flag\r\n confirmBtnLoading.value = flag\r\n confirmBtnDisabled.value = flag\r\n }\r\n\r\n watch(() => { store.state.factory }, () => {\r\n factoryList.splice(0, factoryList.length, ...store.state.factory)\r\n }, { immediate: true })\r\n\r\n watch(() => props.dialogVisible, (val) => {\r\n dialogVisible2.value = val\r\n isShowillustrate2.value = true\r\n pageId.value = pbFn.getID()\r\n\r\n\r\n if (dialogVisible2.value) {\r\n factoryList.splice(0, factoryList.length, ...store.state.factory)\r\n\r\n if (props.synDiff) {\r\n _loading(false)\r\n\r\n\r\n while (props.synDiff.el.length < 3) {\r\n props.synDiff.el.push({ content: '', weight: 0 })\r\n }\r\n props.synDiff.synDiff.rx.showWhat = props.synDiff.synDiff.rx.showWhat || '处方'\r\n props.synDiff.synDiff.rx.factory = props.synDiff.synDiff.rx.factory || '请选择'\r\n\r\n Object.assign(synDiff, props.synDiff)\r\n\r\n pbFn.cassDrugListAddAttribute(synDiff.synDiff.rx.drug, store.state.tPharmacy)\r\n } else {\r\n _loading(true)\r\n // if(props.type == 1 || props.type == 2) {\r\n getSynDiff({\r\n data: {\r\n type: props.type,\r\n id: dialecticalID.value,\r\n _times: new Date().getTime()\r\n }\r\n }).then((tt: any) => {\r\n _loading(false)\r\n\r\n tt.synDiff.rx.showWhat = tt.synDiff.rx.showWhat || '处方'\r\n tt.synDiff.rx.factory = tt.synDiff.rx.factory || '请选择'\r\n while (tt.el.length < 3) {\r\n tt.el.push({ content: '', weight: 0 })\r\n }\r\n Object.assign(synDiff, tt)\r\n pbFn.cassDrugListAddAttribute(synDiff.synDiff.rx.drug, store.state.tPharmacy)\r\n })\r\n // }else {\r\n // recycleBin_getTmpl({\r\n // data: {\r\n // type: 2,\r\n // id: dialecticalID.value,\r\n // _times: new Date().getTime()\r\n // }\r\n // }).then((tt: any) => {\r\n // _loading(false)\r\n\r\n // tt.synDiff.rx.showWhat = tt.synDiff.rx.showWhat || '处方'\r\n // tt.synDiff.rx.factory = tt.synDiff.rx.factory || '请选择'\r\n // while (tt.el.length < 3) {\r\n // tt.el.push({ content: '', weight: 0 })\r\n // }\r\n // Object.assign(synDiff, tt)\r\n // pbFn.cassDrugListAddAttribute(synDiff.synDiff.rx.drug, store.state.tPharmacy)\r\n // })\r\n // }\r\n \r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n return {\r\n pageId,\r\n header, effcollDateSelect, directionType, defaultMethod,\r\n dialogVisible,\r\n dialogVisible2,\r\n synDiff,\r\n loading,\r\n store,\r\n confirmBtnLoading,\r\n confirmBtnDisabled,\r\n tocpicDialogVisible,\r\n isShowillustrate2,\r\n ImgUrlFix,\r\n rxType, factoryList,\r\n drugRxType,\r\n redenrIcdJsonObject,\r\n onClose,\r\n onConfirm,\r\n getDefaultMethod,\r\n synDiffCodeChangeHandle,\r\n dsTreatRuleChangeHandle,\r\n editEffcollHandle,\r\n getnewLl, getnewMedic,\r\n llUpdateHandle, medicUpdateHandle, fviaUpdateHandle,\r\n changeFactorHandle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./dialectical.vue?vue&type=template&id=744ca021&ts=true\"\nimport script from \"./dialectical.vue?vue&type=script&lang=ts\"\nexport * from \"./dialectical.vue?vue&type=script&lang=ts\"\n\nimport \"./dialectical.vue?vue&type=style&index=0&id=744ca021&lang=scss\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-607436bd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"breadnav\" }\n\nimport {ref} from \"vue\";\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'breadnav',\n props: {\n firsttitle: null,\n secondtitle: null\n },\n emits: ['emitshowNav'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n firsttitle: any,\r\n secondtitle: any\r\n };\n\r\n\r\n\r\nconst propsecondtitle = ref(props.secondtitle)\r\nconst showCaseBack = () => {\r\n emit('emitshowNav')\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h4\", null, _toDisplayString(props.firsttitle), 1),\n _createTextVNode(\" > \"),\n _createElementVNode(\"h4\", null, _toDisplayString(propsecondtitle.value), 1),\n _createElementVNode(\"i\", { onClick: showCaseBack }, \"返回\")\n ]))\n}\n}\n\n})","import script from \"./breadnav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./breadnav.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./breadnav.vue?vue&type=style&index=0&id=607436bd&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-607436bd\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar AxisModelCommonMixin =\n/** @class */\nfunction () {\n function AxisModelCommonMixin() {}\n\n AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\n var option = this.option;\n return !option.scale;\n };\n /**\n * Should be implemented by each axis model if necessary.\n * @return coordinate system model\n */\n\n\n AxisModelCommonMixin.prototype.getCoordSysModel = function () {\n return;\n };\n\n return AxisModelCommonMixin;\n}();\n\nexport { AxisModelCommonMixin };","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./emrDetail.vue?vue&type=style&index=0&id=2de394cd&lang=scss\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { BoundingRect, OrientedBoundingRect } from '../util/graphic.js';\nexport function prepareLayoutList(input) {\n var list = [];\n\n for (var i = 0; i < input.length; i++) {\n var rawItem = input[i];\n\n if (rawItem.defaultAttr.ignore) {\n continue;\n }\n\n var label = rawItem.label;\n var transform = label.getComputedTransform(); // NOTE: Get bounding rect after getComputedTransform, or label may not been updated by the host el.\n\n var localRect = label.getBoundingRect();\n var isAxisAligned = !transform || transform[1] < 1e-5 && transform[2] < 1e-5;\n var minMargin = label.style.margin || 0;\n var globalRect = localRect.clone();\n globalRect.applyTransform(transform);\n globalRect.x -= minMargin / 2;\n globalRect.y -= minMargin / 2;\n globalRect.width += minMargin;\n globalRect.height += minMargin;\n var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\n list.push({\n label: label,\n labelLine: rawItem.labelLine,\n rect: globalRect,\n localRect: localRect,\n obb: obb,\n priority: rawItem.priority,\n defaultAttr: rawItem.defaultAttr,\n layoutOption: rawItem.computedLayoutOption,\n axisAligned: isAxisAligned,\n transform: transform\n });\n }\n\n return list;\n}\n\nfunction shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\n var len = list.length;\n\n if (len < 2) {\n return;\n }\n\n list.sort(function (a, b) {\n return a.rect[xyDim] - b.rect[xyDim];\n });\n var lastPos = 0;\n var delta;\n var adjusted = false;\n var shifts = [];\n var totalShifts = 0;\n\n for (var i = 0; i < len; i++) {\n var item = list[i];\n var rect = item.rect;\n delta = rect[xyDim] - lastPos;\n\n if (delta < 0) {\n // shiftForward(i, len, -delta);\n rect[xyDim] -= delta;\n item.label[xyDim] -= delta;\n adjusted = true;\n }\n\n var shift = Math.max(-delta, 0);\n shifts.push(shift);\n totalShifts += shift;\n lastPos = rect[xyDim] + rect[sizeDim];\n }\n\n if (totalShifts > 0 && balanceShift) {\n // Shift back to make the distribution more equally.\n shiftList(-totalShifts / len, 0, len);\n } // TODO bleedMargin?\n\n\n var first = list[0];\n var last = list[len - 1];\n var minGap;\n var maxGap;\n updateMinMaxGap(); // If ends exceed two bounds, squeeze at most 80%, then take the gap of two bounds.\n\n minGap < 0 && squeezeGaps(-minGap, 0.8);\n maxGap < 0 && squeezeGaps(maxGap, 0.8);\n updateMinMaxGap();\n takeBoundsGap(minGap, maxGap, 1);\n takeBoundsGap(maxGap, minGap, -1); // Handle bailout when there is not enough space.\n\n updateMinMaxGap();\n\n if (minGap < 0) {\n squeezeWhenBailout(-minGap);\n }\n\n if (maxGap < 0) {\n squeezeWhenBailout(maxGap);\n }\n\n function updateMinMaxGap() {\n minGap = first.rect[xyDim] - minBound;\n maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\n }\n\n function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\n if (gapThisBound < 0) {\n // Move from other gap if can.\n var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\n\n if (moveFromMaxGap > 0) {\n shiftList(moveFromMaxGap * moveDir, 0, len);\n var remained = moveFromMaxGap + gapThisBound;\n\n if (remained < 0) {\n squeezeGaps(-remained * moveDir, 1);\n }\n } else {\n squeezeGaps(-gapThisBound * moveDir, 1);\n }\n }\n }\n\n function shiftList(delta, start, end) {\n if (delta !== 0) {\n adjusted = true;\n }\n\n for (var i = start; i < end; i++) {\n var item = list[i];\n var rect = item.rect;\n rect[xyDim] += delta;\n item.label[xyDim] += delta;\n }\n } // Squeeze gaps if the labels exceed margin.\n\n\n function squeezeGaps(delta, maxSqeezePercent) {\n var gaps = [];\n var totalGaps = 0;\n\n for (var i = 1; i < len; i++) {\n var prevItemRect = list[i - 1].rect;\n var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\n gaps.push(gap);\n totalGaps += gap;\n }\n\n if (!totalGaps) {\n return;\n }\n\n var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\n\n if (delta > 0) {\n for (var i = 0; i < len - 1; i++) {\n // Distribute the shift delta to all gaps.\n var movement = gaps[i] * squeezePercent; // Forward\n\n shiftList(movement, 0, i + 1);\n }\n } else {\n // Backward\n for (var i = len - 1; i > 0; i--) {\n // Distribute the shift delta to all gaps.\n var movement = gaps[i - 1] * squeezePercent;\n shiftList(-movement, i, len);\n }\n }\n }\n /**\n * Squeeze to allow overlap if there is no more space available.\n * Let other overlapping strategy like hideOverlap do the job instead of keep exceeding the bounds.\n */\n\n\n function squeezeWhenBailout(delta) {\n var dir = delta < 0 ? -1 : 1;\n delta = Math.abs(delta);\n var moveForEachLabel = Math.ceil(delta / (len - 1));\n\n for (var i = 0; i < len - 1; i++) {\n if (dir > 0) {\n // Forward\n shiftList(moveForEachLabel, 0, i + 1);\n } else {\n // Backward\n shiftList(-moveForEachLabel, len - i - 1, len);\n }\n\n delta -= moveForEachLabel;\n\n if (delta <= 0) {\n return;\n }\n }\n }\n\n return adjusted;\n}\n/**\n * Adjust labels on x direction to avoid overlap.\n */\n\n\nexport function shiftLayoutOnX(list, leftBound, rightBound, // If average the shifts on all labels and add them to 0\n// TODO: Not sure if should enable it.\n// Pros: The angle of lines will distribute more equally\n// Cons: In some layout. It may not what user wanted. like in pie. the label of last sector is usually changed unexpectedly.\nbalanceShift) {\n return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\n}\n/**\n * Adjust labels on y direction to avoid overlap.\n */\n\nexport function shiftLayoutOnY(list, topBound, bottomBound, // If average the shifts on all labels and add them to 0\nbalanceShift) {\n return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\n}\nexport function hideOverlap(labelList) {\n var displayedLabels = []; // TODO, render overflow visible first, put in the displayedLabels.\n\n labelList.sort(function (a, b) {\n return b.priority - a.priority;\n });\n var globalRect = new BoundingRect(0, 0, 0, 0);\n\n function hideEl(el) {\n if (!el.ignore) {\n // Show on emphasis.\n var emphasisState = el.ensureState('emphasis');\n\n if (emphasisState.ignore == null) {\n emphasisState.ignore = false;\n }\n }\n\n el.ignore = true;\n }\n\n for (var i = 0; i < labelList.length; i++) {\n var labelItem = labelList[i];\n var isAxisAligned = labelItem.axisAligned;\n var localRect = labelItem.localRect;\n var transform = labelItem.transform;\n var label = labelItem.label;\n var labelLine = labelItem.labelLine;\n globalRect.copy(labelItem.rect); // Add a threshold because layout may be aligned precisely.\n\n globalRect.width -= 0.1;\n globalRect.height -= 0.1;\n globalRect.x += 0.05;\n globalRect.y += 0.05;\n var obb = labelItem.obb;\n var overlapped = false;\n\n for (var j = 0; j < displayedLabels.length; j++) {\n var existsTextCfg = displayedLabels[j]; // Fast rejection.\n\n if (!globalRect.intersect(existsTextCfg.rect)) {\n continue;\n }\n\n if (isAxisAligned && existsTextCfg.axisAligned) {\n // Is overlapped\n overlapped = true;\n break;\n }\n\n if (!existsTextCfg.obb) {\n // If self is not axis aligned. But other is.\n existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\n }\n\n if (!obb) {\n // If self is axis aligned. But other is not.\n obb = new OrientedBoundingRect(localRect, transform);\n }\n\n if (obb.intersect(existsTextCfg.obb)) {\n overlapped = true;\n break;\n }\n } // TODO Callback to determine if this overlap should be handled?\n\n\n if (overlapped) {\n hideEl(label);\n labelLine && hideEl(labelLine);\n } else {\n label.attr('ignore', labelItem.defaultAttr.ignore);\n labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\n displayedLabels.push(labelItem);\n }\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5df4f414\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"cStep-line\" }, null, -1))\nconst _hoisted_2 = {\n key: 0,\n class: \"cStep-assistLabel\"\n}\nconst _hoisted_3 = { class: \"cStep-icon\" }\nconst _hoisted_4 = { class: \"cStep-content\" }\nconst _hoisted_5 = { class: \"cStep-content_title\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"cStep-content_description\" }\n\nimport { withDefaults, inject } from 'vue';\r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'cStep',\n props: {\n modelValue: { default: 0 },\n direction: { default: 'vertical' },\n title: { default: '' },\n description: { default: '' },\n assistLabel: { default: '' },\n index: { default: 0 }\n },\n emits: [\"select\"],\n setup(__props: any, { emit: emits }: { emit: ({\r\n (e: 'select', val: number): void\r\n }), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { modelValue: number, direction: 'vertical' | 'horizontal', title: string, description: string, assistLabel: string, index: number };\n\r\n \r\n \r\n const strpsProp: any = inject('stepsProps');\r\n const select = () => {\r\n emits('select', props.index)\r\n }\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n onClick: select,\n class: _normalizeClass([\"cStep\", {active: _unref(strpsProp).modelValue == props.index}])\n }, [\n _hoisted_1,\n (props.assistLabel)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(props.assistLabel), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"icon\")\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n (props.title)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(props.title), 1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(props.description), 1),\n _renderSlot(_ctx.$slots, \"description\")\n ])\n ])\n ], 2))\n}\n}\n\n})","import script from \"./cStep.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./cStep.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./cStep.vue?vue&type=style&index=0&id=5df4f414&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5df4f414\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1508654f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"cSteps\" }\n\nimport { withDefaults, provide, inject } from 'vue';\r\n interface listItemRole {\r\n title: string | number,\r\n label: string | number\r\n }\r\n \r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'cSteps',\n props: {\n modelValue: { default: 0 },\n list: { default: [] },\n direction: { default: 'vertical' },\n height: { default: 0 }\n },\n setup(__props: any) {\n\nconst props = __props as { modelValue: number, list: listItemRole[], direction: 'vertical' | 'horizontal', height: number | string };\n\r\n \r\n provide('stepsProps', props);\r\n\r\n const select = () => {\r\n }\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"ul\", {\n class: _normalizeClass([\"cSteps\", [props.direction]]),\n style: _normalizeStyle({height: props.height})\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 6)\n ]))\n}\n}\n\n})","import script from \"./cSteps.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./cSteps.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./cSteps.vue?vue&type=style&index=0&id=1508654f&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1508654f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, unref as _unref, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"emrDetail-stepTitle emrDetail-stepTitle-out\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", null, \" \"),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"疗效指数\"),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"医生\")\n], -1)\nconst _hoisted_2 = { class: \"emrDetail-stepTitle\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"span\", null, \"关联临床研讨:\", -1)\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"span\", null, \"病案标签:\", -1)\nconst _hoisted_5 = { class: \"dialog-footer\" }\n\nimport { reactive, onMounted, ref, watch, toRefs, watchEffect, Ref, computed } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport cCell from '@c/public/cCell/cCell.vue'\r\nimport { cSteps, cStep } from '@c/public/cSteps';\r\nimport pickerGroup from '@c/public/pickerGroup/pickerGroup.vue'\r\nimport { emrDetail } from 'br-components'\r\nimport { ElNotification, ElLoading } from \"element-plus\";\r\nimport { detailRole } from './role'\r\nimport { getEmrDetail, getQueryStreamline, updateEmrType, getClinicalSeminarTree, saveClinicalSeminarEmr, getTmplInfoByid} from '@/request/api/xingling'\r\nimport { pbFn } from '@u/publicMethod'\r\nimport { drugUeWayList, qidList } from '@u/contant'\r\n\r\ninterface formItemRole {\r\n title: string\r\n label: string\r\n type: string\r\n labelTip?: boolean\r\n code?: string\r\n}\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'emrDetail',\n props: {\n modelValue: { type: Boolean, default: false },\n dataId: { default: '' },\n patnId: { default: '' },\n title: { default: '预览' },\n isSimplyType: { type: Boolean, default: false }\n },\n emits: [\"update:modelValue\", \"changeEmrType\"],\n setup(__props: any, { emit: emits }: { emit: ({\r\n (e: 'update:modelValue', val: boolean): void,\r\n (e: 'changeEmrType', val: any): void\r\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { modelValue: boolean, dataId: string, patnId: string, title: string, isSimplyType: boolean };\n\r\nconst { state } = useStore();\r\n\r\n/**\r\n * dataId: 病历id\r\n * patnId: 患者id\r\n */\r\n\r\n\r\nconst sexList = reactive(['', '男', '女'])\r\nconst medicineRadio: Ref = ref('');\r\nconst dataLoading = ref(true);\r\nconst listLoading = ref(true);\r\n\r\nconst startval = ref(pbFn.changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000).split(' ')[0]);\r\nconst endval = ref(pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0]);\r\nconst initDate = (): string[] => {\r\n startval.value = pbFn.changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000).split(' ')[0];\r\n endval.value = pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0];\r\n return [pbFn.changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000).split(' ')[0], pbFn.changeTimeToUse(new Date().getTime()).split(' ')[0]];\r\n}\r\nconst dateValue: Ref = ref(initDate())\r\nconst emrList: any = reactive([]);\r\nconst emrData: any = reactive({})\r\n\r\nconst defaultTmplSelectKeys: string[] = reactive([]) //默认选中的研讨\r\nconst curAutor = ref(false);//当前病案所属医生是否当前医生\r\nconst userName = computed(() => state.userInfo.B_RealName)\r\nconst selectTree = (e: any) => {\r\n if (e.level == 3 && !e.disabled) {\r\n let loading = ElLoading.service({\r\n lock: true,\r\n text: '正在保存...',\r\n background: 'rgba(0, 0, 0, 0.7)',\r\n })\r\n const vsErmList = saveClinicalSeminarEmr({\r\n data: {\r\n \"clinicalSeminarId\": e.grapaId,//临床研讨id ,\r\n \"mdtrtNo\": emrData.mdtrt_no,//就诊号 ,\r\n \"patnId\": emrData.patn_id,//患者id ,\r\n \"synDiffId\": e.id,// 辨证id ,\r\n \"tmplId\": e.parentId//模型id\r\n }\r\n })\r\n .then((data: any) => {\r\n const val = medicineRadio.value\r\n emits('changeEmrType', val)\r\n loading.close()\r\n })\r\n .catch((err: any) => {\r\n loading.close()\r\n });\r\n\r\n }\r\n}\r\n\r\n\r\n\r\nconst treeValue = ref('')\r\n\r\nconst clinicalSeminarTree: any = reactive([])\r\nconst treeData = ref(clinicalSeminarTree)\r\n\r\nconst caseList: formItemRole[] = reactive([\r\n { title: '主诉:', label: '', type: 'chfcomp' },\r\n { title: '现病史:', label: '', type: 'dise_now' },\r\n { title: '既往史:', label: '', type: 'dise_his' },\r\n { title: '过敏史:', label: '', type: 'algs_his' },\r\n { title: '个人史:', label: '', type: 'psn_his' },\r\n { title: '婚育史:', label: '', type: 'mrg_his' },\r\n { title: '家族史:', label: '', type: 'fm_his' },\r\n { title: '中医“四诊”观察结果:', label: '', type: 'tcm4d_rslt' },\r\n // { title: '体格检查:', label: '', type: 'chfcomp' },\r\n { title: '体格体征检查:', label: '', type: 'physexm' },\r\n { title: '辅助检查:', label: '', type: 'asst_exam_rslt' },\r\n { title: '中医诊断:', label: '', type: 'tcm_dise_name', labelTip: true },\r\n { title: '中医辨证:', label: '', type: 'tcm_symp_name', labelTip: true },\r\n { title: '西医诊断:', label: '', type: 'wm_diag_name', labelTip: true },\r\n { title: '辨证依据:', label: '', type: 'symp_evid' },\r\n { title: '治则治法:', label: '', type: 'prnp_trt', labelTip: true },\r\n { title: '医嘱信息:', label: '', type: '' },\r\n]);\r\nconst recipeData: any = reactive({})\r\nconst stepActive: Ref = ref(0)\r\n\r\nconst drugUeWayData: any = reactive({});\r\ndrugUeWayList.forEach(t => {\r\n drugUeWayData[t.id] = t.name;\r\n})\r\nconst qidData: any = reactive({});\r\nqidList.forEach(t => {\r\n qidData[t.value] = t.title;\r\n})\r\nconst selectStep = (idx: number) => {\r\n stepActive.value = idx\r\n getDetail(emrList[idx].id)\r\n}\r\nconst getData = async (data: detailRole) => {\r\n getDetail(data.dataId)\r\n getEmrList(data.patnId)\r\n}\r\nconst getDetail = async (id: string) => {\r\n dataLoading.value = true;\r\n const emrDetailData = await getEmrDetail({\r\n data: {\r\n id: id,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n if(emrDetailData.cseIsDeleted == 1){//关联研讨删除\r\n treeValue.value = ''\r\n }else if(emrDetailData.cseIsDeleted == 2){//关联研讨结束\r\n const getTmplInfo = await getTmplInfoByid({\r\n data: {\r\n id: emrDetailData.synDiffId,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n treeValue.value = getTmplInfo.alias ? getTmplInfo.name + '(' + getTmplInfo.alias + ')' : getTmplInfo.name\r\n\r\n }else{\r\n treeValue.value = emrDetailData.synDiffId\r\n }\r\n emrDetailData.mdtrt_date = emrDetailData.mdtrt_date ? emrDetailData.mdtrt_date.replace('T', ' ') : ''\r\n curAutor.value = emrDetailData.emrExpand.atddrName !== userName.value //病案医生和当前医生一致可选\r\n\r\n var wm_diagsArr = [], tcm_disesArr = []\r\n if ('tcm_dises' in emrDetailData == false || !emrDetailData.tcm_dises.length) {//不存在属性和没有数组,取字符串的值\r\n tcm_disesArr.push({\r\n name: emrDetailData.tcm_dise_name,\r\n code: emrDetailData.tcm_dise_code\r\n })\r\n emrDetailData.tcm_dises = tcm_disesArr\r\n }\r\n if ('wm_diags' in emrDetailData == false || !emrDetailData.wm_diags.length) {\r\n wm_diagsArr.push({\r\n name: emrDetailData.wm_diag_name,\r\n code: emrDetailData.wm_diag_code\r\n })\r\n emrDetailData.wm_diags = wm_diagsArr.length\r\n }\r\n\r\n Object.assign(emrData, emrDetailData)\r\n caseList.map(t => {\r\n if (t.type == 'tcm4d_rslt') {\r\n var label = '';\r\n var data: any = {};\r\n try {\r\n data = JSON.parse(emrDetailData[t.type] || '{}');\r\n } catch (error) {\r\n data = { key: emrDetailData[t.type] }\r\n }\r\n for (const v in data) {\r\n label += data[v] + ','\r\n }\r\n t.label = label.slice(0, label.length - 1)\r\n } else {\r\n if (t.labelTip) {\r\n if (t.type == 'tcm_dise_name') {\r\n t.code = emrDetailData.tcm_dise_code\r\n } else if (t.type == 'tcm_symp_name') {\r\n t.code = emrDetailData.tcm_symp_code\r\n } else if (t.type == 'wm_diag_name') {\r\n t.code = emrDetailData.wm_diag_code\r\n } else if (t.type == 'prnp_trt') {\r\n t.code = emrDetailData.prnp_trt_code\r\n }\r\n }\r\n t.label = emrDetailData[t.type];\r\n }\r\n\r\n return t\r\n })\r\n // recipeData.splice(0, recipeData.length, ...emrDetailData.drord);\r\n\r\n Object.assign(recipeData, emrDetailData.drord)\r\n medicineRadio.value = emrDetailData.emrExpand ? (emrDetailData.emrExpand.emrType === '' || emrDetailData.emrExpand.emrType === null) ? '' : emrDetailData.emrExpand.emrType : ''\r\n dataLoading.value = false;\r\n}\r\n\r\nconst getEmrList = async (id: string) => {\r\n listLoading.value = true;\r\n await getClinicalSeminarTree({\r\n data: {\r\n isSelectAll: true\r\n }\r\n })\r\n .then((data: any) => {\r\n const list: any[] = [];\r\n data.forEach((item: any) => {\r\n let tmplList: any = [];\r\n if (item.tmplList?.length) {\r\n item.tmplList.forEach((obj: any) => {\r\n let synList: any = []\r\n if (obj.synDiffList?.length) {\r\n obj.synDiffList.forEach((obj1: any) => {\r\n synList.push({\r\n ...obj1,\r\n grapaId: item.id,\r\n parentId: obj.id,\r\n label: obj1.alias ? obj1.name + '(' + obj1.alias + ')' : obj1.name,\r\n value: obj1.id,\r\n level: 3\r\n })\r\n\r\n })\r\n }\r\n tmplList.push({\r\n ...obj,\r\n label: obj.alias ? obj.dxName + '(' + obj.alias + ')' : obj.dxName,\r\n value: obj.id,\r\n level: 2,\r\n children: synList\r\n })\r\n\r\n\r\n })\r\n\r\n }\r\n list.push({\r\n ...item,\r\n label: item.name,\r\n value: item.id,\r\n level: 1,\r\n children: tmplList\r\n\r\n })\r\n clinicalSeminarTree.splice(0, clinicalSeminarTree.length, ...list)\r\n });\r\n })\r\n .catch((err: any) => { });\r\n const Treedata = ref(clinicalSeminarTree)\r\n\r\n const QueryStreamlineData = await getQueryStreamline({\r\n data: {\r\n patnId: id,\r\n startDate: startval.value,\r\n endDate: endval.value,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n\r\n QueryStreamlineData.splice(0, QueryStreamlineData.length, ...QueryStreamlineData)\r\n\r\n QueryStreamlineData.map((t: any, i: number) => {\r\n\r\n if (QueryStreamlineData[i + 1]) {\r\n var times = new Date(t.mdtrtDate).getTime() - new Date(QueryStreamlineData[i + 1].mdtrtDate).getTime();\r\n t.AssistLabel = Math.floor(times / (60 * 60 * 24 * 1000)) + '天'\r\n }\r\n return t\r\n })\r\n emrList.splice(0, emrList.length, ...QueryStreamlineData)\r\n\r\n QueryStreamlineData.forEach((t: any, i: number) => {\r\n if (t.id == props.dataId) {\r\n stepActive.value = i\r\n }\r\n })\r\n\r\n\r\n listLoading.value = false;\r\n}\r\n\r\nwatch(() => props.modelValue, (val: boolean) => {\r\n dateValue.value = initDate()\r\n\r\n\r\n if (val) {\r\n // stepActive.value = emrList.filter(t => t.)\r\n getData({\r\n dataId: props.dataId,\r\n patnId: props.patnId\r\n })\r\n }\r\n\r\n})\r\nwatch(startval, data => {\r\n if (data == null) {\r\n startval.value = ''\r\n } else {\r\n getEmrList(props.patnId)\r\n }\r\n})\r\nwatch(endval, data => {\r\n if (data == null) {\r\n endval.value = ''\r\n } else {\r\n getEmrList(props.patnId)\r\n }\r\n})\r\n//修改精选、存疑\r\nconst changeEmrType = async (val: any) => {\r\n dataLoading.value = true;\r\n await updateEmrType({\r\n data: {\r\n \"emrType\": val,\r\n //\"id\": props.dataId,\r\n \"id\": emrList[stepActive.value].id,\r\n _times: new Date().getTime()\r\n }\r\n })\r\n dataLoading.value = false;\r\n\r\n emits('changeEmrType', val)\r\n}\r\n// watch(medicineRadio, async val => {\r\n// dataLoading.value = true;\r\n// await updateEmrType({\r\n// data: {\r\n// \"emrType\": val,\r\n// \"id\": props.dataId,\r\n// _times: new Date().getTime()\r\n// }\r\n// })\r\n// dataLoading.value = false;\r\n// emits('changeEmrType', val)\r\n// })\r\n\r\nconst onClose = () => {\r\n emits('update:modelValue', false)\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_space = _resolveComponent(\"el-space\")!\n const _component_el_aside = _resolveComponent(\"el-aside\")!\n const _component_el_tree_select = _resolveComponent(\"el-tree-select\")!\n const _component_el_option = _resolveComponent(\"el-option\")!\n const _component_el_select = _resolveComponent(\"el-select\")!\n const _component_el_header = _resolveComponent(\"el-header\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createBlock(_component_el_dialog, {\n modelValue: props.modelValue,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((props.modelValue) = $event)),\n title: __props.title,\n width: \"80%\",\n onClose: onClose,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"custom-class\": \"emrDetail\"\n }, {\n footer: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_5, [\n _createVNode(_component_el_button, {\n type: \"success\",\n plain: \"\",\n onClick: onClose\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_el_container, {\n class: _normalizeClass([\"emrDetail-container\", [__props.isSimplyType === false ? '' : 'simple']])\n }, {\n default: _withCtx(() => [\n (!__props.isSimplyType)\n ? (_openBlock(), _createBlock(_component_el_aside, {\n key: 0,\n class: \"emrDetail-aside\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_space, null, {\n default: _withCtx(() => [\n _createVNode(pickerGroup, {\n startDate: startval.value,\n \"onUpdate:startDate\": _cache[0] || (_cache[0] = ($event: any) => ((startval).value = $event)),\n endDate: endval.value,\n \"onUpdate:endDate\": _cache[1] || (_cache[1] = ($event: any) => ((endval).value = $event))\n }, null, 8, [\"startDate\", \"endDate\"])\n ]),\n _: 1\n }),\n _hoisted_1,\n _createVNode(_unref(cSteps), {\n class: \"emrDetail-step scrollGood\",\n height: emrList.length * 90 + 'px',\n modelValue: stepActive.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((stepActive).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(emrList, (item, idx) => {\n return (_openBlock(), _createBlock(_unref(cStep), {\n assistLabel: item.AssistLabel,\n class: \"pointer\",\n onSelect: selectStep,\n index: idx,\n description: item.tcmDiseName + '(' + item.tcmSympName + ')',\n key: idx\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(item.mdtrtDate ? item.mdtrtDate.split('T')[0] : ''), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.emrExpand.curEff > -1 ? item.emrExpand.curEff + '%' : '--'), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.emrExpand.atddrName != _unref(userName) ? item.emrExpand.atddrName : ''), 1)\n ])\n ]),\n _: 2\n }, 1032, [\"assistLabel\", \"index\", \"description\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"height\", \"modelValue\"])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_el_container, { class: \"emrDetail-container\" }, {\n default: _withCtx(() => [\n _createVNode(_component_el_header, { class: \"emrDetail-header\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", null, [\n _hoisted_3,\n _createVNode(_component_el_tree_select, {\n modelValue: treeValue.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((treeValue).value = $event)),\n class: \"select-height\",\n clearable: \"\",\n filterable: \"\",\n data: treeData.value,\n onNodeClick: selectTree,\n disabled: __props.isSimplyType || emrData.cseIsDeleted == 2 || curAutor.value\n }, null, 8, [\"modelValue\", \"data\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", null, [\n _hoisted_4,\n _createVNode(_component_el_select, {\n onChange: changeEmrType,\n modelValue: medicineRadio.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((medicineRadio).value = $event)),\n placeholder: \"请选择\",\n disabled: __props.isSimplyType || curAutor.value\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_option, {\n label: \"请选择\",\n value: \"\"\n }),\n _createVNode(_component_el_option, {\n label: \"精选病案\",\n value: 0\n }),\n _createVNode(_component_el_option, {\n label: \"存疑病案\",\n value: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"])\n ])\n ]),\n _: 1\n }),\n _withDirectives((_openBlock(), _createBlock(_component_el_main, { class: \"emrDetail-form\" }, {\n default: _withCtx(() => [\n (!dataLoading.value)\n ? (_openBlock(), _createBlock(_unref(emrDetail), {\n key: 0,\n emrData: emrData\n }, null, 8, [\"emrData\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })), [\n [_directive_loading, dataLoading.value]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"title\"]))\n}\n}\n\n})","import script from \"./emrDetail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./emrDetail.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./emrDetail.vue?vue&type=style&index=0&id=2de394cd&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./datanalysis.vue?vue&type=style&index=0&id=47859902&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./pinyinSelect.vue?vue&type=style&index=0&id=aa5070a6&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./breadnav.vue?vue&type=style&index=0&id=607436bd&lang=scss&scoped=true\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\n\nvar TooltipModel =\n/** @class */\nfunction (_super) {\n __extends(TooltipModel, _super);\n\n function TooltipModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = TooltipModel.type;\n return _this;\n }\n\n TooltipModel.type = 'tooltip';\n TooltipModel.dependencies = ['axisPointer'];\n TooltipModel.defaultOption = {\n // zlevel: 0,\n z: 60,\n show: true,\n // tooltip main content\n showContent: true,\n // 'trigger' only works on coordinate system.\n // 'item' | 'axis' | 'none'\n trigger: 'item',\n // 'click' | 'mousemove' | 'none'\n triggerOn: 'mousemove|click',\n alwaysShowContent: false,\n displayMode: 'single',\n renderMode: 'auto',\n // whether restraint content inside viewRect.\n // If renderMode: 'richText', default true.\n // If renderMode: 'html', defaut false (for backward compat).\n confine: null,\n showDelay: 0,\n hideDelay: 100,\n // Animation transition time, unit is second\n transitionDuration: 0.4,\n enterable: false,\n backgroundColor: '#fff',\n // box shadow\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, .2)',\n shadowOffsetX: 1,\n shadowOffsetY: 2,\n // tooltip border radius, unit is px, default is 4\n borderRadius: 4,\n // tooltip border width, unit is px, default is 0 (no border)\n borderWidth: 1,\n // Tooltip inside padding, default is 5 for all direction\n // Array is allowed to set up, right, bottom, left, same with css\n // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`.\n padding: null,\n // Extra css text\n extraCssText: '',\n // axis indicator, trigger by axis\n axisPointer: {\n // default is line\n // legal values: 'line' | 'shadow' | 'cross'\n type: 'line',\n // Valid when type is line, appoint tooltip line locate on which line. Optional\n // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto'\n // default is 'auto', chose the axis which type is category.\n // for multiply y axis, cartesian coord chose x axis, polar chose angle axis\n axis: 'auto',\n animation: 'auto',\n animationDurationUpdate: 200,\n animationEasingUpdate: 'exponentialOut',\n crossStyle: {\n color: '#999',\n width: 1,\n type: 'dashed',\n // TODO formatter\n textStyle: {}\n } // lineStyle and shadowStyle should not be specified here,\n // otherwise it will always override those styles on option.axisPointer.\n\n },\n textStyle: {\n color: '#666',\n fontSize: 14\n }\n };\n return TooltipModel;\n}(ComponentModel);\n\nexport default TooltipModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { toCamelCase } from '../../util/format.js';\nimport env from 'zrender/lib/core/env.js';\n/* global document */\n\nexport function shouldTooltipConfine(tooltipModel) {\n var confineOption = tooltipModel.get('confine');\n return confineOption != null ? !!confineOption // In richText mode, the outside part can not be visible.\n : tooltipModel.get('renderMode') === 'richText';\n}\n\nfunction testStyle(styleProps) {\n if (!env.domSupported) {\n return;\n }\n\n var style = document.documentElement.style;\n\n for (var i = 0, len = styleProps.length; i < len; i++) {\n if (styleProps[i] in style) {\n return styleProps[i];\n }\n }\n}\n\nexport var TRANSFORM_VENDOR = testStyle(['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\nexport var TRANSITION_VENDOR = testStyle(['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\nexport function toCSSVendorPrefix(styleVendor, styleProp) {\n if (!styleVendor) {\n return styleProp;\n }\n\n styleProp = toCamelCase(styleProp, true);\n var idx = styleVendor.indexOf(styleProp);\n styleVendor = idx === -1 ? styleProp : \"-\" + styleVendor.slice(0, idx) + \"-\" + styleProp;\n return styleVendor.toLowerCase();\n}\nexport function getComputedStyle(el, style) {\n var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el);\n return stl ? style ? stl[style] : stl : null;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isString, indexOf, each, bind, isArray, isDom } from 'zrender/lib/core/util.js';\nimport { normalizeEvent } from 'zrender/lib/core/event.js';\nimport { transformLocalCoord } from 'zrender/lib/core/dom.js';\nimport env from 'zrender/lib/core/env.js';\nimport { convertToColorString, toCamelCase, normalizeCssArray } from '../../util/format.js';\nimport { shouldTooltipConfine, toCSSVendorPrefix, getComputedStyle, TRANSFORM_VENDOR, TRANSITION_VENDOR } from './helper.js';\nimport { getPaddingFromTooltipModel } from './tooltipMarkup.js';\n/* global document, window */\n\nvar CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, 'transition');\nvar CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, 'transform'); // eslint-disable-next-line\n\nvar gCssText = \"position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;\" + (env.transform3dSupported ? 'will-change:transform;' : '');\n\nfunction mirrorPos(pos) {\n pos = pos === 'left' ? 'right' : pos === 'right' ? 'left' : pos === 'top' ? 'bottom' : 'top';\n return pos;\n}\n\nfunction assembleArrow(tooltipModel, borderColor, arrowPosition) {\n if (!isString(arrowPosition) || arrowPosition === 'inside') {\n return '';\n }\n\n var backgroundColor = tooltipModel.get('backgroundColor');\n var borderWidth = tooltipModel.get('borderWidth');\n borderColor = convertToColorString(borderColor);\n var arrowPos = mirrorPos(arrowPosition);\n var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6);\n var positionStyle = '';\n var transformStyle = CSS_TRANSFORM_VENDOR + ':';\n var rotateDeg;\n\n if (indexOf(['left', 'right'], arrowPos) > -1) {\n positionStyle += 'top:50%';\n transformStyle += \"translateY(-50%) rotate(\" + (rotateDeg = arrowPos === 'left' ? -225 : -45) + \"deg)\";\n } else {\n positionStyle += 'left:50%';\n transformStyle += \"translateX(-50%) rotate(\" + (rotateDeg = arrowPos === 'top' ? 225 : 45) + \"deg)\";\n }\n\n var rotateRadian = rotateDeg * Math.PI / 180;\n var arrowWH = arrowSize + borderWidth;\n var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian));\n var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100;\n positionStyle += \";\" + arrowPos + \":-\" + arrowOffset + \"px\";\n var borderStyle = borderColor + \" solid \" + borderWidth + \"px;\";\n var styleCss = [\"position:absolute;width:\" + arrowSize + \"px;height:\" + arrowSize + \"px;\", positionStyle + \";\" + transformStyle + \";\", \"border-bottom:\" + borderStyle, \"border-right:\" + borderStyle, \"background-color:\" + backgroundColor + \";\"];\n return \"
\";\n}\n\nfunction assembleTransition(duration, onlyFade) {\n var transitionCurve = 'cubic-bezier(0.23,1,0.32,1)';\n var transitionOption = \" \" + duration / 2 + \"s \" + transitionCurve;\n var transitionText = \"opacity\" + transitionOption + \",visibility\" + transitionOption;\n\n if (!onlyFade) {\n transitionOption = \" \" + duration + \"s \" + transitionCurve;\n transitionText += env.transformSupported ? \",\" + CSS_TRANSFORM_VENDOR + transitionOption : \",left\" + transitionOption + \",top\" + transitionOption;\n }\n\n return CSS_TRANSITION_VENDOR + ':' + transitionText;\n}\n\nfunction assembleTransform(x, y, toString) {\n // If using float on style, the final width of the dom might\n // keep changing slightly while mouse move. So `toFixed(0)` them.\n var x0 = x.toFixed(0) + 'px';\n var y0 = y.toFixed(0) + 'px'; // not support transform, use `left` and `top` instead.\n\n if (!env.transformSupported) {\n return toString ? \"top:\" + y0 + \";left:\" + x0 + \";\" : [['top', y0], ['left', x0]];\n } // support transform\n\n\n var is3d = env.transform3dSupported;\n var translate = \"translate\" + (is3d ? '3d' : '') + \"(\" + x0 + \",\" + y0 + (is3d ? ',0' : '') + \")\";\n return toString ? 'top:0;left:0;' + CSS_TRANSFORM_VENDOR + ':' + translate + ';' : [['top', 0], ['left', 0], [TRANSFORM_VENDOR, translate]];\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n var cssText = [];\n var fontSize = textStyleModel.get('fontSize');\n var color = textStyleModel.getTextColor();\n color && cssText.push('color:' + color);\n cssText.push('font:' + textStyleModel.getFont());\n fontSize // @ts-ignore, leave it to the tooltip refactor.\n && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\n var shadowColor = textStyleModel.get('textShadowColor');\n var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\n var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\n var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\n shadowColor && shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor);\n each(['decoration', 'align'], function (name) {\n var val = textStyleModel.get(name);\n val && cssText.push('text-' + name + ':' + val);\n });\n return cssText.join(';');\n}\n\nfunction assembleCssText(tooltipModel, enableTransition, onlyFade) {\n var cssText = [];\n var transitionDuration = tooltipModel.get('transitionDuration');\n var backgroundColor = tooltipModel.get('backgroundColor');\n var shadowBlur = tooltipModel.get('shadowBlur');\n var shadowColor = tooltipModel.get('shadowColor');\n var shadowOffsetX = tooltipModel.get('shadowOffsetX');\n var shadowOffsetY = tooltipModel.get('shadowOffsetY');\n var textStyleModel = tooltipModel.getModel('textStyle');\n var padding = getPaddingFromTooltipModel(tooltipModel, 'html');\n var boxShadow = shadowOffsetX + \"px \" + shadowOffsetY + \"px \" + shadowBlur + \"px \" + shadowColor;\n cssText.push('box-shadow:' + boxShadow); // Animation transition. Do not animate when transitionDuration is 0.\n\n enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));\n\n if (backgroundColor) {\n cssText.push('background-color:' + backgroundColor);\n } // Border style\n\n\n each(['width', 'color', 'radius'], function (name) {\n var borderName = 'border-' + name;\n var camelCase = toCamelCase(borderName);\n var val = tooltipModel.get(camelCase);\n val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n }); // Text style\n\n cssText.push(assembleFont(textStyleModel)); // Padding\n\n if (padding != null) {\n cssText.push('padding:' + normalizeCssArray(padding).join('px ') + 'px');\n }\n\n return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n var zrPainter = zr && zr.painter;\n\n if (appendToBody) {\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n if (zrViewportRoot) {\n // Some APPs might use scale on body, so we support CSS transform here.\n transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n }\n } else {\n out[0] = zrX;\n out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n // the sibling of canvas root. So padding of ec container\n // should be considered here.\n\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n if (viewportRootOffset) {\n out[0] += viewportRootOffset.offsetLeft;\n out[1] += viewportRootOffset.offsetTop;\n }\n }\n\n out[2] = out[0] / zr.getWidth();\n out[3] = out[1] / zr.getHeight();\n}\n\nvar TooltipHTMLContent =\n/** @class */\nfunction () {\n function TooltipHTMLContent(container, api, opt) {\n this._show = false;\n this._styleCoord = [0, 0, 0, 0];\n this._enterable = true;\n this._firstShow = true;\n this._longHide = true;\n\n if (env.wxa) {\n return null;\n }\n\n var el = document.createElement('div'); // TODO: TYPE\n\n el.domBelongToZr = true;\n this.el = el;\n var zr = this._zr = api.getZr();\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n if (appendToBody) {\n document.body.appendChild(el);\n } else {\n container.appendChild(el);\n }\n\n this._container = container; // FIXME\n // Is it needed to trigger zr event manually if\n // the browser do not support `pointer-events: none`.\n\n var self = this;\n\n el.onmouseenter = function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n };\n\n el.onmousemove = function (e) {\n e = e || window.event;\n\n if (!self._enterable) {\n // `pointer-events: none` is set to tooltip content div\n // if `enterable` is set as `false`, and `el.onmousemove`\n // can not be triggered. But in browser that do not\n // support `pointer-events`, we need to do this:\n // Try trigger zrender event to avoid mouse\n // in and out shape too frequently\n var handler = zr.handler;\n var zrViewportRoot = zr.painter.getViewportRoot();\n normalizeEvent(zrViewportRoot, e, true);\n handler.dispatch('mousemove', e);\n }\n };\n\n el.onmouseleave = function () {\n // set `_inContent` to `false` before `hideLater`\n self._inContent = false;\n\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n };\n }\n /**\n * Update when tooltip is rendered\n */\n\n\n TooltipHTMLContent.prototype.update = function (tooltipModel) {\n // FIXME\n // Move this logic to ec main?\n var container = this._container;\n var position = getComputedStyle(container, 'position');\n var domStyle = container.style;\n\n if (domStyle.position !== 'absolute' && position !== 'absolute') {\n domStyle.position = 'relative';\n } // move tooltip if chart resized\n\n\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveIfResized(); // update className\n\n this.el.className = tooltipModel.get('className') || ''; // Hide the tooltip\n // PENDING\n // this.hide();\n };\n\n TooltipHTMLContent.prototype.show = function (tooltipModel, nearPointColor) {\n clearTimeout(this._hideTimeout);\n clearTimeout(this._longHideTimeout);\n var el = this.el;\n var style = el.style;\n var styleCoord = this._styleCoord;\n\n if (!el.innerHTML) {\n style.display = 'none';\n } else {\n style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) // initial transform\n + assembleTransform(styleCoord[0], styleCoord[1], true) + (\"border-color:\" + convertToColorString(nearPointColor) + \";\") + (tooltipModel.get('extraCssText') || '') // If mouse occasionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cause some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not supported by IE8~IE10, fortunately it is a rare\n // scenario.\n + (\";pointer-events:\" + (this._enterable ? 'auto' : 'none'));\n }\n\n this._show = true;\n this._firstShow = false;\n this._longHide = false;\n };\n\n TooltipHTMLContent.prototype.setContent = function (content, markers, tooltipModel, borderColor, arrowPosition) {\n var el = this.el;\n\n if (content == null) {\n el.innerHTML = '';\n return;\n }\n\n var arrow = '';\n\n if (isString(arrowPosition) && tooltipModel.get('trigger') === 'item' && !shouldTooltipConfine(tooltipModel)) {\n arrow = assembleArrow(tooltipModel, borderColor, arrowPosition);\n }\n\n if (isString(content)) {\n el.innerHTML = content + arrow;\n } else if (content) {\n // Clear previous\n el.innerHTML = '';\n\n if (!isArray(content)) {\n content = [content];\n }\n\n for (var i = 0; i < content.length; i++) {\n if (isDom(content[i]) && content[i].parentNode !== el) {\n el.appendChild(content[i]);\n }\n } // no arrow if empty\n\n\n if (arrow && el.childNodes.length) {\n // no need to create a new parent element, but it's not supported by IE 10 and older.\n // const arrowEl = document.createRange().createContextualFragment(arrow);\n var arrowEl = document.createElement('div');\n arrowEl.innerHTML = arrow;\n el.appendChild(arrowEl);\n }\n }\n };\n\n TooltipHTMLContent.prototype.setEnterable = function (enterable) {\n this._enterable = enterable;\n };\n\n TooltipHTMLContent.prototype.getSize = function () {\n var el = this.el;\n return [el.offsetWidth, el.offsetHeight];\n };\n\n TooltipHTMLContent.prototype.moveTo = function (zrX, zrY) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n\n if (styleCoord[0] != null && styleCoord[1] != null) {\n var style_1 = this.el.style;\n var transforms = assembleTransform(styleCoord[0], styleCoord[1]);\n each(transforms, function (transform) {\n style_1[transform[0]] = transform[1];\n });\n }\n };\n /**\n * when `alwaysShowContent` is true,\n * move the tooltip after chart resized\n */\n\n\n TooltipHTMLContent.prototype._moveIfResized = function () {\n // The ratio of left to width\n var ratioX = this._styleCoord[2]; // The ratio of top to height\n\n var ratioY = this._styleCoord[3];\n this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\n };\n\n TooltipHTMLContent.prototype.hide = function () {\n var _this = this;\n\n var style = this.el.style;\n style.visibility = 'hidden';\n style.opacity = '0';\n env.transform3dSupported && (style.willChange = '');\n this._show = false;\n this._longHideTimeout = setTimeout(function () {\n return _this._longHide = true;\n }, 500);\n };\n\n TooltipHTMLContent.prototype.hideLater = function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n };\n\n TooltipHTMLContent.prototype.isShow = function () {\n return this._show;\n };\n\n TooltipHTMLContent.prototype.dispose = function () {\n this.el.parentNode.removeChild(this.el);\n };\n\n return TooltipHTMLContent;\n}();\n\nexport default TooltipHTMLContent;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\nimport { getPaddingFromTooltipModel } from './tooltipMarkup.js';\nimport { throwError } from '../../util/log.js';\n\nvar TooltipRichContent =\n/** @class */\nfunction () {\n function TooltipRichContent(api) {\n this._show = false;\n this._styleCoord = [0, 0, 0, 0];\n this._enterable = true;\n this._zr = api.getZr();\n makeStyleCoord(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);\n }\n /**\n * Update when tooltip is rendered\n */\n\n\n TooltipRichContent.prototype.update = function (tooltipModel) {\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveIfResized();\n };\n\n TooltipRichContent.prototype.show = function () {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n this.el.show();\n this._show = true;\n };\n /**\n * Set tooltip content\n */\n\n\n TooltipRichContent.prototype.setContent = function (content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {\n var _this = this;\n\n if (zrUtil.isObject(content)) {\n throwError(process.env.NODE_ENV !== 'production' ? 'Passing DOM nodes as content is not supported in richText tooltip!' : '');\n }\n\n if (this.el) {\n this._zr.remove(this.el);\n }\n\n var textStyleModel = tooltipModel.getModel('textStyle');\n this.el = new ZRText({\n style: {\n rich: markupStyleCreator.richTextStyles,\n text: content,\n lineHeight: 22,\n borderWidth: 1,\n borderColor: borderColor,\n textShadowColor: textStyleModel.get('textShadowColor'),\n fill: tooltipModel.get(['textStyle', 'color']),\n padding: getPaddingFromTooltipModel(tooltipModel, 'richText'),\n verticalAlign: 'top',\n align: 'left'\n },\n z: tooltipModel.get('z')\n });\n zrUtil.each(['backgroundColor', 'borderRadius', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'], function (propName) {\n _this.el.style[propName] = tooltipModel.get(propName);\n });\n zrUtil.each(['textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'], function (propName) {\n _this.el.style[propName] = textStyleModel.get(propName) || 0;\n });\n\n this._zr.add(this.el);\n\n var self = this;\n this.el.on('mouseover', function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n });\n this.el.on('mouseout', function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n });\n };\n\n TooltipRichContent.prototype.setEnterable = function (enterable) {\n this._enterable = enterable;\n };\n\n TooltipRichContent.prototype.getSize = function () {\n var el = this.el;\n var bounding = this.el.getBoundingRect(); // bounding rect does not include shadow. For renderMode richText,\n // if overflow, it will be cut. So calculate them accurately.\n\n var shadowOuterSize = calcShadowOuterSize(el.style);\n return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom];\n };\n\n TooltipRichContent.prototype.moveTo = function (x, y) {\n var el = this.el;\n\n if (el) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, x, y);\n x = styleCoord[0];\n y = styleCoord[1];\n var style = el.style;\n var borderWidth = mathMaxWith0(style.borderWidth || 0);\n var shadowOuterSize = calcShadowOuterSize(style); // rich text x, y do not include border.\n\n el.x = x + borderWidth + shadowOuterSize.left;\n el.y = y + borderWidth + shadowOuterSize.top;\n el.markRedraw();\n }\n };\n /**\n * when `alwaysShowContent` is true,\n * move the tooltip after chart resized\n */\n\n\n TooltipRichContent.prototype._moveIfResized = function () {\n // The ratio of left to width\n var ratioX = this._styleCoord[2]; // The ratio of top to height\n\n var ratioY = this._styleCoord[3];\n this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\n };\n\n TooltipRichContent.prototype.hide = function () {\n if (this.el) {\n this.el.hide();\n }\n\n this._show = false;\n };\n\n TooltipRichContent.prototype.hideLater = function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n };\n\n TooltipRichContent.prototype.isShow = function () {\n return this._show;\n };\n\n TooltipRichContent.prototype.dispose = function () {\n this._zr.remove(this.el);\n };\n\n return TooltipRichContent;\n}();\n\nfunction mathMaxWith0(val) {\n return Math.max(0, val);\n}\n\nfunction calcShadowOuterSize(style) {\n var shadowBlur = mathMaxWith0(style.shadowBlur || 0);\n var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0);\n var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0);\n return {\n left: mathMaxWith0(shadowBlur - shadowOffsetX),\n right: mathMaxWith0(shadowBlur + shadowOffsetX),\n top: mathMaxWith0(shadowBlur - shadowOffsetY),\n bottom: mathMaxWith0(shadowBlur + shadowOffsetY)\n };\n}\n\nfunction makeStyleCoord(out, zr, zrX, zrY) {\n out[0] = zrX;\n out[1] = zrY;\n out[2] = out[0] / zr.getWidth();\n out[3] = out[1] / zr.getHeight();\n}\n\nexport default TooltipRichContent;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport { __extends } from \"tslib\";\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nimport { bind, each, clone, trim, isString, isFunction, isArray, isObject, extend } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport TooltipHTMLContent from './TooltipHTMLContent.js';\nimport TooltipRichContent from './TooltipRichContent.js';\nimport { convertToColorString, formatTpl } from '../../util/format.js';\nimport { parsePercent } from '../../util/number.js';\nimport { Rect } from '../../util/graphic.js';\nimport findPointFromSeries from '../axisPointer/findPointFromSeries.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport Model from '../../model/Model.js';\nimport * as globalListener from '../axisPointer/globalListener.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport * as axisPointerViewHelper from '../axisPointer/viewHelper.js';\nimport { getTooltipRenderMode, preParseFinder, queryReferringComponents } from '../../util/model.js';\nimport ComponentView from '../../view/Component.js';\nimport { format as timeFormat } from '../../util/time.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { shouldTooltipConfine } from './helper.js';\nimport { normalizeTooltipFormatResult } from '../../model/mixin/dataFormat.js';\nimport { createTooltipMarkup, buildTooltipMarkup, TooltipMarkupStyleCreator } from './tooltipMarkup.js';\nimport { findEventDispatcher } from '../../util/event.js';\nimport { clear, createOrUpdate } from '../../util/throttle.js';\nvar proxyRect = new Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar TooltipView =\n/** @class */\nfunction (_super) {\n __extends(TooltipView, _super);\n\n function TooltipView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = TooltipView.type;\n return _this;\n }\n\n TooltipView.prototype.init = function (ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get('renderMode'));\n this._tooltipContent = renderMode === 'richText' ? new TooltipRichContent(api) : new TooltipHTMLContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n };\n\n TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n this._tooltipModel = tooltipModel;\n this._ecModel = ecModel;\n this._api = api;\n /**\n * @private\n * @type {boolean}\n */\n\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n var tooltipContent = this._tooltipContent;\n tooltipContent.update(tooltipModel);\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow(); // PENDING\n // `mousemove` event will be triggered very frequently when the mouse moves fast,\n // which causes that the `updatePosition` function was also called frequently.\n // In Chrome with devtools open and Firefox, tooltip looks laggy and shakes. See #14695 #16101\n // To avoid frequent triggering,\n // consider throttling it in 50ms when transition is enabled\n\n\n if (this._renderMode !== 'richText' && tooltipModel.get('transitionDuration')) {\n createOrUpdate(this, '_updatePosition', 50, 'fixRate');\n } else {\n clear(this, '_updatePosition');\n }\n };\n\n TooltipView.prototype._initGlobalListener = function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n };\n\n TooltipView.prototype._keepShow = function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api;\n var triggerOn = tooltipModel.get('triggerOn'); // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && triggerOn !== 'none' && triggerOn !== 'click') {\n var self_1 = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self_1._lastX,\n y: self_1._lastY,\n dataByCoordSys: self_1._lastDataByCoordSys\n });\n });\n }\n };\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n\n\n TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node || !api.getDom()) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n var cmptRef = findComponentReference(payload, ecModel, api);\n\n if (cmptRef) {\n var rect = cmptRef.el.getBoundingRect().clone();\n rect.applyTransform(cmptRef.el.transform);\n\n this._tryShow({\n offsetX: rect.x + rect.width / 2,\n offsetY: rect.y + rect.height / 2,\n target: cmptRef.el,\n position: payload.position,\n // When manully trigger, the mouse is not on the el, so we'd better to\n // position tooltip on the bottom of the el and display arrow is possible.\n positionDefault: 'bottom'\n }, dispatchAction);\n } else if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.x = payload.x;\n el.y = payload.y;\n el.update();\n getECData(el).tooltipConfig = {\n name: null,\n option: payload.tooltip\n }; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n target: pointInfo.el,\n position: payload.position,\n // When manully trigger, the mouse is not on the el, so we'd better to\n // position tooltip on the bottom of the el and display arrow is possible.\n positionDefault: 'bottom'\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n };\n\n TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (!this._alwaysShowContent && this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = this._lastDataByCoordSys = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n }; // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n\n\n TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex; // @ts-ignore\n\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel);\n\n if (tooltipCascadedModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n };\n\n TooltipView.prototype._tryShow = function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } else if (el) {\n this._lastDataByCoordSys = null;\n var seriesDispatcher_1;\n var cmptDispatcher_1;\n findEventDispatcher(el, function (target) {\n // Always show item tooltip if mouse is on the element with dataIndex\n if (getECData(target).dataIndex != null) {\n seriesDispatcher_1 = target;\n return true;\n } // Tooltip provided directly. Like legend.\n\n\n if (getECData(target).tooltipConfig != null) {\n cmptDispatcher_1 = target;\n return true;\n }\n }, true);\n\n if (seriesDispatcher_1) {\n this._showSeriesItemTooltip(e, seriesDispatcher_1, dispatchAction);\n } else if (cmptDispatcher_1) {\n this._showComponentItemTooltip(e, cmptDispatcher_1, dispatchAction);\n } else {\n this._hide(dispatchAction);\n }\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n };\n\n TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easier to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n };\n\n TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption], globalTooltipModel);\n var renderMode = this._renderMode;\n var cbParamsList = [];\n var articleMarkup = createTooltipMarkup('section', {\n blocks: [],\n noHeader: true\n }); // Only for legacy: `Serise['formatTooltip']` returns a string.\n\n var markupTextArrLegacy = [];\n var markupStyleCreator = new TooltipMarkupStyleCreator();\n each(dataByCoordSys, function (itemCoordSys) {\n each(itemCoordSys.dataByAxis, function (axisItem) {\n var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex);\n var axisValue = axisItem.value;\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var axisValueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);\n var axisSectionMarkup = createTooltipMarkup('section', {\n header: axisValueLabel,\n noHeader: !trim(axisValueLabel),\n sortBlocks: true,\n blocks: []\n });\n articleMarkup.blocks.push(axisSectionMarkup);\n each(axisItem.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var cbParams = series.getDataParams(dataIndex); // Can't find data.\n\n if (cbParams.dataIndex < 0) {\n return;\n }\n\n cbParams.axisDim = axisItem.axisDim;\n cbParams.axisIndex = axisItem.axisIndex;\n cbParams.axisType = axisItem.axisType;\n cbParams.axisId = axisItem.axisId;\n cbParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, {\n value: axisValue\n });\n cbParams.axisValueLabel = axisValueLabel; // Pre-create marker style for makers. Users can assemble richText\n // text in `formatter` callback and use those markers style.\n\n cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode);\n var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));\n var frag = seriesTooltipResult.frag;\n\n if (frag) {\n var valueFormatter = buildTooltipModel([series], globalTooltipModel).get('valueFormatter');\n axisSectionMarkup.blocks.push(valueFormatter ? extend({\n valueFormatter: valueFormatter\n }, frag) : frag);\n }\n\n if (seriesTooltipResult.text) {\n markupTextArrLegacy.push(seriesTooltipResult.text);\n }\n\n cbParamsList.push(cbParams);\n });\n });\n }); // In most cases, the second axis is displays upper on the first one.\n // So we reverse it to look better.\n\n articleMarkup.blocks.reverse();\n markupTextArrLegacy.reverse();\n var positionExpr = e.position;\n var orderMode = singleTooltipModel.get('order');\n var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), singleTooltipModel.get('textStyle'));\n builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);\n var blockBreak = renderMode === 'richText' ? '\\n\\n' : '
';\n var allMarkupText = markupTextArrLegacy.join(blockBreak);\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n };\n\n TooltipView.prototype._showSeriesItemTooltip = function (e, dispatcher, dispatchAction) {\n var ecModel = this._ecModel;\n var ecData = getECData(dispatcher); // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = ecData.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = ecData.dataModel || seriesModel;\n var dataIndex = ecData.dataIndex;\n var dataType = ecData.dataType;\n var data = dataModel.getData(dataType);\n var renderMode = this._renderMode;\n var positionDefault = e.positionDefault;\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? {\n position: positionDefault\n } : null);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var markupStyleCreator = new TooltipMarkupStyleCreator(); // Pre-create marker style for makers. Users can assemble richText\n // text in `formatter` callback and use those markers style.\n\n params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode);\n var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));\n var orderMode = tooltipModel.get('order');\n var valueFormatter = tooltipModel.get('valueFormatter');\n var frag = seriesTooltipResult.frag;\n var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({\n valueFormatter: valueFormatter\n }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), tooltipModel.get('textStyle')) : seriesTooltipResult.text;\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n };\n\n TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) {\n var ecData = getECData(el);\n var tooltipConfig = ecData.tooltipConfig;\n var tooltipOpt = tooltipConfig.option || {};\n\n if (isString(tooltipOpt)) {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var tooltipModelCascade = [tooltipOpt];\n\n var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex);\n\n if (cmpt) {\n tooltipModelCascade.push(cmpt);\n } // In most cases, component tooltip formatter has different params with series tooltip formatter,\n // so that they can not share the same formatter. Since the global tooltip formatter is used for series\n // by convension, we do not use it as the default formatter for component.\n\n\n tooltipModelCascade.push({\n formatter: tooltipOpt.content\n });\n var positionDefault = e.positionDefault;\n var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? {\n position: positionDefault\n } : null);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random() + ''; // PENDING: this case do not support richText style yet.\n\n var markupStyleCreator = new TooltipMarkupStyleCreator(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on coordinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n // Use formatterParams from element defined in component\n // Avoid users modify it.\n var formatterParams = clone(subTooltipModel.get('formatterParams') || {});\n\n this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n };\n\n TooltipView.prototype._showTooltipContent = function ( // Use Model insteadof TooltipModel because this model may be from series or other options.\n // Instead of top level tooltip.\n tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'), tooltipModel.get('borderColor'));\n\n var nearPointColor = nearPoint.color;\n\n if (formatter) {\n if (isString(formatter)) {\n var useUTC = tooltipModel.ecModel.get('useUTC');\n var params0 = isArray(params) ? params[0] : params;\n var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0;\n html = formatter;\n\n if (isTimeAxis) {\n html = timeFormat(params0.axisValue, html, useUTC);\n }\n\n html = formatTpl(html, params, true);\n } else if (isFunction(formatter)) {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n } else {\n html = formatter;\n }\n }\n\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n tooltipContent.show(tooltipModel, nearPointColor);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n };\n\n TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger, borderColor) {\n if (trigger === 'axis' || isArray(tooltipDataParams)) {\n return {\n color: borderColor || (this._renderMode === 'html' ? '#fff' : 'none')\n };\n }\n\n if (!isArray(tooltipDataParams)) {\n return {\n color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor\n };\n }\n };\n\n TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, // Mouse x\n y, // Mouse y\n content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (isFunction(positionExpr)) {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (isObject(positionExpr)) {\n var boxLayoutPosition = positionExpr;\n boxLayoutPosition.width = contentSize[0];\n boxLayoutPosition.height = contentSize[1];\n var layoutRect = getLayoutRect(boxLayoutPosition, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (isString(positionExpr) && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get('borderWidth'));\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (shouldTooltipConfine(tooltipModel)) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n }; // FIXME\n // Should we remove this but leave this to user?\n\n\n TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys, cbParamsList) {\n var lastCoordSys = this._lastDataByCoordSys;\n var lastCbParamsList = this._cbParamsList;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || [];\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n }); // check is cbParams data value changed\n\n lastCbParamsList && each(lastItem.seriesDataIndices, function (idxItem) {\n var seriesIdx = idxItem.seriesIndex;\n var cbParams = cbParamsList[seriesIdx];\n var lastCbParams = lastCbParamsList[seriesIdx];\n\n if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) {\n contentNotChanged = false;\n }\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n this._cbParamsList = cbParamsList;\n return !!contentNotChanged;\n };\n\n TooltipView.prototype._hide = function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n };\n\n TooltipView.prototype.dispose = function (ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n }\n\n clear(this, '_updatePosition');\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n };\n\n TooltipView.type = 'tooltip';\n return TooltipView;\n}(ComponentView);\n/**\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) {\n // Last is always tooltip model.\n var ecModel = globalTooltipModel.ecModel;\n var resultModel;\n\n if (defaultTooltipOption) {\n resultModel = new Model(defaultTooltipOption, ecModel, ecModel);\n resultModel = new Model(globalTooltipModel.option, resultModel, ecModel);\n } else {\n resultModel = globalTooltipModel;\n }\n\n for (var i = modelCascade.length - 1; i >= 0; i--) {\n var tooltipOpt = modelCascade[i];\n\n if (tooltipOpt) {\n if (tooltipOpt instanceof Model) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (isString(tooltipOpt)) {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n if (tooltipOpt) {\n resultModel = new Model(tooltipOpt, resultModel, ecModel);\n }\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getSize();\n var width = size[0];\n var height = size[1];\n\n if (gapH != null) {\n // Add extra 2 pixels for this case:\n // At present the \"values\" in defaut tooltip are using CSS `float: right`.\n // When the right edge of the tooltip box is on the right side of the\n // viewport, the `float` layout might push the \"values\" to the second line.\n if (x + width + gapH + 2 > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getSize();\n var width = size[0];\n var height = size[1];\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize, borderWidth) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - offset;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + offset;\n break;\n\n case 'left':\n x = rect.x - domWidth - offset;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + offset;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n/**\n * Find target component by payload like:\n * ```js\n * { legendId: 'some_id', name: 'xxx' }\n * { toolboxIndex: 1, name: 'xxx' }\n * { geoName: 'some_name', name: 'xxx' }\n * ```\n * PENDING: at present only\n *\n * If not found, return null/undefined.\n */\n\n\nfunction findComponentReference(payload, ecModel, api) {\n var queryOptionMap = preParseFinder(payload).queryOptionMap;\n var componentMainType = queryOptionMap.keys()[0];\n\n if (!componentMainType || componentMainType === 'series') {\n return;\n }\n\n var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), {\n useDefault: false,\n enableAll: false,\n enableNone: false\n });\n var model = queryResult.models[0];\n\n if (!model) {\n return;\n }\n\n var view = api.getViewOfComponentModel(model);\n var el;\n view.group.traverse(function (subEl) {\n var tooltipConfig = getECData(subEl).tooltipConfig;\n\n if (tooltipConfig && tooltipConfig.name === payload.name) {\n el = subEl;\n return true; // stop\n }\n });\n\n if (el) {\n return {\n componentMainType: componentMainType,\n componentIndex: model.componentIndex,\n el: el\n };\n }\n}\n\nexport default TooltipView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { install as installAxisPointer } from '../axisPointer/install.js';\nimport { use } from '../../extension.js';\nimport TooltipModel from './TooltipModel.js';\nimport TooltipView from './TooltipView.js';\nimport { noop } from 'zrender/lib/core/util.js';\nexport function install(registers) {\n use(installAxisPointer);\n registers.registerComponentModel(TooltipModel);\n registers.registerComponentView(TooltipView);\n /**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\n\n registers.registerAction({\n type: 'showTip',\n event: 'showTip',\n update: 'tooltip:manuallyShowTip'\n }, noop);\n registers.registerAction({\n type: 'hideTip',\n event: 'hideTip',\n update: 'tooltip:manuallyHideTip'\n }, noop);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { each, createHashMap, assert, map } from 'zrender/lib/core/util.js';\nimport { VISUAL_DIMENSIONS } from '../../util/types.js';\n\nvar DimensionUserOuput =\n/** @class */\nfunction () {\n function DimensionUserOuput(encode, dimRequest) {\n this._encode = encode;\n this._schema = dimRequest;\n }\n\n DimensionUserOuput.prototype.get = function () {\n return {\n // Do not generate full dimension name until fist used.\n fullDimensions: this._getFullDimensionNames(),\n encode: this._encode\n };\n };\n /**\n * Get all data store dimension names.\n * Theoretically a series data store is defined both by series and used dataset (if any).\n * If some dimensions are omitted for performance reason in `this.dimensions`,\n * the dimension name may not be auto-generated if user does not specify a dimension name.\n * In this case, the dimension name is `null`/`undefined`.\n */\n\n\n DimensionUserOuput.prototype._getFullDimensionNames = function () {\n if (!this._cachedDimNames) {\n this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : [];\n }\n\n return this._cachedDimNames;\n };\n\n return DimensionUserOuput;\n}();\n\n;\nexport function summarizeDimensions(data, schema) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = [];\n var userOutputEncode = {};\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n if (process.env.NODE_ENV !== 'production') {\n assert(VISUAL_DIMENSIONS.get(coordDim) == null);\n }\n\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name);\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n VISUAL_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim];\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.dataDimIndicesOnCoord = map(dataDimsOnCoord, function (dimName) {\n return data.getDimensionInfo(dimName).storeDimIndex;\n });\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n summary.userOutput = new DimensionUserOuput(userOutputEncode, schema);\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n} // FIXME:TS should be type `AxisType`\n\n\nexport function getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// let dimensions = data.dimensions.slice();\n// let valueType;\n// let valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module exposes helper functions for developing extensions.\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport createSeriesData from '../../chart/helper/createSeriesData.js'; // import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge.js';\n\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport { AxisModelCommonMixin } from '../../coord/axisModelCommonMixin.js';\nimport Model from '../../model/Model.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport { enableDataStack, isDimensionStacked, getStackedDimension } from '../../data/helper/dataStackHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle as innerCreateTextStyle } from '../../label/labelStyle.js';\n/**\n * Create a muti dimension List structure from seriesModel.\n */\n\nexport function createList(seriesModel) {\n return createSeriesData(null, seriesModel);\n} // export function createGraph(seriesModel) {\n// let nodes = seriesModel.get('data');\n// let links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\nexport { getLayoutRect };\nexport { createDimensions } from '../../data/helper/createDimensions.js';\nexport var dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\nexport { createSymbol } from '../../util/symbol.js';\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option If `optoin.type`\n * is secified, it can only be `'value'` currently.\n */\n\nexport function createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!(option instanceof Model)) {\n axisModel = new Model(option); // FIXME\n // Currently AxisModelCommonMixin has nothing to do with the\n // the requirements of `axisHelper.createScaleByModel`. For\n // example the method `getCategories` and `getOrdinalMeta`\n // are required for `'category'` axis, and ecModel are required\n // for `'time'` axis. But occationally echarts-gl happened\n // to only use `'value'` axis.\n // zrUtil.mixin(axisModel, AxisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n */\n\nexport function mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, AxisModelCommonMixin);\n}\nexport { getECData };\nexport { enableHoverEmphasis } from '../../util/states.js';\nexport function createTextStyle(textStyleModel, opts) {\n opts = opts || {};\n return innerCreateTextStyle(textStyleModel, null, null, opts.state !== 'normal');\n}","import windingLine from './windingLine.js';\nvar EPSILON = 1e-8;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nexport function contain(points, x, y) {\n var w = 0;\n var p = points[0];\n if (!p) {\n return false;\n }\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n }\n var p0 = points[0];\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n return w !== 0;\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as polygonContain from 'zrender/lib/contain/polygon.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport { each } from 'zrender/lib/core/util.js';\nvar TMP_TRANSFORM = [];\n\nfunction transformPoints(points, transform) {\n for (var p = 0; p < points.length; p++) {\n vec2.applyTransform(points[p], points[p], transform);\n }\n}\n\nfunction updateBBoxFromPoints(points, min, max, projection) {\n for (var i = 0; i < points.length; i++) {\n var p = points[i];\n\n if (projection) {\n // projection may return null point.\n p = projection.project(p);\n }\n\n if (p && isFinite(p[0]) && isFinite(p[1])) {\n vec2.min(min, min, p);\n vec2.max(max, max, p);\n }\n }\n}\n\nfunction centroid(points) {\n var signedArea = 0;\n var cx = 0;\n var cy = 0;\n var len = points.length;\n var x0 = points[len - 1][0];\n var y0 = points[len - 1][1]; // Polygon should been closed.\n\n for (var i = 0; i < len; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n x0 = x1;\n y0 = y1;\n }\n\n return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points[0][0] || 0, points[0][1] || 0];\n}\n\nvar Region =\n/** @class */\nfunction () {\n function Region(name) {\n this.name = name;\n }\n\n Region.prototype.setCenter = function (center) {\n this._center = center;\n };\n /**\n * Get center point in data unit. That is,\n * for GeoJSONRegion, the unit is lat/lng,\n * for GeoSVGRegion, the unit is SVG local coord.\n */\n\n\n Region.prototype.getCenter = function () {\n var center = this._center;\n\n if (!center) {\n // In most cases there are no need to calculate this center.\n // So calculate only when called.\n center = this._center = this.calcCenter();\n }\n\n return center;\n };\n\n return Region;\n}();\n\nexport { Region };\n\nvar GeoJSONPolygonGeometry =\n/** @class */\nfunction () {\n function GeoJSONPolygonGeometry(exterior, interiors) {\n this.type = 'polygon';\n this.exterior = exterior;\n this.interiors = interiors;\n }\n\n return GeoJSONPolygonGeometry;\n}();\n\nexport { GeoJSONPolygonGeometry };\n\nvar GeoJSONLineStringGeometry =\n/** @class */\nfunction () {\n function GeoJSONLineStringGeometry(points) {\n this.type = 'linestring';\n this.points = points;\n }\n\n return GeoJSONLineStringGeometry;\n}();\n\nexport { GeoJSONLineStringGeometry };\n\nvar GeoJSONRegion =\n/** @class */\nfunction (_super) {\n __extends(GeoJSONRegion, _super);\n\n function GeoJSONRegion(name, geometries, cp) {\n var _this = _super.call(this, name) || this;\n\n _this.type = 'geoJSON';\n _this.geometries = geometries;\n _this._center = cp && [cp[0], cp[1]];\n return _this;\n }\n\n GeoJSONRegion.prototype.calcCenter = function () {\n var geometries = this.geometries;\n var largestGeo;\n var largestGeoSize = 0;\n\n for (var i = 0; i < geometries.length; i++) {\n var geo = geometries[i];\n var exterior = geo.exterior; // Simple trick to use points count instead of polygon area as region size.\n // Ignore linestring\n\n var size = exterior && exterior.length;\n\n if (size > largestGeoSize) {\n largestGeo = geo;\n largestGeoSize = size;\n }\n }\n\n if (largestGeo) {\n return centroid(largestGeo.exterior);\n } // from bounding rect by default.\n\n\n var rect = this.getBoundingRect();\n return [rect.x + rect.width / 2, rect.y + rect.height / 2];\n };\n\n GeoJSONRegion.prototype.getBoundingRect = function (projection) {\n var rect = this._rect; // Always recalculate if using projection.\n\n if (rect && !projection) {\n return rect;\n }\n\n var min = [Infinity, Infinity];\n var max = [-Infinity, -Infinity];\n var geometries = this.geometries;\n each(geometries, function (geo) {\n if (geo.type === 'polygon') {\n // Doesn't consider hole\n updateBBoxFromPoints(geo.exterior, min, max, projection);\n } else {\n each(geo.points, function (points) {\n updateBBoxFromPoints(points, min, max, projection);\n });\n }\n }); // Normalie invalid bounding.\n\n if (!(isFinite(min[0]) && isFinite(min[1]) && isFinite(max[0]) && isFinite(max[1]))) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\n if (!projection) {\n this._rect = rect;\n }\n\n return rect;\n };\n\n GeoJSONRegion.prototype.contain = function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n var geo = geometries[i]; // Only support polygon.\n\n if (geo.type !== 'polygon') {\n continue;\n }\n\n var exterior = geo.exterior;\n var interiors = geo.interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k], coord[0], coord[1])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n };\n /**\n * Transform the raw coords to target bounding.\n * @param x\n * @param y\n * @param width\n * @param height\n */\n\n\n GeoJSONRegion.prototype.transformTo = function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n var geo = geometries[i];\n\n if (geo.type === 'polygon') {\n transformPoints(geo.exterior, transform);\n each(geo.interiors, function (interior) {\n transformPoints(interior, transform);\n });\n } else {\n each(geo.points, function (points) {\n transformPoints(points, transform);\n });\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n };\n\n GeoJSONRegion.prototype.cloneShallow = function (name) {\n name == null && (name = this.name);\n var newRegion = new GeoJSONRegion(name, this.geometries, this._center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n };\n\n return GeoJSONRegion;\n}(Region);\n\nexport { GeoJSONRegion };\n\nvar GeoSVGRegion =\n/** @class */\nfunction (_super) {\n __extends(GeoSVGRegion, _super);\n\n function GeoSVGRegion(name, elOnlyForCalculate) {\n var _this = _super.call(this, name) || this;\n\n _this.type = 'geoSVG';\n _this._elOnlyForCalculate = elOnlyForCalculate;\n return _this;\n }\n\n GeoSVGRegion.prototype.calcCenter = function () {\n var el = this._elOnlyForCalculate;\n var rect = el.getBoundingRect();\n var center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n var mat = matrix.identity(TMP_TRANSFORM);\n var target = el;\n\n while (target && !target.isGeoSVGGraphicRoot) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n matrix.invert(mat, mat);\n vec2.applyTransform(center, center, mat);\n return center;\n };\n\n return GeoSVGRegion;\n}(Region);\n\nexport { GeoSVGRegion };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { GeoJSONLineStringGeometry, GeoJSONPolygonGeometry, GeoJSONRegion } from './Region.js';\n\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var jsonCompressed = json;\n var encodeScale = jsonCompressed.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = jsonCompressed.features;\n zrUtil.each(features, function (feature) {\n var geometry = feature.geometry;\n var encodeOffsets = geometry.encodeOffsets;\n var coordinates = geometry.coordinates; // Geometry may be appeded manually in the script after json loaded.\n // In this case this geometry is usually not encoded.\n\n if (!encodeOffsets) {\n return;\n }\n\n switch (geometry.type) {\n case 'LineString':\n geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale);\n break;\n\n case 'Polygon':\n decodeRings(coordinates, encodeOffsets, encodeScale);\n break;\n\n case 'MultiLineString':\n decodeRings(coordinates, encodeOffsets, encodeScale);\n break;\n\n case 'MultiPolygon':\n zrUtil.each(coordinates, function (rings, idx) {\n return decodeRings(rings, encodeOffsets[idx], encodeScale);\n });\n }\n }); // Has been decoded\n\n jsonCompressed.UTF8Encoding = false;\n return jsonCompressed;\n}\n\nfunction decodeRings(rings, encodeOffsets, encodeScale) {\n for (var c = 0; c < rings.length; c++) {\n rings[c] = decodeRing(rings[c], encodeOffsets[c], encodeScale);\n }\n}\n\nfunction decodeRing(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n\nexport default function parseGeoJSON(geoJson, nameProperty) {\n geoJson = decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var geometries = [];\n\n switch (geo.type) {\n case 'Polygon':\n var coordinates = geo.coordinates; // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n\n geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1)));\n break;\n\n case 'MultiPolygon':\n zrUtil.each(geo.coordinates, function (item) {\n if (item[0]) {\n geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1)));\n }\n });\n break;\n\n case 'LineString':\n geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]));\n break;\n\n case 'MultiLineString':\n geometries.push(new GeoJSONLineStringGeometry(geo.coordinates));\n }\n\n var region = new GeoJSONRegion(properties[nameProperty || 'name'], geometries, properties.cp);\n region.properties = properties;\n return region;\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// These APIs are for more advanced usages\n// For example extend charts and components, creating graphic elements, formatting.\nimport ComponentModel from '../model/Component.js';\nimport ComponentView from '../view/Component.js';\nimport SeriesModel from '../model/Series.js';\nimport ChartView from '../view/Chart.js';\nimport SeriesData from '../data/SeriesData.js';\nimport * as zrender_1 from 'zrender/lib/zrender.js';\nexport { zrender_1 as zrender };\nimport * as matrix_1 from 'zrender/lib/core/matrix.js';\nexport { matrix_1 as matrix };\nimport * as vector_1 from 'zrender/lib/core/vector.js';\nexport { vector_1 as vector };\nimport * as zrUtil_1 from 'zrender/lib/core/util.js';\nexport { zrUtil_1 as zrUtil };\nimport * as color_1 from 'zrender/lib/tool/color.js';\nexport { color_1 as color };\nexport { throttle } from '../util/throttle.js';\nimport * as helper_1 from './api/helper.js';\nexport { helper_1 as helper };\nexport { use } from '../extension.js';\nexport { setPlatformAPI } from 'zrender/lib/core/platform.js'; //////////////// Helper Methods /////////////////////\n\nexport { default as parseGeoJSON } from '../coord/geo/parseGeoJson.js';\nexport { default as parseGeoJson } from '../coord/geo/parseGeoJson.js';\nimport * as number_1 from './api/number.js';\nexport { number_1 as number };\nimport * as time_1 from './api/time.js';\nexport { time_1 as time };\nimport * as graphic_1 from './api/graphic.js';\nexport { graphic_1 as graphic };\nimport * as format_1 from './api/format.js';\nexport { format_1 as format };\nimport * as util_1 from './api/util.js';\nexport { util_1 as util };\nexport { default as env } from 'zrender/lib/core/env.js'; //////////////// Export for Exension Usage ////////////////\n// export {SeriesData};\n\nexport { SeriesData as List }; // TODO: Compatitable with exists echarts-gl code\n\nexport { default as Model } from '../model/Model.js';\nexport { default as Axis } from '../coord/Axis.js';\nexport { ComponentModel, ComponentView, SeriesModel, ChartView }; // Only for GL\n\nexport { brushSingle as innerDrawElementOnCanvas } from 'zrender/lib/canvas/graphic.js'; //////////////// Deprecated Extension Methods ////////////////\n// Should use `ComponentModel.extend` or `class XXXX extend ComponentModel` to create class.\n// Then use `registerComponentModel` in `install` parameter when `use` this extension. For example:\n// class Bar3DModel extends ComponentModel {}\n// export function install(registers) { regsiters.registerComponentModel(Bar3DModel); }\n// echarts.use(install);\n\nexport function extendComponentModel(proto) {\n var Model = ComponentModel.extend(proto);\n ComponentModel.registerClass(Model);\n return Model;\n}\nexport function extendComponentView(proto) {\n var View = ComponentView.extend(proto);\n ComponentView.registerClass(View);\n return View;\n}\nexport function extendSeriesModel(proto) {\n var Model = SeriesModel.extend(proto);\n SeriesModel.registerClass(Model);\n return Model;\n}\nexport function extendChartView(proto) {\n var View = ChartView.extend(proto);\n ChartView.registerClass(View);\n return View;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Core API from echarts/src/echarts\nexport * from '../core/echarts.js';\nexport * from './api.js';\nimport { use } from '../extension.js'; // Import label layout by default.\n// TODO will be treeshaked.\n\nimport { installLabelLayout } from '../label/installLabelLayout.js';\nuse(installLabelLayout);","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./caserecord.vue?vue&type=style&index=0&id=5e65f708&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./cStep.vue?vue&type=style&index=0&id=5df4f414&lang=scss&scoped=true\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nexport function getBasicPieLayout(seriesModel, api) {\n var viewRect = getViewRect(seriesModel, api);\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var cx;\n var cy;\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys) {\n // percentage is not allowed when coordinate system is specified\n var point = coordSys.dataToPoint(center);\n cx = point[0] || 0;\n cy = point[1] || 0;\n } else {\n cx = parsePercent(center[0], width) + viewRect.x;\n cy = parsePercent(center[1], height) + viewRect.y;\n }\n\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r\n };\n}\nexport default function pieLayout(seriesType, ecModel, api) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n\n var _a = getBasicPieLayout(seriesModel, api),\n cx = _a.cx,\n cy = _a.cy,\n r = _a.r,\n r0 = _a.r0;\n\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n var restAngle = PI2;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n var dir = clockwise ? 1 : -1;\n data.setLayout({\n viewRect: viewRect,\n r: r\n });\n data.each(valueDim, function (value, idx) {\n var angle;\n\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r\n });\n return;\n } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n\n\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = PI2 / validDataCount;\n }\n\n if (angle < minAngle) {\n angle = minAngle;\n restAngle -= minAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n\n var endAngle = currentAngle + dir * angle;\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: currentAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r\n });\n currentAngle = endAngle;\n }); // Some sector is constrained by minAngle\n // Rest sectors needs recalculate angle\n\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle\n if (restAngle <= 1e-3) {\n var angle_1 = PI2 / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_1 = data.getItemLayout(idx);\n layout_1.angle = angle_1;\n layout_1.startAngle = startAngle + dir * idx * angle_1;\n layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_2 = data.getItemLayout(idx);\n var angle = layout_2.angle === minAngle ? minAngle : value * unitRadian;\n layout_2.startAngle = currentAngle;\n layout_2.endAngle = currentAngle + dir * angle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function dataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx); // If in any legend component the status is not selected.\n\n for (var i = 0; i < legendModels.length; i++) {\n // @ts-ignore FIXME: LegendModel\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME emphasis label position is not same with normal label position\nimport { parsePercent } from '../../util/number.js';\nimport { Point } from '../../util/graphic.js';\nimport { each, isNumber } from 'zrender/lib/core/util.js';\nimport { limitTurnAngle, limitSurfaceAngle } from '../../label/labelGuideHelper.js';\nimport { shiftLayoutOnY } from '../../label/labelLayoutHelper.js';\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n if (list.length < 2) {\n return;\n }\n\n ;\n\n function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\n var rB = semi.rB;\n var rB2 = rB * rB;\n\n for (var i = 0; i < semi.list.length; i++) {\n var item = semi.list[i];\n var dy = Math.abs(item.label.y - cy); // horizontal r is always same with original r because x is not changed.\n\n var rA = r + item.len;\n var rA2 = rA * rA; // Use ellipse implicit function to calculate x\n\n var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\n var newX = cx + (dx + item.len2) * dir;\n var deltaX = newX - item.label.x;\n var newTargetWidth = item.targetTextWidth - deltaX * dir; // text x is changed, so need to recalculate width.\n\n constrainTextWidth(item, newTargetWidth, true);\n item.label.x = newX;\n }\n } // Adjust X based on the shifted y. Make tight labels aligned on an ellipse curve.\n\n\n function recalculateX(items) {\n // Extremes of\n var topSemi = {\n list: [],\n maxY: 0\n };\n var bottomSemi = {\n list: [],\n maxY: 0\n };\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].labelAlignTo !== 'none') {\n continue;\n }\n\n var item = items[i];\n var semi = item.label.y > cy ? bottomSemi : topSemi;\n var dy = Math.abs(item.label.y - cy);\n\n if (dy >= semi.maxY) {\n var dx = item.label.x - cx - item.len2 * dir; // horizontal r is always same with original r because x is not changed.\n\n var rA = r + item.len; // Canculate rB based on the topest / bottemest label.\n\n var rB = Math.abs(dx) < rA ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA)) : rA;\n semi.rB = rB;\n semi.maxY = dy;\n }\n\n semi.list.push(item);\n }\n\n recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\n recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\n }\n\n var len = list.length;\n\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].label.x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].label.x = farthestX;\n }\n }\n\n if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\n recalculateX(list);\n }\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var label = labelLayoutList[i].label;\n\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n\n if (label.x < cx) {\n leftmostX = Math.min(leftmostX, label.x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, label.x);\n rightList.push(labelLayoutList[i]);\n }\n }\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (!isPositionCenter(layout) && layout.linePoints) {\n if (layout.labelStyleWidth != null) {\n continue;\n }\n\n var label = layout.label;\n var linePoints = layout.linePoints;\n var targetTextWidth = void 0;\n\n if (layout.labelAlignTo === 'edge') {\n if (label.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.edgeDistance;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.edgeDistance - linePoints[2][0] - layout.labelDistance;\n }\n } else if (layout.labelAlignTo === 'labelLine') {\n if (label.x < cx) {\n targetTextWidth = leftmostX - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - rightmostX - layout.bleedMargin;\n }\n } else {\n if (label.x < cx) {\n targetTextWidth = label.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\n }\n }\n\n layout.targetTextWidth = targetTextWidth;\n constrainTextWidth(layout, targetTextWidth);\n }\n }\n\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (!isPositionCenter(layout) && layout.linePoints) {\n var label = layout.label;\n var linePoints = layout.linePoints;\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var padding = label.style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0; // textRect.width already contains paddingH if bgColor is set\n\n var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;\n var realTextWidth = layout.rect.width + extraPaddingH;\n var dist = linePoints[1][0] - linePoints[2][0];\n\n if (isAlignToEdge) {\n if (label.x < cx) {\n linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance - realTextWidth - layout.labelDistance;\n }\n } else {\n if (label.x < cx) {\n linePoints[2][0] = label.x + layout.labelDistance;\n } else {\n linePoints[2][0] = label.x - layout.labelDistance;\n }\n\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n\n linePoints[1][1] = linePoints[2][1] = label.y;\n }\n }\n}\n/**\n * Set max width of each label, and then wrap each label to the max width.\n *\n * @param layout label layout\n * @param availableWidth max width for the label to display\n * @param forceRecalculate recaculate the text layout even if the current width\n * is smaller than `availableWidth`. This is useful when the text was previously\n * wrapped by calling `constrainTextWidth` but now `availableWidth` changed, in\n * which case, previous wrapping should be redo.\n */\n\n\nfunction constrainTextWidth(layout, availableWidth, forceRecalculate) {\n if (forceRecalculate === void 0) {\n forceRecalculate = false;\n }\n\n if (layout.labelStyleWidth != null) {\n // User-defined style.width has the highest priority.\n return;\n }\n\n var label = layout.label;\n var style = label.style;\n var textRect = layout.rect;\n var bgColor = style.backgroundColor;\n var padding = style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n var overflow = style.overflow; // textRect.width already contains paddingH if bgColor is set\n\n var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);\n\n if (availableWidth < oldOuterWidth || forceRecalculate) {\n var oldHeight = textRect.height;\n\n if (overflow && overflow.match('break')) {\n // Temporarily set background to be null to calculate\n // the bounding box without backgroud.\n label.setStyle('backgroundColor', null); // Set constraining width\n\n label.setStyle('width', availableWidth - paddingH); // This is the real bounding box of the text without padding\n\n var innerRect = label.getBoundingRect();\n label.setStyle('width', Math.ceil(innerRect.width));\n label.setStyle('backgroundColor', bgColor);\n } else {\n var availableInnerWidth = availableWidth - paddingH;\n var newWidth = availableWidth < oldOuterWidth // Current text is too wide, use `availableWidth` as max width.\n ? availableInnerWidth : // Current available width is enough, but the text may have\n // already been wrapped with a smaller available width.\n forceRecalculate ? availableInnerWidth > layout.unconstrainedWidth // Current available is larger than text width,\n // so don't constrain width (otherwise it may have\n // empty space in the background).\n ? null // Current available is smaller than text width, so\n // use the current available width as constraining\n // width.\n : availableInnerWidth : // Current available width is enough, so no need to\n // constrain.\n null;\n label.setStyle('width', newWidth);\n }\n\n var newRect = label.getBoundingRect();\n textRect.width = newRect.width;\n var margin = (label.style.margin || 0) + 2.1;\n textRect.height = newRect.height + margin;\n textRect.y -= (textRect.height - oldHeight) / 2;\n }\n}\n\nfunction isPositionCenter(sectorShape) {\n // Not change x for center label\n return sectorShape.position === 'center';\n}\n\nexport default function pieLabelLayout(seriesModel) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n var viewRect = data.getLayout('viewRect');\n var r = data.getLayout('r');\n var viewWidth = viewRect.width;\n var viewLeft = viewRect.x;\n var viewTop = viewRect.y;\n var viewHeight = viewRect.height;\n\n function setNotShow(el) {\n el.ignore = true;\n }\n\n function isLabelShown(label) {\n if (!label.ignore) {\n return true;\n }\n\n for (var key in label.states) {\n if (label.states[key].ignore === false) {\n return true;\n }\n }\n\n return false;\n }\n\n data.each(function (idx) {\n var sector = data.getItemGraphicEl(idx);\n var sectorShape = sector.shape;\n var label = sector.getTextContent();\n var labelLine = sector.getTextGuideLine();\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\n each(label.states, setNotShow);\n each(labelLine.states, setNotShow);\n label.ignore = labelLine.ignore = true;\n return;\n }\n\n if (!isLabelShown(label)) {\n return;\n }\n\n var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\n var nx = Math.cos(midAngle);\n var ny = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = sectorShape.cx;\n cy = sectorShape.cy;\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n if (labelPosition === 'center') {\n textX = sectorShape.cx;\n textY = sectorShape.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\n var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\n textX = x1 + nx * 3;\n textY = y1 + ny * 3;\n\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\n var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\n var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;\n } else {\n textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\n }\n\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? nx > 0 ? 'right' : 'left' : nx > 0 ? 'left' : 'right';\n }\n\n var PI = Math.PI;\n var labelRotate = 0;\n var rotate = labelModel.get('rotate');\n\n if (isNumber(rotate)) {\n labelRotate = rotate * (PI / 180);\n } else if (labelPosition === 'center') {\n labelRotate = 0;\n } else if (rotate === 'radial' || rotate === true) {\n var radialAngle = nx < 0 ? -midAngle + PI : -midAngle;\n labelRotate = radialAngle;\n } else if (rotate === 'tangential' && labelPosition !== 'outside' && labelPosition !== 'outer') {\n var rad = Math.atan2(nx, ny);\n\n if (rad < 0) {\n rad = PI * 2 + rad;\n }\n\n var isDown = ny > 0;\n\n if (isDown) {\n rad = PI + rad;\n }\n\n labelRotate = rad - PI;\n }\n\n hasLabelRotate = !!labelRotate;\n label.x = textX;\n label.y = textY;\n label.rotation = labelRotate;\n label.setStyle({\n verticalAlign: 'middle'\n }); // Not sectorShape the inside label\n\n if (!isLabelInside) {\n var textRect = label.getBoundingRect().clone();\n textRect.applyTransform(label.getComputedTransform()); // Text has a default 1px stroke. Exclude this.\n\n var margin = (label.style.margin || 0) + 2.1;\n textRect.y -= margin / 2;\n textRect.height += margin;\n labelLayoutList.push({\n label: label,\n labelLine: labelLine,\n position: labelPosition,\n len: labelLineLen,\n len2: labelLineLen2,\n minTurnAngle: labelLineModel.get('minTurnAngle'),\n maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\n surfaceNormal: new Point(nx, ny),\n linePoints: linePoints,\n textAlign: textAlign,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n edgeDistance: edgeDistance,\n bleedMargin: bleedMargin,\n rect: textRect,\n unconstrainedWidth: textRect.width,\n labelStyleWidth: label.style.width\n });\n } else {\n label.setStyle({\n align: textAlign\n });\n var selectState = label.states.select;\n\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n\n sector.setTextConfig({\n inside: isLabelInside\n });\n });\n\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n }\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n var label = layout.label;\n var labelLine = layout.labelLine;\n var notShowLabel = isNaN(label.x) || isNaN(label.y);\n\n if (label) {\n label.setStyle({\n align: layout.textAlign\n });\n\n if (notShowLabel) {\n each(label.states, setNotShow);\n label.ignore = true;\n }\n\n var selectState = label.states.select;\n\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n\n if (labelLine) {\n var linePoints = layout.linePoints;\n\n if (notShowLabel || !linePoints) {\n each(labelLine.states, setNotShow);\n labelLine.ignore = true;\n } else {\n limitTurnAngle(linePoints, layout.minTurnAngle);\n limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\n labelLine.setShape({\n points: linePoints\n }); // Set the anchor to the midpoint of sector\n\n label.__hostTarget.textGuideLineConfig = {\n anchor: new Point(linePoints[0][0], linePoints[0][1])\n };\n }\n }\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isArray, map } from 'zrender/lib/core/util.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\nexport function getSectorCornerRadius(model, shape, zeroIfNull) {\n var cornerRadius = model.get('borderRadius');\n\n if (cornerRadius == null) {\n return zeroIfNull ? {\n cornerRadius: 0\n } : null;\n }\n\n if (!isArray(cornerRadius)) {\n cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius];\n }\n\n var dr = Math.abs(shape.r || 0 - shape.r0 || 0);\n return {\n cornerRadius: map(cornerRadius, function (cr) {\n return parsePercent(cr, dr);\n })\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { extend, retrieve3 } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport labelLayout from './labelLayout.js';\nimport { setLabelLineStyle, getLabelLineStatesModels } from '../../label/labelGuideHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getSectorCornerRadius } from '../helper/pieHelper.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getBasicPieLayout } from './pieLayout.js';\n/**\n * Piece of pie including Sector, Label, LabelLine\n */\n\nvar PiePiece =\n/** @class */\nfunction (_super) {\n __extends(PiePiece, _super);\n\n function PiePiece(data, idx, startAngle) {\n var _this = _super.call(this) || this;\n\n _this.z2 = 2;\n var text = new graphic.Text();\n\n _this.setTextContent(text);\n\n _this.updateData(data, idx, startAngle, true);\n\n return _this;\n }\n\n PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\n var sector = this;\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n var layout = data.getItemLayout(idx); // cornerRadius & innerCornerRadius doesn't exist in the item layout. Use `0` if null value is specified.\n // see `setItemLayout` in `pieLayout.ts`.\n\n var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout, true), layout); // Ignore NaN data.\n\n if (isNaN(sectorShape.startAngle)) {\n // Use NaN shape to avoid drawing shape.\n sector.setShape(sectorShape);\n return;\n }\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n\n if (seriesModel.ecModel.ssr) {\n // Use scale animation in SSR mode(opacity?)\n // Because CSS SVG animation doesn't support very customized shape animation.\n graphic.initProps(sector, {\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: idx,\n isFrom: true\n });\n sector.originX = sectorShape.cx;\n sector.originY = sectorShape.cy;\n } else if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n } // Expansion\n else {\n if (startAngle != null) {\n sector.setShape({\n startAngle: startAngle,\n endAngle: startAngle\n });\n graphic.initProps(sector, {\n shape: {\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n } else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n }\n } else {\n saveOldStyle(sector); // Transition animation from the old shape\n\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n\n sector.useStyle(data.getItemVisual(idx, 'style'));\n setStatesStylesFromModel(sector, itemModel);\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var offset = seriesModel.get('selectedOffset');\n var dx = Math.cos(midAngle) * offset;\n var dy = Math.sin(midAngle) * offset;\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle);\n\n this._updateLabel(seriesModel, data, idx);\n\n sector.ensureState('emphasis').shape = extend({\n r: layout.r + (emphasisModel.get('scale') ? emphasisModel.get('scaleSize') || 0 : 0)\n }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\n extend(sector.ensureState('select'), {\n x: dx,\n y: dy,\n shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\n });\n extend(sector.ensureState('blur'), {\n shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\n });\n var labelLine = sector.getTextGuideLine();\n var labelText = sector.getTextContent();\n labelLine && extend(labelLine.ensureState('select'), {\n x: dx,\n y: dy\n }); // TODO: needs dx, dy in zrender?\n\n extend(labelText.ensureState('select'), {\n x: dx,\n y: dy\n });\n toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n };\n\n PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\n var sector = this;\n var itemModel = data.getItemModel(idx);\n var labelLineModel = itemModel.getModel('labelLine');\n var style = data.getItemVisual(idx, 'style');\n var visualColor = style && style.fill;\n var visualOpacity = style && style.opacity;\n setLabelStyle(sector, getLabelStatesModels(itemModel), {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n inheritColor: visualColor,\n defaultOpacity: visualOpacity,\n defaultText: seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx)\n });\n var labelText = sector.getTextContent(); // Set textConfig on sector.\n\n sector.setTextConfig({\n // reset position, rotation\n position: null,\n rotation: null\n }); // Make sure update style on labelText after setLabelStyle.\n // Because setLabelStyle will replace a new style on it.\n\n labelText.attr({\n z2: 10\n });\n var labelPosition = seriesModel.get(['label', 'position']);\n\n if (labelPosition !== 'outside' && labelPosition !== 'outer') {\n sector.removeTextGuideLine();\n } else {\n var polyline = this.getTextGuideLine();\n\n if (!polyline) {\n polyline = new graphic.Polyline();\n this.setTextGuideLine(polyline);\n } // Default use item visual color\n\n\n setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\n stroke: visualColor,\n opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\n });\n }\n };\n\n return PiePiece;\n}(graphic.Sector); // Pie view\n\n\nvar PieView =\n/** @class */\nfunction (_super) {\n __extends(PieView, _super);\n\n function PieView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.ignoreLabelLineUpdate = true;\n return _this;\n }\n\n PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var startAngle; // First render\n\n if (!oldData && data.count() > 0) {\n var shape = data.getItemLayout(0);\n\n for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n\n if (shape) {\n startAngle = shape.startAngle;\n }\n } // remove empty-circle if it exists\n\n\n if (this._emptyCircleSector) {\n group.remove(this._emptyCircleSector);\n } // when all data are filtered, show lightgray empty circle\n\n\n if (data.count() === 0 && seriesModel.get('showEmptyCircle')) {\n var sector = new graphic.Sector({\n shape: getBasicPieLayout(seriesModel, api)\n });\n sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle());\n this._emptyCircleSector = sector;\n group.add(sector);\n }\n\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx, startAngle);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n piePiece.updateData(data, newIdx, startAngle);\n piePiece.off('click');\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n graphic.removeElementWithFadeOut(piePiece, seriesModel, idx);\n }).execute();\n labelLayout(seriesModel); // Always use initial animation.\n\n if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\n this._data = data;\n }\n };\n\n PieView.prototype.dispose = function () {};\n\n PieView.prototype.containPoint = function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n };\n\n PieView.type = 'pie';\n return PieView;\n}(ChartView);\n\nexport default PieView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { extend, isArray } from 'zrender/lib/core/util.js';\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n */\n\nexport default function createSeriesDataSimply(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({\n encodeDefine: seriesModel.getEncode()\n }, opt);\n var source = seriesModel.getSource();\n var dimensions = prepareSeriesDataSchema(source, opt).dimensions;\n var list = new SeriesData(dimensions, seriesModel);\n list.initData(source, nameList);\n return list;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport { getPercentSeats } from '../../util/number.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\n\nvar PieSeriesModel =\n/** @class */\nfunction (_super) {\n __extends(PieSeriesModel, _super);\n\n function PieSeriesModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.init = function (option) {\n _super.prototype.init.apply(this, arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n\n this._defaultLabelLine(option);\n };\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.mergeOption = function () {\n _super.prototype.mergeOption.apply(this, arguments);\n };\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.getInitialData = function () {\n var data = createSeriesDataSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n var valueList = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList.push(value);\n });\n this.seats = getPercentSeats(valueList, data.hostModel.get('percentPrecision'));\n return data;\n };\n /**\n * @overwrite\n */\n\n\n PieSeriesModel.prototype.getDataParams = function (dataIndex) {\n var params = _super.prototype.getDataParams.call(this, dataIndex);\n\n params.percent = this.seats[dataIndex];\n params.$vars.push('percent');\n return params;\n };\n\n PieSeriesModel.prototype._defaultLabelLine = function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n };\n\n PieSeriesModel.type = 'series.pie';\n PieSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 2,\n legendHoverLink: true,\n colorBy: 'data',\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // color: 'inherit',\n // If rotate around circle\n rotate: 0,\n show: true,\n overflow: 'truncate',\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n edgeDistance: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见TEXTSTYLE\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n },\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n minTurnAngle: 90,\n maxSurfaceAngle: 90,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1,\n borderJoin: 'round'\n },\n showEmptyCircle: true,\n emptyCircleStyle: {\n color: 'lightgray',\n opacity: 1\n },\n labelLayout: {\n // Hide the overlapped label.\n hideOverlap: true\n },\n emphasis: {\n scale: true,\n scaleSize: 5\n },\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n animationDuration: 1000,\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasingUpdate: 'cubicInOut',\n animationDurationUpdate: 500,\n animationEasing: 'cubicInOut'\n };\n return PieSeriesModel;\n}(SeriesModel);\n\nexport default PieSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function negativeDataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n // handle negative value condition\n var valueDim = data.mapDimension('value');\n var curValue = data.get(valueDim, idx);\n\n if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {\n return false;\n }\n\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { createLegacyDataSelectAction } from '../../legacy/dataSelectAction.js';\nimport pieLayout from '../pie/pieLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport PieView from './PieView.js';\nimport PieSeriesModel from './PieSeries.js';\nimport negativeDataFilter from '../../processor/negativeDataFilter.js';\nexport function install(registers) {\n registers.registerChartView(PieView);\n registers.registerSeriesModel(PieSeriesModel);\n createLegacyDataSelectAction('pie', registers.registerAction);\n registers.registerLayout(curry(pieLayout, 'pie'));\n registers.registerProcessor(dataFilter('pie'));\n registers.registerProcessor(negativeDataFilter('pie'));\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./navTitle.vue?vue&type=style&index=0&id=5178a2d8&lang=scss&scoped=true\"","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as axisPointerModelHelper from '../axisPointer/modelHelper.js';\nimport ComponentView from '../../view/Component.js';\nvar axisPointerClazz = {};\n/**\n * Base class of AxisView.\n */\n\nvar AxisView =\n/** @class */\nfunction (_super) {\n __extends(AxisView, _super);\n\n function AxisView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = AxisView.type;\n return _this;\n }\n /**\n * @override\n */\n\n\n AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n\n _super.prototype.render.apply(this, arguments);\n\n this._doUpdateAxisPointerClass(axisModel, api, true);\n };\n /**\n * Action handler.\n */\n\n\n AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\n this._doUpdateAxisPointerClass(axisModel, api, false);\n };\n /**\n * @override\n */\n\n\n AxisView.prototype.remove = function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n };\n /**\n * @override\n */\n\n\n AxisView.prototype.dispose = function (ecModel, api) {\n this._disposeAxisPointer(api);\n\n _super.prototype.dispose.apply(this, arguments);\n };\n\n AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api);\n };\n\n AxisView.prototype._disposeAxisPointer = function (api) {\n this._axisPointer && this._axisPointer.dispose(api);\n this._axisPointer = null;\n };\n\n AxisView.registerAxisPointerClass = function (type, clazz) {\n if (process.env.NODE_ENV !== 'production') {\n if (axisPointerClazz[type]) {\n throw new Error('axisPointer ' + type + ' exists');\n }\n }\n\n axisPointerClazz[type] = clazz;\n };\n\n ;\n\n AxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n };\n\n ;\n AxisView.type = 'axis';\n return AxisView;\n}(ComponentView);\n\nexport default AxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/**\n * Linear continuous scale\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\n\nimport Scale from './Scale.js';\nimport OrdinalMeta from '../data/OrdinalMeta.js';\nimport * as scaleHelper from './helper.js';\nimport { isArray, map, isObject, isString } from 'zrender/lib/core/util.js';\n\nvar OrdinalScale =\n/** @class */\nfunction (_super) {\n __extends(OrdinalScale, _super);\n\n function OrdinalScale(setting) {\n var _this = _super.call(this, setting) || this;\n\n _this.type = 'ordinal';\n\n var ordinalMeta = _this.getSetting('ordinalMeta'); // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n\n\n if (!ordinalMeta) {\n ordinalMeta = new OrdinalMeta({});\n }\n\n if (isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: map(ordinalMeta, function (item) {\n return isObject(item) ? item.value : item;\n })\n });\n }\n\n _this._ordinalMeta = ordinalMeta;\n _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\n return _this;\n }\n\n OrdinalScale.prototype.parse = function (val) {\n // Caution: Math.round(null) will return `0` rather than `NaN`\n if (val == null) {\n return NaN;\n }\n\n return isString(val) ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n };\n\n OrdinalScale.prototype.contain = function (rank) {\n rank = this.parse(rank);\n return scaleHelper.contain(rank, this._extent) && this._ordinalMeta.categories[rank] != null;\n };\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param val raw ordinal number.\n * @return normalized value in [0, 1].\n */\n\n\n OrdinalScale.prototype.normalize = function (val) {\n val = this._getTickNumber(this.parse(val));\n return scaleHelper.normalize(val, this._extent);\n };\n /**\n * @param val normalized value in [0, 1].\n * @return raw ordinal number.\n */\n\n\n OrdinalScale.prototype.scale = function (val) {\n val = Math.round(scaleHelper.scale(val, this._extent));\n return this.getRawOrdinalNumber(val);\n };\n\n OrdinalScale.prototype.getTicks = function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push({\n value: rank\n });\n rank++;\n }\n\n return ticks;\n };\n\n OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\n // Not support.\n return;\n };\n /**\n * @see `Ordinal['_ordinalNumbersByTick']`\n */\n\n\n OrdinalScale.prototype.setSortInfo = function (info) {\n if (info == null) {\n this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;\n return;\n }\n\n var infoOrdinalNumbers = info.ordinalNumbers;\n var ordinalsByTick = this._ordinalNumbersByTick = [];\n var ticksByOrdinal = this._ticksByOrdinalNumber = []; // Unnecessary support negative tick in `realtimeSort`.\n\n var tickNum = 0;\n var allCategoryLen = this._ordinalMeta.categories.length;\n\n for (var len = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len; ++tickNum) {\n var ordinalNumber = infoOrdinalNumbers[tickNum];\n ordinalsByTick[tickNum] = ordinalNumber;\n ticksByOrdinal[ordinalNumber] = tickNum;\n } // Handle that `series.data` only covers part of the `axis.category.data`.\n\n\n var unusedOrdinal = 0;\n\n for (; tickNum < allCategoryLen; ++tickNum) {\n while (ticksByOrdinal[unusedOrdinal] != null) {\n unusedOrdinal++;\n }\n\n ;\n ordinalsByTick.push(unusedOrdinal);\n ticksByOrdinal[unusedOrdinal] = tickNum;\n }\n };\n\n OrdinalScale.prototype._getTickNumber = function (ordinal) {\n var ticksByOrdinalNumber = this._ticksByOrdinalNumber; // also support ordinal out of range of `ordinalMeta.categories.length`,\n // where ordinal numbers are used as tick value directly.\n\n return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal;\n };\n /**\n * @usage\n * ```js\n * const ordinalNumber = ordinalScale.getRawOrdinalNumber(tickVal);\n *\n * // case0\n * const rawOrdinalValue = axisModel.getCategories()[ordinalNumber];\n * // case1\n * const rawOrdinalValue = this._ordinalMeta.categories[ordinalNumber];\n * // case2\n * const coord = axis.dataToCoord(ordinalNumber);\n * ```\n *\n * @param {OrdinalNumber} tickNumber index of display\n */\n\n\n OrdinalScale.prototype.getRawOrdinalNumber = function (tickNumber) {\n var ordinalNumbersByTick = this._ordinalNumbersByTick; // tickNumber may be out of range, e.g., when axis max is larger than `ordinalMeta.categories.length`.,\n // where ordinal numbers are used as tick value directly.\n\n return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber;\n };\n /**\n * Get item on tick\n */\n\n\n OrdinalScale.prototype.getLabel = function (tick) {\n if (!this.isBlank()) {\n var ordinalNumber = this.getRawOrdinalNumber(tick.value);\n var cateogry = this._ordinalMeta.categories[ordinalNumber]; // Note that if no data, ordinalMeta.categories is an empty array.\n // Return empty if it's not exist.\n\n return cateogry == null ? '' : cateogry + '';\n }\n };\n\n OrdinalScale.prototype.count = function () {\n return this._extent[1] - this._extent[0] + 1;\n };\n\n OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n };\n /**\n * @override\n * If value is in extent range\n */\n\n\n OrdinalScale.prototype.isInExtentRange = function (value) {\n value = this._getTickNumber(value);\n return this._extent[0] <= value && this._extent[1] >= value;\n };\n\n OrdinalScale.prototype.getOrdinalMeta = function () {\n return this._ordinalMeta;\n };\n\n OrdinalScale.prototype.calcNiceTicks = function () {};\n\n OrdinalScale.prototype.calcNiceExtent = function () {};\n\n OrdinalScale.type = 'ordinal';\n return OrdinalScale;\n}(Scale);\n\nScale.registerClass(OrdinalScale);\nexport default OrdinalScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/*\n* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\n\nimport * as numberUtil from '../util/number.js';\nimport { ONE_SECOND, ONE_MINUTE, ONE_HOUR, ONE_DAY, ONE_YEAR, format, leveledFormat, getUnitValue, timeUnits, fullLeveledFormatter, getPrimaryTimeUnit, isPrimaryTimeUnit, getDefaultFormatPrecisionOfInterval, fullYearGetterName, monthSetterName, fullYearSetterName, dateSetterName, hoursGetterName, hoursSetterName, minutesSetterName, secondsSetterName, millisecondsSetterName, monthGetterName, dateGetterName, minutesGetterName, secondsGetterName, millisecondsGetterName } from '../util/time.js';\nimport * as scaleHelper from './helper.js';\nimport IntervalScale from './Interval.js';\nimport Scale from './Scale.js';\nimport { warn } from '../util/log.js';\nimport { filter, isNumber, map } from 'zrender/lib/core/util.js'; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n\nvar TimeScale =\n/** @class */\nfunction (_super) {\n __extends(TimeScale, _super);\n\n function TimeScale(settings) {\n var _this = _super.call(this, settings) || this;\n\n _this.type = 'time';\n return _this;\n }\n /**\n * Get label is mainly for other components like dataZoom, tooltip.\n */\n\n\n TimeScale.prototype.getLabel = function (tick) {\n var useUTC = this.getSetting('useUTC');\n return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\n };\n\n TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\n var isUTC = this.getSetting('useUTC');\n var lang = this.getSetting('locale');\n return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\n };\n /**\n * @override\n */\n\n\n TimeScale.prototype.getTicks = function () {\n var interval = this._interval;\n var extent = this._extent;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n }\n\n ticks.push({\n value: extent[0],\n level: 0\n });\n var useUTC = this.getSetting('useUTC');\n var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\n ticks = ticks.concat(innerTicks);\n ticks.push({\n value: extent[1],\n level: 0\n });\n return ticks;\n };\n\n TimeScale.prototype.calcNiceExtent = function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\n };\n\n TimeScale.prototype.calcNiceTicks = function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n this._approxInterval = span / approxTickNum;\n\n if (minInterval != null && this._approxInterval < minInterval) {\n this._approxInterval = minInterval;\n }\n\n if (maxInterval != null && this._approxInterval > maxInterval) {\n this._approxInterval = maxInterval;\n }\n\n var scaleIntervalsLen = scaleIntervals.length;\n var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); // Interval that can be used to calculate ticks\n\n this._interval = scaleIntervals[idx][1]; // Min level used when picking ticks from top down.\n // We check one more level to avoid the ticks are to sparse in some case.\n\n this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\n };\n\n TimeScale.prototype.parse = function (val) {\n // val might be float.\n return isNumber(val) ? val : +numberUtil.parseDate(val);\n };\n\n TimeScale.prototype.contain = function (val) {\n return scaleHelper.contain(this.parse(val), this._extent);\n };\n\n TimeScale.prototype.normalize = function (val) {\n return scaleHelper.normalize(this.parse(val), this._extent);\n };\n\n TimeScale.prototype.scale = function (val) {\n return scaleHelper.scale(val, this._extent);\n };\n\n TimeScale.type = 'time';\n return TimeScale;\n}(IntervalScale);\n/**\n * This implementation was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nvar scaleIntervals = [// Format interval\n['second', ONE_SECOND], ['minute', ONE_MINUTE], ['hour', ONE_HOUR], ['quarter-day', ONE_HOUR * 6], ['half-day', ONE_HOUR * 12], ['day', ONE_DAY * 1.2], ['half-week', ONE_DAY * 3.5], ['week', ONE_DAY * 7], ['month', ONE_DAY * 31], ['quarter', ONE_DAY * 95], ['half-year', ONE_YEAR / 2], ['year', ONE_YEAR] // 1Y\n];\n\nfunction isUnitValueSame(unit, valueA, valueB, isUTC) {\n var dateA = numberUtil.parseDate(valueA);\n var dateB = numberUtil.parseDate(valueB);\n\n var isSame = function (unit) {\n return getUnitValue(dateA, unit, isUTC) === getUnitValue(dateB, unit, isUTC);\n };\n\n var isSameYear = function () {\n return isSame('year');\n }; // const isSameHalfYear = () => isSameYear() && isSame('half-year');\n // const isSameQuater = () => isSameYear() && isSame('quarter');\n\n\n var isSameMonth = function () {\n return isSameYear() && isSame('month');\n };\n\n var isSameDay = function () {\n return isSameMonth() && isSame('day');\n }; // const isSameHalfDay = () => isSameDay() && isSame('half-day');\n\n\n var isSameHour = function () {\n return isSameDay() && isSame('hour');\n };\n\n var isSameMinute = function () {\n return isSameHour() && isSame('minute');\n };\n\n var isSameSecond = function () {\n return isSameMinute() && isSame('second');\n };\n\n var isSameMilliSecond = function () {\n return isSameSecond() && isSame('millisecond');\n };\n\n switch (unit) {\n case 'year':\n return isSameYear();\n\n case 'month':\n return isSameMonth();\n\n case 'day':\n return isSameDay();\n\n case 'hour':\n return isSameHour();\n\n case 'minute':\n return isSameMinute();\n\n case 'second':\n return isSameSecond();\n\n case 'millisecond':\n return isSameMilliSecond();\n }\n} // const primaryUnitGetters = {\n// year: fullYearGetterName(),\n// month: monthGetterName(),\n// day: dateGetterName(),\n// hour: hoursGetterName(),\n// minute: minutesGetterName(),\n// second: secondsGetterName(),\n// millisecond: millisecondsGetterName()\n// };\n// const primaryUnitUTCGetters = {\n// year: fullYearGetterName(true),\n// month: monthGetterName(true),\n// day: dateGetterName(true),\n// hour: hoursGetterName(true),\n// minute: minutesGetterName(true),\n// second: secondsGetterName(true),\n// millisecond: millisecondsGetterName(true)\n// };\n// function moveTick(date: Date, unitName: TimeUnit, step: number, isUTC: boolean) {\n// step = step || 1;\n// switch (getPrimaryTimeUnit(unitName)) {\n// case 'year':\n// date[fullYearSetterName(isUTC)](date[fullYearGetterName(isUTC)]() + step);\n// break;\n// case 'month':\n// date[monthSetterName(isUTC)](date[monthGetterName(isUTC)]() + step);\n// break;\n// case 'day':\n// date[dateSetterName(isUTC)](date[dateGetterName(isUTC)]() + step);\n// break;\n// case 'hour':\n// date[hoursSetterName(isUTC)](date[hoursGetterName(isUTC)]() + step);\n// break;\n// case 'minute':\n// date[minutesSetterName(isUTC)](date[minutesGetterName(isUTC)]() + step);\n// break;\n// case 'second':\n// date[secondsSetterName(isUTC)](date[secondsGetterName(isUTC)]() + step);\n// break;\n// case 'millisecond':\n// date[millisecondsSetterName(isUTC)](date[millisecondsGetterName(isUTC)]() + step);\n// break;\n// }\n// return date.getTime();\n// }\n// const DATE_INTERVALS = [[8, 7.5], [4, 3.5], [2, 1.5]];\n// const MONTH_INTERVALS = [[6, 5.5], [3, 2.5], [2, 1.5]];\n// const MINUTES_SECONDS_INTERVALS = [[30, 30], [20, 20], [15, 15], [10, 10], [5, 5], [2, 2]];\n\n\nfunction getDateInterval(approxInterval, daysInMonth) {\n approxInterval /= ONE_DAY;\n return approxInterval > 16 ? 16 // Math.floor(daysInMonth / 2) + 1 // In this case we only want one tick betwen two month.\n : approxInterval > 7.5 ? 7 // TODO week 7 or day 8?\n : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1;\n}\n\nfunction getMonthInterval(approxInterval) {\n var APPROX_ONE_MONTH = 30 * ONE_DAY;\n approxInterval /= APPROX_ONE_MONTH;\n return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getHourInterval(approxInterval) {\n approxInterval /= ONE_HOUR;\n return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getMinutesAndSecondsInterval(approxInterval, isMinutes) {\n approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\n return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getMillisecondsInterval(approxInterval) {\n return numberUtil.nice(approxInterval, true);\n}\n\nfunction getFirstTimestampOfUnit(date, unitName, isUTC) {\n var outDate = new Date(date);\n\n switch (getPrimaryTimeUnit(unitName)) {\n case 'year':\n case 'month':\n outDate[monthSetterName(isUTC)](0);\n\n case 'day':\n outDate[dateSetterName(isUTC)](1);\n\n case 'hour':\n outDate[hoursSetterName(isUTC)](0);\n\n case 'minute':\n outDate[minutesSetterName(isUTC)](0);\n\n case 'second':\n outDate[secondsSetterName(isUTC)](0);\n outDate[millisecondsSetterName(isUTC)](0);\n }\n\n return outDate.getTime();\n}\n\nfunction getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\n var safeLimit = 10000;\n var unitNames = timeUnits;\n var iter = 0;\n\n function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\n var date = new Date(minTimestamp);\n var dateTime = minTimestamp;\n var d = date[getMethodName](); // if (isDate) {\n // d -= 1; // Starts with 0; PENDING\n // }\n\n while (dateTime < maxTimestamp && dateTime <= extent[1]) {\n out.push({\n value: dateTime\n });\n d += interval;\n date[setMethodName](d);\n dateTime = date.getTime();\n } // This extra tick is for calcuating ticks of next level. Will not been added to the final result\n\n\n out.push({\n value: dateTime,\n notAdd: true\n });\n }\n\n function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\n var newAddedTicks = [];\n var isFirstLevel = !lastLevelTicks.length;\n\n if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\n return;\n }\n\n if (isFirstLevel) {\n lastLevelTicks = [{\n // TODO Optimize. Not include so may ticks.\n value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\n }, {\n value: extent[1]\n }];\n }\n\n for (var i = 0; i < lastLevelTicks.length - 1; i++) {\n var startTick = lastLevelTicks[i].value;\n var endTick = lastLevelTicks[i + 1].value;\n\n if (startTick === endTick) {\n continue;\n }\n\n var interval = void 0;\n var getterName = void 0;\n var setterName = void 0;\n var isDate = false;\n\n switch (unitName) {\n case 'year':\n interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\n getterName = fullYearGetterName(isUTC);\n setterName = fullYearSetterName(isUTC);\n break;\n\n case 'half-year':\n case 'quarter':\n case 'month':\n interval = getMonthInterval(approxInterval);\n getterName = monthGetterName(isUTC);\n setterName = monthSetterName(isUTC);\n break;\n\n case 'week': // PENDING If week is added. Ignore day.\n\n case 'half-week':\n case 'day':\n interval = getDateInterval(approxInterval, 31); // Use 32 days and let interval been 16\n\n getterName = dateGetterName(isUTC);\n setterName = dateSetterName(isUTC);\n isDate = true;\n break;\n\n case 'half-day':\n case 'quarter-day':\n case 'hour':\n interval = getHourInterval(approxInterval);\n getterName = hoursGetterName(isUTC);\n setterName = hoursSetterName(isUTC);\n break;\n\n case 'minute':\n interval = getMinutesAndSecondsInterval(approxInterval, true);\n getterName = minutesGetterName(isUTC);\n setterName = minutesSetterName(isUTC);\n break;\n\n case 'second':\n interval = getMinutesAndSecondsInterval(approxInterval, false);\n getterName = secondsGetterName(isUTC);\n setterName = secondsSetterName(isUTC);\n break;\n\n case 'millisecond':\n interval = getMillisecondsInterval(approxInterval);\n getterName = millisecondsGetterName(isUTC);\n setterName = millisecondsSetterName(isUTC);\n break;\n }\n\n addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\n\n if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\n // Add nearest years to the left extent.\n levelTicks.unshift({\n value: levelTicks[0].value - interval\n });\n }\n }\n\n for (var i = 0; i < newAddedTicks.length; i++) {\n levelTicks.push(newAddedTicks[i]);\n } // newAddedTicks.length && console.log(unitName, newAddedTicks);\n\n\n return newAddedTicks;\n }\n\n var levelsTicks = [];\n var currentLevelTicks = [];\n var tickCount = 0;\n var lastLevelTickCount = 0;\n\n for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\n var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\n\n if (!isPrimaryTimeUnit(unitNames[i])) {\n // TODO\n continue;\n }\n\n addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\n var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\n\n if (primaryTimeUnit !== nextPrimaryTimeUnit) {\n if (currentLevelTicks.length) {\n lastLevelTickCount = tickCount; // Remove the duplicate so the tick count can be precisely.\n\n currentLevelTicks.sort(function (a, b) {\n return a.value - b.value;\n });\n var levelTicksRemoveDuplicated = [];\n\n for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\n var tickValue = currentLevelTicks[i_1].value;\n\n if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\n levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\n\n if (tickValue >= extent[0] && tickValue <= extent[1]) {\n tickCount++;\n }\n }\n }\n\n var targetTickNum = (extent[1] - extent[0]) / approxInterval; // Added too much in this level and not too less in last level\n\n if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\n break;\n } // Only treat primary time unit as one level.\n\n\n levelsTicks.push(levelTicksRemoveDuplicated);\n\n if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\n break;\n }\n } // Reset if next unitName is primary\n\n\n currentLevelTicks = [];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (iter >= safeLimit) {\n warn('Exceed safe limit.');\n }\n }\n\n var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\n return filter(levelTicks, function (tick) {\n return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd;\n });\n }), function (levelTicks) {\n return levelTicks.length > 0;\n });\n var ticks = [];\n var maxLevel = levelsTicksInExtent.length - 1;\n\n for (var i = 0; i < levelsTicksInExtent.length; ++i) {\n var levelTicks = levelsTicksInExtent[i];\n\n for (var k = 0; k < levelTicks.length; ++k) {\n ticks.push({\n value: levelTicks[k].value,\n level: maxLevel - i\n });\n }\n }\n\n ticks.sort(function (a, b) {\n return a.value - b.value;\n }); // Remove duplicates\n\n var result = [];\n\n for (var i = 0; i < ticks.length; ++i) {\n if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\n result.push(ticks[i]);\n }\n }\n\n return result;\n}\n\nScale.registerClass(TimeScale);\nexport default TimeScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Scale from './Scale.js';\nimport * as numberUtil from '../util/number.js';\nimport * as scaleHelper from './helper.js'; // Use some method of IntervalScale\n\nimport IntervalScale from './Interval.js';\nvar scaleProto = Scale.prototype; // FIXME:TS refactor: not good to call it directly with `this`?\n\nvar intervalScaleProto = IntervalScale.prototype;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\n\nvar LogScale =\n/** @class */\nfunction (_super) {\n __extends(LogScale, _super);\n\n function LogScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = 'log';\n _this.base = 10;\n _this._originalScale = new IntervalScale(); // FIXME:TS actually used by `IntervalScale`\n\n _this._interval = 0;\n return _this;\n }\n /**\n * @param Whether expand the ticks to niced extent.\n */\n\n\n LogScale.prototype.getTicks = function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\n return zrUtil.map(ticks, function (tick) {\n var val = tick.value;\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return {\n value: powVal\n };\n }, this);\n };\n\n LogScale.prototype.setExtent = function (start, end) {\n var base = mathLog(this.base); // log(-Infinity) is NaN, so safe guard here\n\n start = mathLog(Math.max(0, start)) / base;\n end = mathLog(Math.max(0, end)) / base;\n intervalScaleProto.setExtent.call(this, start, end);\n };\n /**\n * @return {number} end\n */\n\n\n LogScale.prototype.getExtent = function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n };\n\n LogScale.prototype.unionExtent = function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n };\n\n LogScale.prototype.unionExtentFromData = function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n };\n /**\n * Update interval and extent of intervals for nice ticks\n * @param approxTickNum default 10 Given approx tick number\n */\n\n\n LogScale.prototype.calcNiceTicks = function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n };\n\n LogScale.prototype.calcNiceExtent = function (opt) {\n intervalScaleProto.calcNiceExtent.call(this, opt);\n this._fixMin = opt.fixMin;\n this._fixMax = opt.fixMax;\n };\n\n LogScale.prototype.parse = function (val) {\n return val;\n };\n\n LogScale.prototype.contain = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleHelper.contain(val, this._extent);\n };\n\n LogScale.prototype.normalize = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleHelper.normalize(val, this._extent);\n };\n\n LogScale.prototype.scale = function (val) {\n val = scaleHelper.scale(val, this._extent);\n return mathPow(this.base, val);\n };\n\n LogScale.type = 'log';\n return LogScale;\n}(Scale);\n\nvar proto = LogScale.prototype;\nproto.getMinorTicks = intervalScaleProto.getMinorTicks;\nproto.getLabel = intervalScaleProto.getLabel;\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, numberUtil.getPrecision(originalVal));\n}\n\nScale.registerClass(LogScale);\nexport default LogScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { assert, isArray, eqNaN, isFunction } from 'zrender/lib/core/util.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\n\nvar ScaleRawExtentInfo =\n/** @class */\nfunction () {\n function ScaleRawExtentInfo(scale, model, // Usually: data extent from all series on this axis.\n originalExtent) {\n this._prepareParams(scale, model, originalExtent);\n }\n /**\n * Parameters depending on ouside (like model, user callback)\n * are prepared and fixed here.\n */\n\n\n ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, // Usually: data extent from all series on this axis.\n dataExtent) {\n if (dataExtent[1] < dataExtent[0]) {\n dataExtent = [NaN, NaN];\n }\n\n this._dataMin = dataExtent[0];\n this._dataMax = dataExtent[1];\n var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\n this._needCrossZero = scale.type === 'interval' && model.getNeedCrossZero && model.getNeedCrossZero();\n var modelMinRaw = this._modelMinRaw = model.get('min', true);\n\n if (isFunction(modelMinRaw)) {\n // This callback alway provide users the full data extent (before data filtered).\n this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\n min: dataExtent[0],\n max: dataExtent[1]\n }));\n } else if (modelMinRaw !== 'dataMin') {\n this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\n }\n\n var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\n\n if (isFunction(modelMaxRaw)) {\n // This callback alway provide users the full data extent (before data filtered).\n this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\n min: dataExtent[0],\n max: dataExtent[1]\n }));\n } else if (modelMaxRaw !== 'dataMax') {\n this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\n }\n\n if (isOrdinal) {\n // FIXME: there is a flaw here: if there is no \"block\" data processor like `dataZoom`,\n // and progressive rendering is using, here the category result might just only contain\n // the processed chunk rather than the entire result.\n this._axisDataLen = model.getCategories().length;\n } else {\n var boundaryGap = model.get('boundaryGap');\n var boundaryGapArr = isArray(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\n\n if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Boolean type for boundaryGap is only ' + 'allowed for ordinal axis. Please use string in ' + 'percentage instead, e.g., \"20%\". Currently, ' + 'boundaryGap is set to be 0.');\n }\n\n this._boundaryGapInner = [0, 0];\n } else {\n this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)];\n }\n }\n };\n /**\n * Calculate extent by prepared parameters.\n * This method has no external dependency and can be called duplicatedly,\n * getting the same result.\n * If parameters changed, should call this method to recalcuate.\n */\n\n\n ScaleRawExtentInfo.prototype.calculate = function () {\n // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n var isOrdinal = this._isOrdinal;\n var dataMin = this._dataMin;\n var dataMax = this._dataMax;\n var axisDataLen = this._axisDataLen;\n var boundaryGapInner = this._boundaryGapInner;\n var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null; // Currently if a `'value'` axis model min is specified as 'dataMin'/'dataMax',\n // `boundaryGap` will not be used. It's the different from specifying as `null`/`undefined`.\n\n var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\n var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum; // If `_modelMinNum`/`_modelMaxNum` is `null`/`undefined`, should not be fixed.\n\n var minFixed = min != null;\n var maxFixed = max != null;\n\n if (min == null) {\n min = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span;\n }\n\n if (max == null) {\n max = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span;\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n var isBlank = eqNaN(min) || eqNaN(max) || isOrdinal && !axisDataLen; // If data extent modified, need to recalculated to ensure cross zero.\n\n if (this._needCrossZero) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !minFixed) {\n min = 0; // minFixed = true;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !maxFixed) {\n max = 0; // maxFixed = true;\n } // PENDING:\n // When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n // If so, here `minFixed`/`maxFixed` need to be set.\n\n }\n\n var determinedMin = this._determinedMin;\n var determinedMax = this._determinedMax;\n\n if (determinedMin != null) {\n min = determinedMin;\n minFixed = true;\n }\n\n if (determinedMax != null) {\n max = determinedMax;\n maxFixed = true;\n } // Ensure min/max be finite number or NaN here. (not to be null/undefined)\n // `NaN` means min/max axis is blank.\n\n\n return {\n min: min,\n max: max,\n minFixed: minFixed,\n maxFixed: maxFixed,\n isBlank: isBlank\n };\n };\n\n ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\n if (process.env.NODE_ENV !== 'production') {\n assert(!this.frozen);\n }\n\n this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\n };\n\n ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\n var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\n\n if (process.env.NODE_ENV !== 'production') {\n assert(!this.frozen // Earse them usually means logic flaw.\n && this[attr] == null);\n }\n\n this[attr] = val;\n };\n\n ScaleRawExtentInfo.prototype.freeze = function () {\n // @ts-ignore\n this.frozen = true;\n };\n\n return ScaleRawExtentInfo;\n}();\n\nexport { ScaleRawExtentInfo };\nvar DETERMINED_MIN_MAX_ATTR = {\n min: '_determinedMin',\n max: '_determinedMax'\n};\nvar DATA_MIN_MAX_ATTR = {\n min: '_dataMin',\n max: '_dataMax'\n};\n/**\n * Get scale min max and related info only depends on model settings.\n * This method can be called after coordinate system created.\n * For example, in data processing stage.\n *\n * Scale extent info probably be required multiple times during a workflow.\n * For example:\n * (1) `dataZoom` depends it to get the axis extent in \"100%\" state.\n * (2) `processor/extentCalculator` depends it to make sure whether axis extent is specified.\n * (3) `coordSys.update` use it to finally decide the scale extent.\n * But the callback of `min`/`max` should not be called multiple times.\n * The code below should not be implemented repeatedly either.\n * So we cache the result in the scale instance, which will be recreated at the begining\n * of the workflow (because `scale` instance will be recreated each round of the workflow).\n */\n\nexport function ensureScaleRawExtentInfo(scale, model, // Usually: data extent from all series on this axis.\noriginalExtent) {\n // Do not permit to recreate.\n var rawExtentInfo = scale.rawExtentInfo;\n\n if (rawExtentInfo) {\n return rawExtentInfo;\n }\n\n rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent); // @ts-ignore\n\n scale.rawExtentInfo = rawExtentInfo;\n return rawExtentInfo;\n}\nexport function parseAxisModelMinMax(scale, minMax) {\n return minMax == null ? null : eqNaN(minMax) ? NaN : scale.parse(minMax);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport OrdinalScale from '../scale/Ordinal.js';\nimport IntervalScale from '../scale/Interval.js';\nimport Scale from '../scale/Scale.js';\nimport { prepareLayoutBarSeries, makeColumnLayout, retrieveColumnLayout } from '../layout/barGrid.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport TimeScale from '../scale/Time.js';\nimport LogScale from '../scale/Log.js';\nimport { getStackedDimension } from '../data/helper/dataStackHelper.js';\nimport { ensureScaleRawExtentInfo } from './scaleRawExtentInfo.js';\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n *\n * Caution:\n * Precondition of calling this method:\n * The scale extent has been initialized using series data extent via\n * `scale.setExtent` or `scale.unionExtentFromData`;\n */\n\nexport function getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\n scale.setBlank(rawExtentResult.isBlank);\n var min = rawExtentResult.min;\n var max = rawExtentResult.max; // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries_1 = false;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries_1) {\n // Calculate placement of bars on axis. TODO should be decoupled\n // with barLayout\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: rawExtentResult.minFixed,\n fixMax: rawExtentResult.maxFixed\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, // Only support cartesian coord yet.\nbarWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calculate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n} // Precondition of calling this method:\n// The scale extent has been initailized using series data extent via\n// `scale.setExtent` or `scale.unionExtentFromData`;\n\n\nexport function niceScaleExtent(scale, inModel) {\n var model = inModel;\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale instanceof LogScale) {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n var interval = model.get('interval');\n var isIntervalOrTime = scaleType === 'interval' || scaleType === 'time';\n scale.setExtent(extent[0], extent[1]);\n scale.calcNiceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: isIntervalOrTime ? model.get('minInterval') : null,\n maxInterval: isIntervalOrTime ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param axisType Default retrieve from model.type\n */\n\nexport function createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale({\n ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(),\n extent: [Infinity, -Infinity]\n });\n\n case 'time':\n return new TimeScale({\n locale: model.ecModel.getLocaleModel(),\n useUTC: model.ecModel.get('useUTC')\n });\n\n default:\n // case 'value'/'interval', 'log', or others.\n return new (Scale.getClass(axisType) || IntervalScale)();\n }\n }\n}\n/**\n * Check if the axis cross 0\n */\n\nexport function ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param axis\n * @return Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not required.\n * return: {string} label string.\n */\n\nexport function makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (axis.scale.type === 'time') {\n return function (tpl) {\n return function (tick, idx) {\n return axis.scale.getFormattedLabel(tick, idx, tpl);\n };\n }(labelFormatter);\n } else if (zrUtil.isString(labelFormatter)) {\n return function (tpl) {\n return function (tick) {\n // For category axis, get raw value; for numeric axis,\n // get formatted label like '1,333,444'.\n var label = axis.scale.getLabel(tick);\n var text = tpl.replace('{value}', label != null ? label : '');\n return text;\n };\n }(labelFormatter);\n } else if (zrUtil.isFunction(labelFormatter)) {\n return function (cb) {\n return function (tick, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tick.value - categoryTickStart;\n }\n\n return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\n level: tick.level\n } : null);\n };\n }(labelFormatter);\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\nexport function getAxisRawValue(axis, tick) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\n}\n/**\n * @param axis\n * @return Be null/undefined if no labels.\n */\n\nexport function estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\n return;\n }\n\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (scale instanceof OrdinalScale) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {\n value: categoryScaleExtent[0] + i\n };\n var label = labelFormatter(tick, i);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var beforeWidth = textRect.width;\n var beforeHeight = textRect.height;\n var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nexport function getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n */\n\nexport function shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\nexport function getDataDimensionsOnAxis(data, axisDim) {\n // Remove duplicated dat dimensions caused by `getStackedDimension`.\n var dataDimMap = {}; // Currently `mapDimensionsAll` will contain stack result dimension ('__\\0ecstackresult').\n // PENDING: is it reasonable? Do we need to remove the original dim from \"coord dim\" since\n // there has been stacked result dim?\n\n zrUtil.each(data.mapDimensionsAll(axisDim), function (dataDim) {\n // For example, the extent of the original dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should NOT include [0.1, 0.5],\n // because there is no graphic corresponding to [0.1, 0.5].\n // See the case in `test/area-stack.html` `main1`, where area line\n // stack needs `yAxis` not start from 0.\n dataDimMap[getStackedDimension(data, dataDim)] = true;\n });\n return zrUtil.keys(dataDimMap);\n}\nexport function unionAxisExtentFromData(dataExtent, data, axisDim) {\n if (data) {\n zrUtil.each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\n var seriesExtent = data.getApproximateExtent(dim);\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n });\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { createHashMap, isObject, retrieve2 } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../../util/model.js';\nimport { shouldRetrieveDataByName } from '../Source.js';\nvar inner = makeInner();\nvar dimTypeShort = {\n float: 'f',\n int: 'i',\n ordinal: 'o',\n number: 'n',\n time: 't'\n};\n/**\n * Represents the dimension requirement of a series.\n *\n * NOTICE:\n * When there are too many dimensions in dataset and many series, only the used dimensions\n * (i.e., used by coord sys and declared in `series.encode`) are add to `dimensionDefineList`.\n * But users may query data by other unused dimension names.\n * In this case, users can only query data if and only if they have defined dimension names\n * via ec option, so we provide `getDimensionIndexFromSource`, which only query them from\n * `source` dimensions.\n */\n\nvar SeriesDataSchema =\n/** @class */\nfunction () {\n function SeriesDataSchema(opt) {\n this.dimensions = opt.dimensions;\n this._dimOmitted = opt.dimensionOmitted;\n this.source = opt.source;\n this._fullDimCount = opt.fullDimensionCount;\n\n this._updateDimOmitted(opt.dimensionOmitted);\n }\n\n SeriesDataSchema.prototype.isDimensionOmitted = function () {\n return this._dimOmitted;\n };\n\n SeriesDataSchema.prototype._updateDimOmitted = function (dimensionOmitted) {\n this._dimOmitted = dimensionOmitted;\n\n if (!dimensionOmitted) {\n return;\n }\n\n if (!this._dimNameMap) {\n this._dimNameMap = ensureSourceDimNameMap(this.source);\n }\n };\n /**\n * @caution Can only be used when `dimensionOmitted: true`.\n *\n * Get index by user defined dimension name (i.e., not internal generate name).\n * That is, get index from `dimensionsDefine`.\n * If no `dimensionsDefine`, or no name get, return -1.\n */\n\n\n SeriesDataSchema.prototype.getSourceDimensionIndex = function (dimName) {\n return retrieve2(this._dimNameMap.get(dimName), -1);\n };\n /**\n * @caution Can only be used when `dimensionOmitted: true`.\n *\n * Notice: may return `null`/`undefined` if user not specify dimension names.\n */\n\n\n SeriesDataSchema.prototype.getSourceDimension = function (dimIndex) {\n var dimensionsDefine = this.source.dimensionsDefine;\n\n if (dimensionsDefine) {\n return dimensionsDefine[dimIndex];\n }\n };\n\n SeriesDataSchema.prototype.makeStoreSchema = function () {\n var dimCount = this._fullDimCount;\n var willRetrieveDataByName = shouldRetrieveDataByName(this.source);\n var makeHashStrict = !shouldOmitUnusedDimensions(dimCount); // If source don't have dimensions or series don't omit unsed dimensions.\n // Generate from seriesDimList directly\n\n var dimHash = '';\n var dims = [];\n\n for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) {\n var property = void 0;\n var type = void 0;\n var ordinalMeta = void 0;\n var seriesDimDef = this.dimensions[seriesDimIdx]; // The list has been sorted by `storeDimIndex` asc.\n\n if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {\n property = willRetrieveDataByName ? seriesDimDef.name : null;\n type = seriesDimDef.type;\n ordinalMeta = seriesDimDef.ordinalMeta;\n seriesDimIdx++;\n } else {\n var sourceDimDef = this.getSourceDimension(fullDimIdx);\n\n if (sourceDimDef) {\n property = willRetrieveDataByName ? sourceDimDef.name : null;\n type = sourceDimDef.type;\n }\n }\n\n dims.push({\n property: property,\n type: type,\n ordinalMeta: ordinalMeta\n }); // If retrieving data by index,\n // use to determine whether data can be shared.\n // (Becuase in this case there might be no dimension name defined in dataset, but indices always exists).\n // (indices are always 0, 1, 2, ..., so we can ignore them to shorten the hash).\n // Otherwise if retrieving data by property name (like `data: [{aa: 123, bb: 765}, ...]`),\n // use in hash.\n\n if (willRetrieveDataByName && property != null // For data stack, we have make sure each series has its own dim on this store.\n // So we do not add property to hash to make sure they can share this store.\n && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) {\n dimHash += makeHashStrict // Use escape character '`' in case that property name contains '$'.\n ? property.replace(/\\`/g, '`1').replace(/\\$/g, '`2') // For better performance, when there are large dimensions, tolerant this defects that hardly meet.\n : property;\n }\n\n dimHash += '$';\n dimHash += dimTypeShort[type] || 'f';\n\n if (ordinalMeta) {\n dimHash += ordinalMeta.uid;\n }\n\n dimHash += '$';\n } // Source from endpoint(usually series) will be read differently\n // when seriesLayoutBy or startIndex(which is affected by sourceHeader) are different.\n // So we use this three props as key.\n\n\n var source = this.source;\n var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join('$$');\n return {\n dimensions: dims,\n hash: hash\n };\n };\n\n SeriesDataSchema.prototype.makeOutputDimensionNames = function () {\n var result = [];\n\n for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) {\n var name_1 = void 0;\n var seriesDimDef = this.dimensions[seriesDimIdx]; // The list has been sorted by `storeDimIndex` asc.\n\n if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {\n if (!seriesDimDef.isCalculationCoord) {\n name_1 = seriesDimDef.name;\n }\n\n seriesDimIdx++;\n } else {\n var sourceDimDef = this.getSourceDimension(fullDimIdx);\n\n if (sourceDimDef) {\n name_1 = sourceDimDef.name;\n }\n }\n\n result.push(name_1);\n }\n\n return result;\n };\n\n SeriesDataSchema.prototype.appendCalculationDimension = function (dimDef) {\n this.dimensions.push(dimDef);\n dimDef.isCalculationCoord = true;\n this._fullDimCount++; // If append dimension on a data store, consider the store\n // might be shared by different series, series dimensions not\n // really map to store dimensions.\n\n this._updateDimOmitted(true);\n };\n\n return SeriesDataSchema;\n}();\n\nexport { SeriesDataSchema };\nexport function isSeriesDataSchema(schema) {\n return schema instanceof SeriesDataSchema;\n}\nexport function createDimNameMap(dimsDef) {\n var dataDimNameMap = createHashMap();\n\n for (var i = 0; i < (dimsDef || []).length; i++) {\n var dimDefItemRaw = dimsDef[i];\n var userDimName = isObject(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw;\n\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n dataDimNameMap.set(userDimName, i);\n }\n }\n\n return dataDimNameMap;\n}\nexport function ensureSourceDimNameMap(source) {\n var innerSource = inner(source);\n return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine));\n}\nexport function shouldOmitUnusedDimensions(dimCount) {\n return dimCount > 30;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport { makeInner } from '../util/model.js';\nimport { makeLabelFormatter, getOptionCategoryInterval, shouldShowAllLabels } from './axisHelper.js';\nvar inner = makeInner();\nexport function createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.\n * tickCategoryInterval: number\n * }\n */\n\nexport function createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: zrUtil.map(axis.scale.getTicks(), function (tick) {\n return tick.value;\n })\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tick, idx) {\n return {\n level: tick.level,\n formattedLabel: labelFormatter(tick, idx),\n rawLabel: axis.scale.getLabel(tick),\n tickValue: tick.value\n };\n })\n };\n}\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nexport function calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter({\n value: tickValue\n }), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtent0 = axisExtent[0];\n cache.axisExtent1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tickValue) {\n var tickObj = {\n value: tickValue\n };\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickObj),\n rawLabel: ordinalScale.getLabel(tickObj),\n tickValue: tickValue\n });\n }\n\n return result;\n}\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tick) {\n var rawLabel = ordinalScale.getLabel(tick);\n var tickValue = tick.value;\n\n if (categoryInterval(tick.value, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tick),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { each, map } from 'zrender/lib/core/util.js';\nimport { linearMap, getPixelPrecision, round } from '../util/number.js';\nimport { createAxisTicks, createAxisLabels, calculateCategoryInterval } from './axisTickLabelBuilder.js';\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n */\n\nvar Axis =\n/** @class */\nfunction () {\n function Axis(dim, scale, extent) {\n this.onBand = false;\n this.inverse = false;\n this.dim = dim;\n this.scale = scale;\n this._extent = extent || [0, 0];\n }\n /**\n * If axis extent contain given coord\n */\n\n\n Axis.prototype.contain = function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n };\n /**\n * If axis extent contain given data\n */\n\n\n Axis.prototype.containData = function (data) {\n return this.scale.contain(data);\n };\n /**\n * Get coord extent.\n */\n\n\n Axis.prototype.getExtent = function () {\n return this._extent.slice();\n };\n /**\n * Get precision used for formatting\n */\n\n\n Axis.prototype.getPixelPrecision = function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n };\n /**\n * Set coord extent\n */\n\n\n Axis.prototype.setExtent = function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n };\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n */\n\n\n Axis.prototype.dataToCoord = function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n };\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n */\n\n\n Axis.prototype.coordToData = function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n };\n /**\n * Convert pixel point to data in axis\n */\n\n\n Axis.prototype.pointToData = function (point, clamp) {\n // Should be implemented in derived class if necessary.\n return;\n };\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param opt.tickModel default: axis.model.getModel('axisTick')\n * @param opt.clamp If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n */\n\n\n Axis.prototype.getTicksCoords = function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickVal) {\n return {\n coord: this.dataToCoord(this.scale.type === 'ordinal' ? this.scale.getRawOrdinalNumber(tickVal) : tickVal),\n tickValue: tickVal\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n };\n\n Axis.prototype.getMinorTicksCoords = function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n };\n\n Axis.prototype.getViewLabels = function () {\n return createAxisLabels(this).labels;\n };\n\n Axis.prototype.getLabelModel = function () {\n return this.model.getModel('axisLabel');\n };\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n */\n\n\n Axis.prototype.getTickModel = function () {\n return this.model.getModel('axisTick');\n };\n /**\n * Get width of band\n */\n\n\n Axis.prototype.getBandWidth = function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n };\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return Auto interval for cateogry axis tick and label\n */\n\n\n Axis.prototype.calculateCategoryInterval = function () {\n return calculateCategoryInterval(this);\n };\n\n return Axis;\n}();\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift_1 / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nexport default Axis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { Point, Path, Polyline } from '../util/graphic.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\nimport { cubicProjectPoint, quadraticProjectPoint } from 'zrender/lib/core/curve.js';\nimport { defaults, retrieve2 } from 'zrender/lib/core/util.js';\nimport { invert } from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport { DISPLAY_STATES, SPECIAL_STATES } from '../util/states.js';\nvar PI2 = Math.PI * 2;\nvar CMD = PathProxy.CMD;\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\n\nfunction getCandidateAnchor(pos, distance, rect, outPt, outDir) {\n var width = rect.width;\n var height = rect.height;\n\n switch (pos) {\n case 'top':\n outPt.set(rect.x + width / 2, rect.y - distance);\n outDir.set(0, -1);\n break;\n\n case 'bottom':\n outPt.set(rect.x + width / 2, rect.y + height + distance);\n outDir.set(0, 1);\n break;\n\n case 'left':\n outPt.set(rect.x - distance, rect.y + height / 2);\n outDir.set(-1, 0);\n break;\n\n case 'right':\n outPt.set(rect.x + width + distance, rect.y + height / 2);\n outDir.set(1, 0);\n break;\n }\n}\n\nfunction projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n x /= d;\n y /= d; // Intersect point.\n\n var ox = x * r + cx;\n var oy = y * r + cy;\n\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var angle = Math.atan2(y, x);\n\n if (angle < 0) {\n angle += PI2;\n }\n\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n // Project point is on the arc.\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n\n var x1 = r * Math.cos(startAngle) + cx;\n var y1 = r * Math.sin(startAngle) + cy;\n var x2 = r * Math.cos(endAngle) + cx;\n var y2 = r * Math.sin(endAngle) + cy;\n var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\n var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\n\n if (d1 < d2) {\n out[0] = x1;\n out[1] = y1;\n return Math.sqrt(d1);\n } else {\n out[0] = x2;\n out[1] = y2;\n return Math.sqrt(d2);\n }\n}\n\nfunction projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\n var dx = x - x1;\n var dy = y - y1;\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n dx1 /= lineLen;\n dy1 /= lineLen; // dot product\n\n var projectedLen = dx * dx1 + dy * dy1;\n var t = projectedLen / lineLen;\n\n if (limitToEnds) {\n t = Math.min(Math.max(t, 0), 1);\n }\n\n t *= lineLen;\n var ox = out[0] = x1 + t * dx1;\n var oy = out[1] = y1 + t * dy1;\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\n\nfunction projectPointToRect(x1, y1, width, height, x, y, out) {\n if (width < 0) {\n x1 = x1 + width;\n width = -width;\n }\n\n if (height < 0) {\n y1 = y1 + height;\n height = -height;\n }\n\n var x2 = x1 + width;\n var y2 = y1 + height;\n var ox = out[0] = Math.min(Math.max(x, x1), x2);\n var oy = out[1] = Math.min(Math.max(y, y1), y2);\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\n\nvar tmpPt = [];\n\nfunction nearestPointOnRect(pt, rect, out) {\n var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\n out.set(tmpPt[0], tmpPt[1]);\n return dist;\n}\n/**\n * Calculate min distance corresponding point.\n * This method won't evaluate if point is in the path.\n */\n\n\nfunction nearestPointOnPath(pt, path, out) {\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n var minDist = Infinity;\n var data = path.data;\n var x = pt.x;\n var y = pt.y;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n var d = minDist;\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n\n case CMD.L:\n d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++]; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n if (i <= 1) {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n var _x = (x - cx) * ry / rx + cx;\n\n d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\n break;\n\n case CMD.Z:\n d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\n xi = x0;\n yi = y0;\n break;\n }\n\n if (d < minDist) {\n minDist = d;\n out.set(tmpPt[0], tmpPt[1]);\n }\n }\n\n return minDist;\n} // Temporal varible for intermediate usage.\n\n\nvar pt0 = new Point();\nvar pt1 = new Point();\nvar pt2 = new Point();\nvar dir = new Point();\nvar dir2 = new Point();\n/**\n * Calculate a proper guide line based on the label position and graphic element definition\n * @param label\n * @param labelRect\n * @param target\n * @param targetRect\n */\n\nexport function updateLabelLinePoints(target, labelLineModel) {\n if (!target) {\n return;\n }\n\n var labelLine = target.getTextGuideLine();\n var label = target.getTextContent(); // Needs to create text guide in each charts.\n\n if (!(label && labelLine)) {\n return;\n }\n\n var labelGuideConfig = target.textGuideLineConfig || {};\n var points = [[0, 0], [0, 0], [0, 0]];\n var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\n var labelRect = label.getBoundingRect().clone();\n labelRect.applyTransform(label.getComputedTransform());\n var minDist = Infinity;\n var anchorPoint = labelGuideConfig.anchor;\n var targetTransform = target.getComputedTransform();\n var targetInversedTransform = targetTransform && invert([], targetTransform);\n var len = labelLineModel.get('length2') || 0;\n\n if (anchorPoint) {\n pt2.copy(anchorPoint);\n }\n\n for (var i = 0; i < searchSpace.length; i++) {\n var candidate = searchSpace[i];\n getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\n Point.scaleAndAdd(pt1, pt0, dir, len); // Transform to target coord space.\n\n pt1.transform(targetInversedTransform); // Note: getBoundingRect will ensure the `path` being created.\n\n var boundingRect = target.getBoundingRect();\n var dist = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2); // TODO pt2 is in the path\n\n if (dist < minDist) {\n minDist = dist; // Transform back to global space.\n\n pt1.transform(targetTransform);\n pt2.transform(targetTransform);\n pt2.toArray(points[0]);\n pt1.toArray(points[1]);\n pt0.toArray(points[2]);\n }\n }\n\n limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\n labelLine.setShape({\n points: points\n });\n} // Temporal variable for the limitTurnAngle function\n\nvar tmpArr = [];\nvar tmpProjPoint = new Point();\n/**\n * Reduce the line segment attached to the label to limit the turn angle between two segments.\n * @param linePoints\n * @param minTurnAngle Radian of minimum turn angle. 0 - 180\n */\n\nexport function limitTurnAngle(linePoints, minTurnAngle) {\n if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\n return;\n }\n\n minTurnAngle = minTurnAngle / 180 * Math.PI; // The line points can be\n // /pt1----pt2 (label)\n // /\n // pt0/\n\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt0, pt1);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(dir2);\n var minTurnAngleCos = Math.cos(minTurnAngle);\n\n if (minTurnAngleCos < angleCos) {\n // Smaller than minTurnAngle\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr); // Calculate new projected length with limited minTurnAngle and get the new connect point\n\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle)); // Limit the new calculated connect point between pt1 and pt2.\n\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n\n if (isNaN(t)) {\n return;\n }\n\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\n/**\n * Limit the angle of line and the surface\n * @param maxSurfaceAngle Radian of minimum turn angle. 0 - 180. 0 is same direction to normal. 180 is opposite\n */\n\nexport function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\n if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\n return;\n }\n\n maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt1, pt0);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(surfaceNormal);\n var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\n\n if (angleCos < maxSurfaceAngleCos) {\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr);\n var HALF_PI = Math.PI / 2;\n var angle2 = Math.acos(dir2.dot(surfaceNormal));\n var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\n\n if (newAngle >= HALF_PI) {\n // parallel\n Point.copy(tmpProjPoint, pt2);\n } else {\n // Calculate new projected length with limited minTurnAngle and get the new connect point\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle)); // Limit the new calculated connect point between pt1 and pt2.\n\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n\n if (isNaN(t)) {\n return;\n }\n\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n }\n\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\n\nfunction setLabelLineState(labelLine, ignore, stateName, stateModel) {\n var isNormal = stateName === 'normal';\n var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); // Make sure display.\n\n stateObj.ignore = ignore; // Set smooth\n\n var smooth = stateModel.get('smooth');\n\n if (smooth && smooth === true) {\n smooth = 0.3;\n }\n\n stateObj.shape = stateObj.shape || {};\n\n if (smooth > 0) {\n stateObj.shape.smooth = smooth;\n }\n\n var styleObj = stateModel.getModel('lineStyle').getLineStyle();\n isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\n}\n\nfunction buildLabelLinePath(path, shape) {\n var smooth = shape.smooth;\n var points = shape.points;\n\n if (!points) {\n return;\n }\n\n path.moveTo(points[0][0], points[0][1]);\n\n if (smooth > 0 && points.length >= 3) {\n var len1 = vector.dist(points[0], points[1]);\n var len2 = vector.dist(points[1], points[2]);\n\n if (!len1 || !len2) {\n path.lineTo(points[1][0], points[1][1]);\n path.lineTo(points[2][0], points[2][1]);\n return;\n }\n\n var moveLen = Math.min(len1, len2) * smooth;\n var midPoint0 = vector.lerp([], points[1], points[0], moveLen / len1);\n var midPoint2 = vector.lerp([], points[1], points[2], moveLen / len2);\n var midPoint1 = vector.lerp([], midPoint0, midPoint2, 0.5);\n path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\n path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\n } else {\n for (var i = 1; i < points.length; i++) {\n path.lineTo(points[i][0], points[i][1]);\n }\n }\n}\n/**\n * Create a label line if necessary and set it's style.\n */\n\n\nexport function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\n var labelLine = targetEl.getTextGuideLine();\n var label = targetEl.getTextContent();\n\n if (!label) {\n // Not show label line if there is no label.\n if (labelLine) {\n targetEl.removeTextGuideLine();\n }\n\n return;\n }\n\n var normalModel = statesModels.normal;\n var showNormal = normalModel.get('show');\n var labelIgnoreNormal = label.ignore;\n\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\n var stateName = DISPLAY_STATES[i];\n var stateModel = statesModels[stateName];\n var isNormal = stateName === 'normal';\n\n if (stateModel) {\n var stateShow = stateModel.get('show');\n var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\n\n if (isLabelIgnored // Not show when label is not shown in this state.\n || !retrieve2(stateShow, showNormal) // Use normal state by default if not set.\n ) {\n var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];\n\n if (stateObj) {\n stateObj.ignore = true;\n }\n\n continue;\n } // Create labelLine if not exists\n\n\n if (!labelLine) {\n labelLine = new Polyline();\n targetEl.setTextGuideLine(labelLine); // Reset state of normal because it's new created.\n // NOTE: NORMAL should always been the first!\n\n if (!isNormal && (labelIgnoreNormal || !showNormal)) {\n setLabelLineState(labelLine, true, 'normal', statesModels.normal);\n } // Use same state proxy.\n\n\n if (targetEl.stateProxy) {\n labelLine.stateProxy = targetEl.stateProxy;\n }\n }\n\n setLabelLineState(labelLine, false, stateName, stateModel);\n }\n }\n\n if (labelLine) {\n defaults(labelLine.style, defaultStyle); // Not fill.\n\n labelLine.style.fill = null;\n var showAbove = normalModel.get('showAbove');\n var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};\n labelLineConfig.showAbove = showAbove || false; // Custom the buildPath.\n\n labelLine.buildPath = buildLabelLinePath;\n }\n}\nexport function getLabelLineStatesModels(itemModel, labelLineName) {\n labelLineName = labelLineName || 'labelLine';\n var statesModels = {\n normal: itemModel.getModel(labelLineName)\n };\n\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\n }\n\n return statesModels;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as numberUtil from '../util/number.js';\nimport * as formatUtil from '../util/format.js';\nimport Scale from './Scale.js';\nimport * as helper from './helper.js';\nvar roundNumber = numberUtil.round;\n\nvar IntervalScale =\n/** @class */\nfunction (_super) {\n __extends(IntervalScale, _super);\n\n function IntervalScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = 'interval'; // Step is calculated in adjustExtent.\n\n _this._interval = 0;\n _this._intervalPrecision = 2;\n return _this;\n }\n\n IntervalScale.prototype.parse = function (val) {\n return val;\n };\n\n IntervalScale.prototype.contain = function (val) {\n return helper.contain(val, this._extent);\n };\n\n IntervalScale.prototype.normalize = function (val) {\n return helper.normalize(val, this._extent);\n };\n\n IntervalScale.prototype.scale = function (val) {\n return helper.scale(val, this._extent);\n };\n\n IntervalScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent; // start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n };\n\n IntervalScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n this.setExtent(extent[0], extent[1]);\n };\n\n IntervalScale.prototype.getInterval = function () {\n return this._interval;\n };\n\n IntervalScale.prototype.setInterval = function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n };\n /**\n * @param expandToNicedExtent Whether expand the ticks to niced extent.\n */\n\n\n IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push({\n value: roundNumber(niceTickExtent[0] - interval, intervalPrecision)\n });\n } else {\n ticks.push({\n value: extent[0]\n });\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push({\n value: tick\n }); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1].value) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push({\n value: roundNumber(lastNiceTick + interval, intervalPrecision)\n });\n } else {\n ticks.push({\n value: extent[1]\n });\n }\n }\n\n return ticks;\n };\n\n IntervalScale.prototype.getMinorTicks = function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick.value - prevTick.value;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = roundNumber(prevTick.value + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n };\n /**\n * @param opt.precision If 'auto', use nice presision.\n * @param opt.pad returns 1.50 but not 1.5 if precision is 2.\n */\n\n\n IntervalScale.prototype.getLabel = function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecision(data.value) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n var dataNum = roundNumber(data.value, precision, true);\n return formatUtil.addCommas(dataNum);\n };\n /**\n * @param splitNumber By default `5`.\n */\n\n\n IntervalScale.prototype.calcNiceTicks = function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n };\n\n IntervalScale.prototype.calcNiceExtent = function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n // Note that extents can be both negative. See #13154\n var expandSize = Math.abs(extent[0]); // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // let extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n };\n\n IntervalScale.prototype.setNiceExtent = function (min, max) {\n this._niceExtent = [min, max];\n };\n\n IntervalScale.type = 'interval';\n return IntervalScale;\n}(Scale);\n\nScale.registerClass(IntervalScale);\nexport default IntervalScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { createHashMap, isObject, map, isString } from 'zrender/lib/core/util.js';\nvar uidBase = 0;\n\nvar OrdinalMeta =\n/** @class */\nfunction () {\n function OrdinalMeta(opt) {\n this.categories = opt.categories || [];\n this._needCollect = opt.needCollect;\n this._deduplication = opt.deduplication;\n this.uid = ++uidBase;\n }\n\n OrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n };\n\n ;\n\n OrdinalMeta.prototype.getOrdinal = function (category) {\n // @ts-ignore\n return this._getOrCreateMap().get(category);\n };\n /**\n * @return The ordinal. If not found, return NaN.\n */\n\n\n OrdinalMeta.prototype.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (!isString(category) && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = this._getOrCreateMap(); // @ts-ignore\n\n\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category; // @ts-ignore\n\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n }; // Consider big data, do not create map until needed.\n\n\n OrdinalMeta.prototype._getOrCreateMap = function () {\n return this._map || (this._map = createHashMap(this.categories));\n };\n\n return OrdinalMeta;\n}();\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nexport default OrdinalMeta;","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47859902\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"datanalysis-header-content\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"datanalysis-header-state\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"datanalysis-header-state-item\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-lx\" }),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-text\" }, \"疗效指数\")\n ]),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"datanalysis-header-state-item\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-circle\" }),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-text\" }, \"完全入径\")\n ]),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"datanalysis-header-state-item\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-circle other\" }),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-text\" }, \"变异入径\")\n ]),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"datanalysis-header-state-item\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-circle none\" }),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"datanalysis-header-state-text\" }, \"未入径\")\n ])\n], -1))\nconst _hoisted_3 = { class: \"datanalysis-header-filter\" }\nconst _hoisted_4 = { class: \"datanalysis-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_nav_title = _resolveComponent(\"nav-title\")!\n const _component_picker_group = _resolveComponent(\"picker-group\")!\n const _component_el_form_item = _resolveComponent(\"el-form-item\")!\n const _component_el_option = _resolveComponent(\"el-option\")!\n const _component_el_select = _resolveComponent(\"el-select\")!\n const _component_search = _resolveComponent(\"search\")!\n const _component_el_form = _resolveComponent(\"el-form\")!\n const _component_pinyinSelect = _resolveComponent(\"pinyinSelect\")!\n const _component_el_header = _resolveComponent(\"el-header\")!\n const _component_data_statistics = _resolveComponent(\"data-statistics\")!\n const _component_empty = _resolveComponent(\"empty\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _component_caserecord = _resolveComponent(\"caserecord\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (!$setup.showCase)\n ? (_openBlock(), _createBlock(_component_el_container, {\n key: 0,\n class: \"datanalysis\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_header, { class: \"datanalysis-header\" }, {\n default: _withCtx(() => [\n _createVNode(_component_nav_title, {\n label: \"数据分析\",\n secondLabel: \"模型分析\"\n }),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_el_form, {\n inline: true,\n class: \"datanalysis-header-search demo-form-inline\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_picker_group, {\n startDate: $setup.startval,\n \"onUpdate:startDate\": _cache[0] || (_cache[0] = ($event: any) => (($setup.startval) = $event)),\n endDate: $setup.endval,\n \"onUpdate:endDate\": _cache[1] || (_cache[1] = ($event: any) => (($setup.endval) = $event))\n }, null, 8, [\"startDate\", \"endDate\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_select, {\n modelValue: $setup.mrType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($setup.mrType) = $event)),\n clearable: \"\",\n placeholder: \"Select\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.options, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.value,\n label: item.label,\n value: item.value\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_search, {\n onSearchHandle: $setup.searchMethod,\n searchWord: $setup.keyword,\n \"onUpdate:searchWord\": _cache[3] || (_cache[3] = ($event: any) => (($setup.keyword) = $event)),\n placeholderText: \"请输入...\",\n btnText: \"查询\"\n }, null, 8, [\"onSearchHandle\", \"searchWord\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _hoisted_2\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_pinyinSelect, {\n onSelect: $setup.selectFirstCode,\n code: $setup.codeFIrst\n }, null, 8, [\"onSelect\", \"code\"])\n ])\n ]),\n _: 1\n }),\n _withDirectives((_openBlock(), _createBlock(_component_el_main, { class: \"datanalysis-container\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dataList, (item, idx) => {\n return (_openBlock(), _createBlock(_component_data_statistics, {\n onSelect: $setup.showCaseMethod,\n data: item,\n key: idx\n }, null, 8, [\"onSelect\", \"data\"]))\n }), 128)),\n (!$setup.dataList.length)\n ? (_openBlock(), _createBlock(_component_empty, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n })), [\n [_directive_loading, $setup.caseLoading]\n ])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n ($setup.showCase)\n ? (_openBlock(), _createBlock(_component_caserecord, {\n key: 1,\n mrType: $setup.mrType,\n caseid: $setup.caseid,\n onEmitshowCase: $setup.emitshowCase\n }, null, 8, [\"mrType\", \"caseid\", \"onEmitshowCase\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, createBlock as _createBlock, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e65f708\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"caserecord\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"caserecord_contentNav\" }\nconst _hoisted_5 = { class: \"caserecord_navTitle\" }\nconst _hoisted_6 = { class: \"caserecord_navTitle_dxName\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"caserecord_navTitle-tri-bg\" }, null, -1))\nconst _hoisted_8 = { class: \"caserecord_navTitle_detail\" }\nconst _hoisted_9 = { class: \"tree\" }\nconst _hoisted_10 = { class: \"tree-zi\" }\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = [\"title\"]\nconst _hoisted_13 = [\"src\"]\nconst _hoisted_14 = { class: \"caserecord_contentList\" }\nconst _hoisted_15 = { class: \"grid-content bg-purple\" }\n\nimport { reactive, ref, watch} from \"vue\";\r\nimport { useStore } from 'vuex';\r\nimport { ArrowRight } from '@element-plus/icons-vue'\r\nimport emrDetail from '@c/page/emrDetail/emrDetail.vue';\r\nimport dialectical from '@c/page/person/dialectical.vue'    //辨证\r\nimport { caseTableHeader } from '@/util/contant'\r\nimport { ImgUrlFix } from '@u/contant'\r\nimport breadnav from './breadnav.vue'\r\nimport caseeffect from './caseeffect.vue'\r\nimport casemodel from './casemodel.vue'\r\nimport cassTable from './casstable.vue'\r\n//接口\r\nimport {getAnalysis, getSynDiffSta, getSynDiffComp} from '@r/api/xingling'\r\n\r\n//模拟数据\r\nimport { setTmplData} from \"@/assets/testdata/setTmplData\"\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'caserecord',\n props: {\n caseid: null,\n mrType: null\n },\n emits: ['emitshowCase'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n caseid: any\r\n mrType: any\r\n };\n\r\n\r\n\r\nconst store = useStore();\r\nconst mrType = ref(props.mrType)\r\nconst propcaseid = ref(props.caseid)\r\nconst propcaseidVal = propcaseid.value\r\n\r\nconst dialecticalVisible = ref(false) //辨证弹窗\r\nconst recordLoading = ref(false)\r\nconst activeName = ref('first')\r\nconst tabsArr: any = ['完全入径','变异入径','未入径'];\r\nconst cur: any = ref(0);//默认选中\r\nconst treeCur: any = ref(0);//点击左边节点\r\nconst bzName = ref('');//辨证名字\r\nconst bingliShow = ref(false);//是否显示病例\r\nconst caseeffectShow = ref(false);//是否显示疗效率\r\nconst caseeffectitem = ref('')\r\nconst diffStadata = ref([])\r\nconst totalScore: any = ref(0)//求份数总和\r\nconst myAverage: any = ref(0)\r\nconst dialecticalID = ref('') //当前选择的辨证ID\r\nconst rxTypeList: any[] = reactive([])\r\ncur.value = propcaseidVal.tabInx;//默认是变异还是其他\r\nconst compArr: any = ref([])\r\nwatch(()=>store.state.organizationSet,()=>{\r\n const temList = [\r\n {value:0, label:'饮片'}\r\n ]\r\n\r\n if(store.state.organizationSet.isMutilDrugType){\r\n temList.push({value:1, label:'颗粒'})\r\n }\r\n if(store.state.organizationSet.isAuthoritPackagingDrug){\r\n temList.push({value:2, label:'小包装饮片'})\r\n\r\n }\r\n rxTypeList.splice(0, rxTypeList.length, ...temList)\r\n}, { immediate:true, deep:true })\r\n//切换tab\r\nconst getTabsName = (idx: any) => {\r\n cur.value = idx;\r\n treeCur.value = 0;\r\n getDiffMeth();\r\n\r\n}\r\nconst gettreeId = (data:any, index:Number) => {\r\n treeCur.value = index;\r\n bzName.value = data.name\r\n getComp(data)\r\n \r\n}\r\nconst showCaseBack = () => {\r\n emit('emitshowCase')\r\n}\r\n//显示病案弹窗\r\nconst emitshowCaseNo = (row:any) => {\r\n if(!row.data.patnId){\r\n dialecticalID.value = row.data.id\r\n dialecticalVisible.value = true\r\n }else{\r\n caseeffectitem.value = row.data\r\n bingliShow.value = true\r\n }\r\n \r\n}\r\n//保存辨证后执行,需要在这里刷新页面\r\nconst dialecticalOnConfirm = (value:any) => {\r\n emit('emitshowCase')\r\n \r\n \r\n dialecticalVisible.value = false\r\n \r\n}\r\n//显示效率弹窗\r\nconst emitshowEffect = (row:any) => {\r\n caseeffectShow.value = true\r\n caseeffectitem.value = row\r\n\r\n}\r\n const tableList = reactive([\r\n { title: '分类'},\r\n { title:'疗效'},\r\n { title:'第一诊断要素'},\r\n { title:'第二诊断要素'},\r\n { title:'第三诊断要素'},\r\n { title:'辨证要点'},\r\n {title: '未匹配词'},\r\n { title:'伴随证'},\r\n { title:'方药'},\r\n { title:'组方'},\r\n ])\r\n //查询的对比表格接口\r\nconst getComp= (item:any) =>{\r\n getSynDiffComp({\r\n data:{\r\n stime: propcaseidVal.startval,\r\n etime: propcaseidVal.endval,\r\n tmplId: propcaseidVal.id,\r\n id: item.id, //辨证id\r\n name: item.name, //辨证名称\r\n type: cur.value, //变异类型。0:完全入径,1:变异入径,2:未入径\r\n mrType: mrType.value,\r\n _times: new Date().getTime()\r\n }\r\n }).then((data:any)=>{\r\n var arr: any = [];\r\n let drugStr = '';\r\n item.tmpl?.drug?.forEach((t: any) => {\r\n drugStr += t.drugName + t.qty + t.unit + ','\r\n })\r\n if(item.tmpl?.id) {\r\n console.log(item)\r\n arr.push(Object.assign({}, (item.tmpl ? item.tmpl : {}), {\r\n \"patnRemarks\": item.alias,\r\n \"mdtrtNo\": bzName.value,\r\n \"curEff\": '--',\r\n \"cmitSynd\": \"--\", \r\n \"els\":item.tmpl?.el,\r\n \"noMatchWord\":\"--\", \r\n 'id':item.id, \r\n 'patnId':'',\r\n 'drugStr': drugStr.slice(0, drugStr.length -1)\r\n }))\r\n } \r\n arr.push(...data)\r\n compArr.value = [...arr]\r\n var keyList: string[] = ['mdtrtNo', 'curEff', 'els', 'els', 'els', 'mainPoints', 'noMatchWord', 'cmitSynd', 'fjName', 'drugStr', 'id', 'patnId', 'isSeminar']\r\n arr.forEach((t: any,i:any) => {\r\n tableList.map((e: any,idx) => {\r\n if(idx === 0){\r\n e['column' + i] = t.patnRemarks ? t[keyList[idx]] + '(' + t.patnRemarks + ')' : t[keyList[idx]]\r\n e['id' + i] = t.id;\r\n e['patnId' + i] = t.patnId\r\n e['per' + i] = t.curEff\r\n e['effcollId' + i] = t.effcollId\r\n }else if(idx == 1){\r\n e['column' + i] = t[keyList[idx]] \r\n e['id' + i] = t.id;\r\n e['patnId' + i] = t.patnId\r\n e['per' + i] = t.curEff\r\n e['effcollId' + i] = t.effcollId\r\n \r\n }\r\n // else if (idx == 2) {\r\n\t\t\t\t// \t\t\te[\"column\" + i] = t.alias ? t[keyList[idx]] + '(' + t.alias + ')' : t[keyList[idx]];\r\n\t\t\t\t// \t\t} \r\n else if(idx == 2 || idx == 3 || idx == 4) {\r\n e['column' + i] = typeof(t.els[idx-2]) == 'string' ? t.els[idx-2] : t.els[idx-2] ? t.els[idx-2].content : ''\r\n //e['column' + i] = typeof t[keyList[idx]][idx - 2] == 'string' ? t[keyList[idx]][idx - 2] : t[keyList[idx]][idx - 2].content\r\n }else{\r\n if(keyList[idx] == 'drugStr') {\r\n let drugStr = '';\r\n t.drug.forEach((t: any) => {\r\n drugStr += t.drugName + t.qty + t.unit + ','\r\n })\r\n e['column' + i] = drugStr.slice(0, drugStr.length -1)\r\n }else {\r\n e['column' + i] = t[keyList[idx]]\r\n }\r\n \r\n }\r\n return e\r\n })\r\n })\r\n //recordLoading.value = false\r\n\r\n }).catch(()=>{\r\n\r\n })\r\n \r\n}\r\n //查询的侧边栏辨证接口\r\nconst getDiffMeth= () =>{\r\n recordLoading.value = true\r\n \r\n getSynDiffSta({\r\n data:{\r\n stime: propcaseidVal.startval,\r\n etime: propcaseidVal.endval,\r\n id:propcaseidVal.id, //模板id\r\n type:cur.value, //变异类型。0:完全入径,1:变异入径,2:未入径\r\n mrType: mrType.value,\r\n _times: new Date().getTime()\r\n }\r\n }).then((data:any)=>{\r\n diffStadata.value= data\r\n bzName.value = data[0].name\r\n getComp(data[0])\r\n //求份数总和\r\n totalScore.value = data.reduce((pre: any,cur: any)=>{\r\n return pre + cur.count\r\n },0)\r\n\r\n // //平均数\r\n // const avgEff = data.reduce((pre: any,cur: any)=>{\r\n // return pre+cur.avgEff\r\n // },0)\r\n // myAverage.value = Math.round(avgEff/data.length) \r\n recordLoading.value = false\r\n }).catch(()=>{\r\n\r\n })\r\n}\r\n getDiffMeth();\r\n watch(() => compArr.value, (val) => {\r\n compArr.value = val \r\n },{\r\n immediate:true\r\n })\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_header = _resolveComponent(\"el-header\")!\n const _component_el_main = _resolveComponent(\"el-main\")!\n const _component_el_container = _resolveComponent(\"el-container\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_el_container, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_header, null, {\n default: _withCtx(() => [\n _createVNode(breadnav, {\n onEmitshowNav: showCaseBack,\n firsttitle: \"模型分析\",\n secondtitle: _unref(propcaseidVal).dxName\n }, null, 8, [\"secondtitle\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabsArr, (item, idx) => {\n return _createElementVNode(\"span\", {\n class: _normalizeClass({'tabs-active': idx == cur.value}),\n key: idx,\n onClick: ($event: any) => (getTabsName(idx))\n }, _toDisplayString(item), 11, _hoisted_3)\n }), 64))\n ])\n ]),\n _: 1\n }),\n _withDirectives((_openBlock(), _createBlock(_component_el_main, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(propcaseidVal).alias ? _unref(propcaseidVal).dxName + '(' + _unref(propcaseidVal).alias + ')' : _unref(propcaseidVal).dxName), 1),\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", null, [\n _createTextVNode(\"病案:\"),\n _createElementVNode(\"i\", null, _toDisplayString(_unref(propcaseidVal).itemArr[cur.value].conut), 1),\n _createTextVNode(\"份\")\n ]),\n _createElementVNode(\"span\", null, [\n _createTextVNode(\"疗效:\"),\n _createElementVNode(\"i\", null, _toDisplayString(_unref(propcaseidVal).itemArr[cur.value].avgEff == -1 ? '--' : (_unref(propcaseidVal).itemArr[cur.value].avgEff + '%')), 1)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"ul\", _hoisted_10, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(diffStadata.value, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass({'tree-active':treeCur.value == idx , 'fanzhuan':parseInt(diffStadata.value.length/2) > idx}),\n key: idx,\n onClick: ($event: any) => (gettreeId(item, idx))\n }, [\n _createElementVNode(\"span\", {\n title: item.name\n }, [\n _createTextVNode(_toDisplayString(item.name.length < 6 ? item.name : item.name.substring(0,4) + '...') + \"(\" + _toDisplayString(item.count) + \"份/\" + _toDisplayString(item.avgEff > -1 ? item.avgEff + '%' : '--') + \")\", 1),\n _createElementVNode(\"i\", null, _toDisplayString(item.alias), 1)\n ], 8, _hoisted_12),\n (treeCur.value == idx)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: _unref(ImgUrlFix) + 'images/tree-active.png',\n alt: \"\"\n }, null, 8, _hoisted_13))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_11))\n }), 128))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(cassTable, {\n tableType: \"1\",\n tableData: tableList,\n arrlenth: compArr.value.length,\n onEmitshowEffect: emitshowEffect,\n onEmitshowCaseNo: emitshowCaseNo\n }, null, 8, [\"tableData\", \"arrlenth\"])\n ])\n ])\n ]),\n _: 1\n })), [\n [_directive_loading, recordLoading.value]\n ]),\n _createVNode(dialectical, {\n dialogVisible: dialecticalVisible.value,\n \"onUpdate:dialogVisible\": _cache[0] || (_cache[0] = ($event: any) => ((dialecticalVisible).value = $event)),\n onOnConfirm: dialecticalOnConfirm,\n dialecticalID: dialecticalID.value,\n rxTypeList: rxTypeList,\n readonly: false\n }, null, 8, [\"dialogVisible\", \"dialecticalID\", \"rxTypeList\"]),\n _createVNode(emrDetail, {\n modelValue: bingliShow.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((bingliShow).value = $event)),\n dataId: caseeffectitem.value.id,\n patnId: caseeffectitem.value.patnId\n }, null, 8, [\"modelValue\", \"dataId\", \"patnId\"]),\n _createVNode(caseeffect, {\n dialogVisible: caseeffectShow.value,\n \"onUpdate:dialogVisible\": _cache[2] || (_cache[2] = ($event: any) => ((caseeffectShow).value = $event)),\n caseeffectitem: caseeffectitem.value\n }, null, 8, [\"dialogVisible\", \"caseeffectitem\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./caserecord.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./caserecord.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./caserecord.vue?vue&type=style&index=0&id=5e65f708&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e65f708\"]])\n\nexport default __exports__","\r\nimport { reactive, ref, watch } from \"vue\";\r\nimport { Search } from \"@element-plus/icons-vue\";\r\n\r\nimport { ElLoading } from \"element-plus\";\r\nimport { ImgUrlFix } from \"@u/contant\";\r\nimport search from \"@c/public/search/search.vue\";\r\nimport navTitle from \"@c/public/navTitle/navTitle.vue\";\r\nimport dataStatistics from \"@c/public/dataStatistics/dataStatistics.vue\";\r\nimport templateProgress from \"../components/templateprogress.vue\";\r\nimport caserecord from \"../components/caserecord.vue\";\r\nimport pickerGroup from \"@c/public/pickerGroup/pickerGroup.vue\";\r\nimport pinyinSelect from '@c/public/pinyinSelect/pinyinSelect.vue'\r\nimport empty from '@c/public/empty/empty.vue'\r\n//接口\r\nimport { getAnalysis } from \"@r/api/xingling\";\r\nimport { pbFn } from \"@u/publicMethod\";\r\nconst options = [\r\n {\r\n value: \"\",\r\n label: \"全部病案\",\r\n },\r\n {\r\n value: \"0\",\r\n label: \"精选病案\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"存疑病案\",\r\n },\r\n];\r\nexport default {\r\n name: \"PersonalTemplate\",\r\n components: {\r\n dataStatistics,\r\n templateProgress,\r\n caserecord,\r\n pickerGroup,\r\n pinyinSelect,\r\n navTitle,\r\n search,\r\n empty,\r\n },\r\n\r\n setup() {\r\n const caseLoading = ref(false);\r\n const mrType = ref(\"\"); //病案类型\r\n const keyword = ref(\"\"); //关键词\r\n const caseid = ref(); //传值的\r\n const dataList: any[] = reactive([]); //接口返回\r\n const nameArr = [\"完全入径\", \"变异入径\", \"未入径\"];\r\n const bingliShow = ref(true);\r\n const codeFIrst = ref(\"\");\r\n\r\n const startval = ref(\r\n pbFn\r\n .changeTimeToUse(new Date().getTime() - 60 * 60 * 24 * 180 * 1000)\r\n .split(\" \")[0]\r\n );\r\n const endval = ref(\r\n pbFn.changeTimeToUse(new Date().getTime()).split(\" \")[0]\r\n );\r\n\r\n const showCase = ref(false); //显示点击某个咳嗽后\r\n const showCaseMethod = (item: any, idx: number) => {\r\n var itemArr = [\r\n {\r\n conut: item.sameCount,\r\n avgEff: item.sameAvgEff,\r\n },\r\n {\r\n conut: item.parCount,\r\n avgEff: item.parAvgEff,\r\n },\r\n {\r\n conut: item.diffCount,\r\n avgEff: item.diffAvgEff,\r\n },\r\n ];\r\n\r\n caseid.value = {\r\n id: item.id,\r\n dxName: item.dxName,\r\n alias: item.alias,\r\n version: item.version,\r\n tabInx: idx,\r\n itemArr: itemArr,\r\n tmplId: item.id,\r\n startval: startval.value,\r\n endval: endval.value,\r\n };\r\n showCase.value = true;\r\n };\r\n const emitshowCase = () => {\r\n showCase.value = false;\r\n };\r\n const searchMethod = () => {\r\n codeFIrst.value = '';//关键词搜索时,首字母全\r\n getSearch()\r\n }\r\n const getSearch = () => {\r\n //查询的接口\r\n const loading = ElLoading.service({\r\n lock: true,\r\n text: \"加载中...\",\r\n background: \"rgba(0, 0, 0, 0.4)\",\r\n });\r\n //caseLoading.value = true;\r\n dataList.splice(0, dataList.length);\r\n getAnalysis({\r\n data: {\r\n stime: startval.value,\r\n etime: endval.value,\r\n mrType: mrType.value, //数字(可空)\t病历类型。空:全部,0:精选病案,1:存疑病案\r\n keyword: keyword.value,\r\n firstLetter: codeFIrst.value,\r\n _times: new Date().getTime(),\r\n },\r\n })\r\n .then((data: any) => {\r\n dataList.length = 0;\r\n\r\n dataList.push(...data);\r\n //caseLoading.value = false;\r\n loading.close()\r\n })\r\n .catch(() => {\r\n //caseLoading.value = false;\r\n loading.close()\r\n });\r\n };\r\n getSearch();\r\n const selectFirstCode = (code: string | undefined) => {\r\n keyword.value = \"\";\r\n codeFIrst.value = code || \"\";\r\n getSearch();\r\n };\r\n\r\n return {\r\n mrType,\r\n options,\r\n keyword,\r\n Search,\r\n showCase,\r\n nameArr,\r\n dataList,\r\n caseid,\r\n bingliShow,\r\n ImgUrlFix,\r\n caseLoading,\r\n startval,\r\n endval,\r\n codeFIrst,\r\n //方法\r\n showCaseMethod,\r\n emitshowCase,\r\n getSearch,\r\n selectFirstCode,\r\n searchMethod,\r\n };\r\n },\r\n};\r\n","import { render } from \"./datanalysis.vue?vue&type=template&id=47859902&scoped=true&ts=true\"\nimport script from \"./datanalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./datanalysis.vue?vue&type=script&lang=ts\"\n\nimport \"./datanalysis.vue?vue&type=style&index=0&id=47859902&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-47859902\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { getPrecision, round, nice, quantityExponent } from '../util/number.js';\nexport function isValueNice(val) {\n var exp10 = Math.pow(10, quantityExponent(Math.abs(val)));\n var f = Math.abs(val / exp10);\n return f === 0 || f === 1 || f === 2 || f === 3 || f === 5;\n}\nexport function isIntervalOrLogScale(scale) {\n return scale.type === 'interval' || scale.type === 'log';\n}\n/**\n * @param extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param splitNumber splitNumber should be >= 1.\n */\n\nexport function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [round(Math.ceil(extent[0] / interval) * interval, precision), round(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\nexport function increaseInterval(interval) {\n var exp10 = Math.pow(10, quantityExponent(interval)); // Increase interval\n\n var f = interval / exp10;\n\n if (!f) {\n f = 1;\n } else if (f === 2) {\n f = 3;\n } else if (f === 3) {\n f = 5;\n } else {\n // f is 1 or 5\n f *= 2;\n }\n\n return round(f * exp10);\n}\n/**\n * @return interval precision\n */\n\nexport function getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return getPrecision(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nexport function fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\nexport function contain(val, extent) {\n return val >= extent[0] && val <= extent[1];\n}\nexport function normalize(val, extent) {\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n}\nexport function scale(val, extent) {\n return val * (extent[1] - extent[0]) + extent[0];\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { Text } from '../util/graphic.js';\nexport function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\n var textEl = new Text({\n style: {\n text: text,\n font: font,\n align: align,\n verticalAlign: verticalAlign,\n padding: padding,\n rich: rich,\n overflow: truncate ? 'truncate' : null,\n lineHeight: lineHeight\n }\n });\n return textEl.getBoundingRect();\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isArray } from 'zrender/lib/core/util.js';\n/* global Float32Array */\n\nvar supportFloat32Array = typeof Float32Array !== 'undefined';\nvar Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\nexport function createFloat32Array(arg) {\n if (isArray(arg)) {\n // Return self directly if don't support TypedArray.\n return supportFloat32Array ? new Float32Array(arg) : arg;\n } // Else is number\n\n\n return new Float32ArrayCtor(arg);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { each, defaults, keys } from 'zrender/lib/core/util.js';\nimport { parsePercent } from '../util/number.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { createFloat32Array } from '../util/vendor.js';\nvar STACK_PREFIX = '__ec_stack_';\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nexport function getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\nexport function prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));\n var store = data.getStore();\n\n for (var i = 0, cnt = store.count(); i < cnt; ++i) {\n var value = store.get(dimIdx, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = {};\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nexport function makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 0.5 / 1.\n seriesModel.get('barMinWidth') || (isInLargeMode(seriesModel) ? 0.5 : 1), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: null,\n gap: '20%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGapPercent = columnsOnAxis.categoryGap;\n\n if (categoryGapPercent == null) {\n var columnCount = keys(stacks).length; // More columns in one group\n // the spaces between group is smaller. Or the column will be too thin.\n\n categoryGapPercent = Math.max(35 - columnCount * 4, 15) + '%';\n }\n\n var categoryGap = parsePercent(categoryGapPercent, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n return result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n\nexport { retrieveColumnLayout };\nexport function layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n });\n} // TODO: Do not support stack in large mode yet.\n\nexport function createProgressiveLayout(seriesType) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis.dim));\n var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));\n var drawBackground = seriesModel.get('showBackground', true);\n var valueDim = data.mapDimension(valueAxis.dim);\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n var stacked = isDimensionStacked(data, valueDim) && !!data.getCalculationInfo('stackedOnSeries');\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\n var isLarge = isInLargeMode(seriesModel);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim); // Layout info.\n\n var columnWidth = data.getLayout('size');\n var columnOffset = data.getLayout('offset');\n return {\n progress: function (params, data) {\n var count = params.count;\n var largePoints = isLarge && createFloat32Array(count * 3);\n var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array(count * 3);\n var largeDataIndices = isLarge && createFloat32Array(count);\n var coordLayout = cartesian.master.getRect();\n var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height;\n var dataIndex;\n var store = data.getStore();\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex);\n var baseValue = store.get(baseDimIdx, dataIndex);\n var baseCoord = valueAxisStart;\n var startValue = void 0; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n startValue = +value - store.get(valueDimIdx, dataIndex);\n }\n\n var x = void 0;\n var y = void 0;\n var width = void 0;\n var height = void 0;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n\n if (stacked) {\n var startCoord = cartesian.dataToPoint([startValue, baseValue]);\n baseCoord = startCoord[0];\n }\n\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - baseCoord;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n }\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n\n if (stacked) {\n var startCoord = cartesian.dataToPoint([baseValue, startValue]);\n baseCoord = startCoord[1];\n }\n\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - baseCoord;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n }\n }\n\n if (!isLarge) {\n data.setItemLayout(dataIndex, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n } else {\n largePoints[idxOffset] = x;\n largePoints[idxOffset + 1] = y;\n largePoints[idxOffset + 2] = isValueAxisH ? width : height;\n\n if (largeBackgroundPoints) {\n largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x;\n largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y : coordLayout.y;\n largeBackgroundPoints[idxOffset + 2] = bgSize;\n }\n\n largeDataIndices[dataIndex] = dataIndex;\n }\n\n idxOffset += 3;\n }\n\n if (isLarge) {\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n largeBackgroundPoints: largeBackgroundPoints,\n valueAxisHorizontal: isValueAxisH\n });\n }\n }\n };\n }\n };\n}\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./datanalysis.vue?vue&type=style&index=0&id=6e33638e&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6e33638e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"datanalysis\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view)\n ]))\n}","\r\nimport { defineComponent } from 'vue';\r\n// 引入第三方工具\r\n\r\n// 引入第三方组件\r\n\r\n// 引入公共组件\r\n\r\n// 引入路由独有组件\r\n\r\n// 引入接口函数\r\n\r\n// 引入公共函数\r\n\r\n// 引入常量\r\n\r\n// 引入变量\r\n\r\nexport default defineComponent ({\r\n name: \"datanalysis\",\r\n components:{},\r\n props:{\r\n\r\n },\r\n setup(){},\r\n})\r\n","import { render } from \"./datanalysis.vue?vue&type=template&id=6e33638e&scoped=true&ts=true\"\nimport script from \"./datanalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./datanalysis.vue?vue&type=script&lang=ts\"\n\nimport \"./datanalysis.vue?vue&type=style&index=0&id=6e33638e&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6e33638e\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5178a2d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"navTitle\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", null, \">\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h4\", null, _toDisplayString(_ctx.navlabel), 1),\n (_ctx.secondNavLabel)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(_toDisplayString(_ctx.secondNavLabel), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { defineComponent, toRefs, ref, watch } from \"vue\";\r\n// 引入第三方工具\r\n\r\n// 引入第三方组件\r\nimport { Search } from \"@element-plus/icons-vue\";\r\n// 引入公共组件\r\n\r\n// 引入路由独有组件\r\n\r\n// 引入接口函数\r\n\r\n// 引入公共函数\r\n\r\n// 引入常量\r\n\r\n// 引入变量\r\n\r\nexport default defineComponent({\r\n name: \"navTitle\",\r\n components: {},\r\n emits: {},\r\n props: {\r\n label: {\r\n type: String,\r\n default: \"\",\r\n },\r\n secondLabel: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const {label, secondLabel} = toRefs(props)\r\n const navlabel = ref(label.value)\r\n const secondNavLabel = ref(secondLabel.value)\r\n return {navlabel, secondNavLabel};\r\n },\r\n});\r\n","import { render } from \"./navTitle.vue?vue&type=template&id=5178a2d8&scoped=true&ts=true\"\nimport script from \"./navTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./navTitle.vue?vue&type=script&lang=ts\"\n\nimport \"./navTitle.vue?vue&type=style&index=0&id=5178a2d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5178a2d8\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as axisPointerModelHelper from './modelHelper.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as throttleUtil from '../../util/throttle.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n */\n\nvar BaseAxisPointer =\n/** @class */\nfunction () {\n function BaseAxisPointer() {\n this._dragging = false;\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n */\n\n this.animationThreshold = 15;\n }\n /**\n * @implement\n */\n\n\n BaseAxisPointer.prototype.render = function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n };\n /**\n * @implement\n */\n\n\n BaseAxisPointer.prototype.remove = function (api) {\n this.clear(api);\n };\n /**\n * @implement\n */\n\n\n BaseAxisPointer.prototype.dispose = function (api) {\n this.clear(api);\n };\n /**\n * @protected\n */\n\n\n BaseAxisPointer.prototype.determineAnimation = function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n };\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n\n\n BaseAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n };\n /**\n * @protected\n */\n\n\n BaseAxisPointer.prototype.createPointerEl = function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n };\n /**\n * @protected\n */\n\n\n BaseAxisPointer.prototype.createLabelEl = function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Text(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n };\n /**\n * @protected\n */\n\n\n BaseAxisPointer.prototype.updatePointerEl = function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n };\n /**\n * @protected\n */\n\n\n BaseAxisPointer.prototype.updateLabelEl = function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n // TODOTODO\n // shape: elOption.label.shape,\n x: elOption.label.x,\n y: elOption.label.y\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n };\n /**\n * @private\n */\n\n\n BaseAxisPointer.prototype._renderHandle = function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n handle.setStyle(handleModel.getItemStyle(null, ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'])); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.scaleX = handleSize[0] / 2;\n handle.scaleY = handleSize[1] / 2;\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n };\n\n BaseAxisPointer.prototype._moveHandleToValue = function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n };\n\n BaseAxisPointer.prototype._onHandleDragMove = function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n };\n /**\n * Throttled method.\n */\n\n\n BaseAxisPointer.prototype._doDispatchAxisPointer = function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n };\n\n BaseAxisPointer.prototype._onHandleDragEnd = function () {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n };\n /**\n * @private\n */\n\n\n BaseAxisPointer.prototype.clear = function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n\n throttleUtil.clear(this, '_doDispatchAxisPointer');\n };\n /**\n * @protected\n */\n\n\n BaseAxisPointer.prototype.doClear = function () {// Implemented by sub-class if necessary.\n };\n\n BaseAxisPointer.prototype.buildLabel = function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n };\n\n return BaseAxisPointer;\n}();\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals_1 = true;\n zrUtil.each(newProps, function (item, key) {\n equals_1 = equals_1 && propsEqual(lastProps[key], item);\n });\n return !!equals_1;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n x: trans.x || 0,\n y: trans.y || 0,\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nexport default BaseAxisPointer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport BaseAxisPointer from './BaseAxisPointer.js';\nimport * as viewHelper from './viewHelper.js';\nimport * as cartesianAxisHelper from '../../coord/cartesian/cartesianAxisHelper.js';\n\nvar CartesianAxisPointer =\n/** @class */\nfunction (_super) {\n __extends(CartesianAxisPointer, _super);\n\n function CartesianAxisPointer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @override\n */\n\n\n CartesianAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption( // @ts-ignore\n value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n };\n /**\n * @override\n */\n\n\n CartesianAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n }); // @ts-ignore\n\n layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\n var pos = viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo);\n return {\n x: pos[0],\n y: pos[1],\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n };\n /**\n * @override\n */\n\n\n CartesianAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = [transform.x, transform.y];\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n x: currPosition[0],\n y: currPosition[1],\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n };\n\n return CartesianAxisPointer;\n}(BaseAxisPointer);\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nexport default CartesianAxisPointer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\n\nvar AxisPointerModel =\n/** @class */\nfunction (_super) {\n __extends(AxisPointerModel, _super);\n\n function AxisPointerModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = AxisPointerModel.type;\n return _this;\n }\n\n AxisPointerModel.type = 'axisPointer';\n AxisPointerModel.defaultOption = {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // zlevel: 0,\n z: 50,\n type: 'line',\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#B9BEC9',\n width: 1,\n type: 'dashed'\n },\n shadowStyle: {\n color: 'rgba(210,219,238,0.2)'\n },\n label: {\n show: true,\n formatter: null,\n precision: 'auto',\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n borderColor: null,\n borderWidth: 0,\n borderRadius: 3\n },\n handle: {\n show: false,\n // eslint-disable-next-line\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n };\n return AxisPointerModel;\n}(ComponentModel);\n\nexport default AxisPointerModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as globalListener from './globalListener.js';\nimport ComponentView from '../../view/Component.js';\n\nvar AxisPointerView =\n/** @class */\nfunction (_super) {\n __extends(AxisPointerView, _super);\n\n function AxisPointerView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = AxisPointerView.type;\n return _this;\n }\n\n AxisPointerView.prototype.render = function (globalAxisPointerModel, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n // AxisPointerView to be independent to Tooltip.\n\n globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n dispatchAction({\n type: 'updateAxisPointer',\n currTrigger: currTrigger,\n x: e && e.offsetX,\n y: e && e.offsetY\n });\n }\n });\n };\n\n AxisPointerView.prototype.remove = function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n };\n\n AxisPointerView.prototype.dispose = function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n };\n\n AxisPointerView.type = 'axisPointer';\n return AxisPointerView;\n}(ComponentView);\n\nexport default AxisPointerView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { makeInner } from '../../util/model.js';\nimport * as modelHelper from './modelHelper.js';\nimport findPointFromSeries from './findPointFromSeries.js';\nimport { each, curry, bind, extend } from 'zrender/lib/core/util.js';\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @return content of event obj for echarts.connect.\n */\n\nexport default function axisTrigger(payload, ecModel, api) {\n var currTrigger = payload.currTrigger;\n var point = [payload.x, payload.y];\n var finder = payload;\n var dispatchAction = payload.dispatchAction || bind(api.dispatchAction, api);\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n // See #6121. But we are not able to reproduce it yet.\n\n if (!coordSysAxesInfo) {\n return;\n }\n\n if (illegalPoint(point)) {\n // Used in the default behavior of `connection`: use the sample seriesIndex\n // and dataIndex. And also used in the tooltipView trigger.\n point = findPointFromSeries({\n seriesIndex: finder.seriesIndex,\n // Do not use dataIndexInside from other ec instance.\n // FIXME: auto detect it?\n dataIndex: finder.dataIndex\n }, ecModel).point;\n }\n\n var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n // and dataIndex.\n\n var inputAxesInfo = finder.axesInfo;\n var axesInfo = coordSysAxesInfo.axesInfo;\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n var outputPayload = {};\n var showValueMap = {};\n var dataByCoordSys = {\n list: [],\n map: {}\n };\n var updaters = {\n showPointer: curry(showPointer, showValueMap),\n showTooltip: curry(showTooltip, dataByCoordSys)\n }; // Process for triggered axes.\n\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n // If a point given, it must be contained by the coordinate system.\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n var axis = axisInfo.axis;\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n var val = inputAxisInfo && inputAxisInfo.value;\n\n if (val == null && !isIllegalPoint) {\n val = axis.pointToData(point);\n }\n\n val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);\n }\n });\n }); // Process for linked axes.\n\n var linkTriggers = {};\n each(axesInfo, function (tarAxisInfo, tarKey) {\n var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n if (linkGroup && !showValueMap[tarKey]) {\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n var val = srcValItem.value;\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n linkTriggers[tarAxisInfo.key] = val;\n }\n });\n }\n });\n each(linkTriggers, function (val, tarKey) {\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);\n });\n updateModelActually(showValueMap, axesInfo, outputPayload);\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n dispatchHighDownActually(axesInfo, dispatchAction, api);\n return outputPayload;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {\n var axis = axisInfo.axis;\n\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\n return;\n }\n\n if (!axisInfo.involveSeries) {\n updaters.showPointer(axisInfo, newValue);\n return;\n } // Heavy calculation. So put it after axis.containData checking.\n\n\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n var payloadBatch = payloadInfo.payloadBatch;\n var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n // By default use the first involved series data as a sample to connect.\n\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n extend(outputFinder, payloadBatch[0]);\n } // If no linkSource input, this process is for collecting link\n // target, where snap should not be accepted.\n\n\n if (!noSnap && axisInfo.snap) {\n if (axis.containData(snapToValue) && snapToValue != null) {\n newValue = snapToValue;\n }\n }\n\n updaters.showPointer(axisInfo, newValue, payloadBatch); // Tooltip should always be snapToValue, otherwise there will be\n // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n var axis = axisInfo.axis;\n var dim = axis.dim;\n var snapToValue = value;\n var payloadBatch = [];\n var minDist = Number.MAX_VALUE;\n var minDiff = -1;\n each(axisInfo.seriesModels, function (series, idx) {\n var dataDim = series.getData().mapDimensionsAll(dim);\n var seriesNestestValue;\n var dataIndices;\n\n if (series.getAxisTooltipData) {\n var result = series.getAxisTooltipData(dataDim, value, axis);\n dataIndices = result.dataIndices;\n seriesNestestValue = result.nestestValue;\n } else {\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n // when data length is not same.\n // false,\n axis.type === 'category' ? 0.5 : null);\n\n if (!dataIndices.length) {\n return;\n }\n\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n }\n\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n return;\n }\n\n var diff = value - seriesNestestValue;\n var dist = Math.abs(diff); // Consider category case\n\n if (dist <= minDist) {\n if (dist < minDist || diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n snapToValue = seriesNestestValue;\n payloadBatch.length = 0;\n }\n\n each(dataIndices, function (dataIndex) {\n payloadBatch.push({\n seriesIndex: series.seriesIndex,\n dataIndexInside: dataIndex,\n dataIndex: series.getData().getRawIndex(dataIndex)\n });\n });\n }\n });\n return {\n payloadBatch: payloadBatch,\n snapToValue: snapToValue\n };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n showValueMap[axisInfo.key] = {\n value: value,\n payloadBatch: payloadBatch\n };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n var payloadBatch = payloadInfo.payloadBatch;\n var axis = axisInfo.axis;\n var axisModel = axis.model;\n var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n // whose length will be used to judge whether dispatch action.\n\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n return;\n }\n\n var coordSysModel = axisInfo.coordSys.model;\n var coordSysKey = modelHelper.makeKey(coordSysModel);\n var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n if (!coordSysItem) {\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\n coordSysId: coordSysModel.id,\n coordSysIndex: coordSysModel.componentIndex,\n coordSysType: coordSysModel.type,\n coordSysMainType: coordSysModel.mainType,\n dataByAxis: []\n };\n dataByCoordSys.list.push(coordSysItem);\n }\n\n coordSysItem.dataByAxis.push({\n axisDim: axis.dim,\n axisIndex: axisModel.componentIndex,\n axisType: axisModel.type,\n axisId: axisModel.id,\n value: value,\n // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n // depends that all models have been updated. So it should not be performed\n // here. Considering axisPointerModel used here is volatile, which is hard\n // to be retrieve in TooltipView, we prepare parameters here.\n valueLabelOpt: {\n precision: axisPointerModel.get(['label', 'precision']),\n formatter: axisPointerModel.get(['label', 'formatter'])\n },\n seriesDataIndices: payloadBatch.slice()\n });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputPayload) {\n var outputAxesInfo = outputPayload.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n var valItem = showValueMap[key];\n\n if (valItem) {\n !axisInfo.useHandle && (option.status = 'show');\n option.value = valItem.value; // For label formatter param and highlight.\n\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n } // When always show (e.g., handle used), remain\n // original value and status.\n else {\n // If hide, value still need to be set, consider\n // click legend to toggle axis blank.\n !axisInfo.useHandle && (option.status = 'hide');\n } // If status is 'hide', should be no info in payload.\n\n\n option.status === 'show' && outputAxesInfo.push({\n axisDim: axisInfo.axis.dim,\n axisIndex: axisInfo.axis.model.componentIndex,\n value: option.value\n });\n });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n // Basic logic: If no showTip required, hideTip will be dispatched.\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\n dispatchAction({\n type: 'hideTip'\n });\n return;\n } // In most case only one axis (or event one series is used). It is\n // convinient to fetch payload.seriesIndex and payload.dataIndex\n // dirtectly. So put the first seriesIndex and dataIndex of the first\n // axis on the payload.\n\n\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n dispatchAction({\n type: 'showTip',\n escapeConnect: true,\n x: point[0],\n y: point[1],\n tooltipOption: payload.tooltipOption,\n position: payload.position,\n dataIndexInside: sampleItem.dataIndexInside,\n dataIndex: sampleItem.dataIndex,\n seriesIndex: sampleItem.seriesIndex,\n dataByCoordSys: dataByCoordSys.list\n });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n // FIXME\n // highlight status modification shoule be a stage of main process?\n // (Consider confilct (e.g., legend and axisPointer) and setOption)\n var zr = api.getZr();\n var highDownKey = 'axisPointerLastHighlights';\n var lastHighlights = inner(zr)[highDownKey] || {};\n var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n // Build hash map and remove duplicate incidentally.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n newHighlights[key] = batchItem;\n });\n }); // Diff.\n\n var toHighlight = [];\n var toDownplay = [];\n each(lastHighlights, function (batchItem, key) {\n !newHighlights[key] && toDownplay.push(batchItem);\n });\n each(newHighlights, function (batchItem, key) {\n !lastHighlights[key] && toHighlight.push(batchItem);\n });\n toDownplay.length && api.dispatchAction({\n type: 'downplay',\n escapeConnect: true,\n // Not blur others when highlight in axisPointer.\n notBlur: true,\n batch: toDownplay\n });\n toHighlight.length && api.dispatchAction({\n type: 'highlight',\n escapeConnect: true,\n // Not blur others when highlight in axisPointer.\n notBlur: true,\n batch: toHighlight\n });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n var inputAxisInfo = inputAxesInfo[i];\n\n if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n return inputAxisInfo;\n }\n }\n}\n\nfunction makeMapperParam(axisInfo) {\n var axisModel = axisInfo.axis.model;\n var item = {};\n var dim = item.axisDim = axisInfo.axis.dim;\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\n return item;\n}\n\nfunction illegalPoint(point) {\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport AxisView from '../axis/AxisView.js';\nimport CartesianAxisPointer from './CartesianAxisPointer.js';\nimport AxisPointerModel from './AxisPointerModel.js';\nimport AxisPointerView from './AxisPointerView.js';\nimport { isArray } from 'zrender/lib/core/util.js';\nimport { collect } from './modelHelper.js';\nimport axisTrigger from './axisTrigger.js';\nexport function install(registers) {\n // CartesianAxisPointer is not supposed to be required here. But consider\n // echarts.simple.js and online build tooltip, which only require gridSimple,\n // CartesianAxisPointer should be able to required somewhere.\n AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\n registers.registerComponentModel(AxisPointerModel);\n registers.registerComponentView(AxisPointerView);\n registers.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n }); // This process should proformed after coordinate systems created\n // and series data processed. So put it on statistic processing stage.\n\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = collect(ecModel, api);\n }); // Broadcast to all views.\n\n registers.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n }, axisTrigger);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { VISUAL_DIMENSIONS } from '../../util/types.js';\nimport SeriesDimensionDefine from '../SeriesDimensionDefine.js';\nimport { createHashMap, defaults, each, extend, isObject, isString } from 'zrender/lib/core/util.js';\nimport { createSourceFromSeriesDataOption, isSourceInstance } from '../Source.js';\nimport { CtorInt32Array } from '../DataStore.js';\nimport { normalizeToArray } from '../../util/model.js';\nimport { BE_ORDINAL, guessOrdinal } from './sourceHelper.js';\nimport { createDimNameMap, ensureSourceDimNameMap, SeriesDataSchema, shouldOmitUnusedDimensions } from './SeriesDataSchema.js';\n/**\n * For outside usage compat (like echarts-gl are using it).\n */\n\nexport function createDimensions(source, opt) {\n return prepareSeriesDataSchema(source, opt).dimensions;\n}\n/**\n * This method builds the relationship between:\n * + \"what the coord sys or series requires (see `coordDimensions`)\",\n * + \"what the user defines (in `encode` and `dimensions`, see `opt.dimensionsDefine` and `opt.encodeDefine`)\"\n * + \"what the data source provids (see `source`)\".\n *\n * Some guess strategy will be adapted if user does not define something.\n * If no 'value' dimension specified, the first no-named dimension will be\n * named as 'value'.\n *\n * @return The results are always sorted by `storeDimIndex` asc.\n */\n\nexport default function prepareSeriesDataSchema( // TODO: TYPE completeDimensions type\nsource, opt) {\n if (!isSourceInstance(source)) {\n source = createSourceFromSeriesDataOption(source);\n }\n\n opt = opt || {};\n var sysDims = opt.coordDimensions || [];\n var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || [];\n var coordDimNameMap = createHashMap();\n var resultList = [];\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount); // Try to ignore unsed dimensions if sharing a high dimension datastore\n // 30 is an experience value.\n\n var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);\n var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine;\n var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef);\n var encodeDef = opt.encodeDefine;\n\n if (!encodeDef && opt.encodeDefaulter) {\n encodeDef = opt.encodeDefaulter(source, dimCount);\n }\n\n var encodeDefMap = createHashMap(encodeDef);\n var indicesMap = new CtorInt32Array(dimCount);\n\n for (var i = 0; i < indicesMap.length; i++) {\n indicesMap[i] = -1;\n }\n\n function getResultItem(dimIdx) {\n var idx = indicesMap[dimIdx];\n\n if (idx < 0) {\n var dimDefItemRaw = dimsDef[dimIdx];\n var dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : {\n name: dimDefItemRaw\n };\n var resultItem = new SeriesDimensionDefine();\n var userDimName = dimDefItem.name;\n\n if (userDimName != null && dataDimNameMap.get(userDimName) != null) {\n // Only if `series.dimensions` is defined in option\n // displayName, will be set, and dimension will be diplayed vertically in\n // tooltip by default.\n resultItem.name = resultItem.displayName = userDimName;\n }\n\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n var newIdx = resultList.length;\n indicesMap[dimIdx] = newIdx;\n resultItem.storeDimIndex = dimIdx;\n resultList.push(resultItem);\n return resultItem;\n }\n\n return resultList[idx];\n }\n\n if (!omitUnusedDimensions) {\n for (var i = 0; i < dimCount; i++) {\n getResultItem(i);\n }\n } // Set `coordDim` and `coordDimIndex` by `encodeDefMap` and normalize `encodeDefMap`.\n\n\n encodeDefMap.each(function (dataDimsRaw, coordDim) {\n var dataDims = normalizeToArray(dataDimsRaw).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n // this case.\n\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n encodeDefMap.set(coordDim, false);\n return;\n }\n\n var validDataDims = encodeDefMap.set(coordDim, []);\n each(dataDims, function (resultDimIdxOrName, idx) {\n // The input resultDimIdx can be dim name or index.\n var resultDimIdx = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName;\n\n if (resultDimIdx != null && resultDimIdx < dimCount) {\n validDataDims[idx] = resultDimIdx;\n applyDim(getResultItem(resultDimIdx), coordDim, idx);\n }\n });\n }); // Apply templetes and default order from `sysDims`.\n\n var availDimIdx = 0;\n each(sysDims, function (sysDimItemRaw) {\n var coordDim;\n var sysDimItemDimsDef;\n var sysDimItemOtherDims;\n var sysDimItem;\n\n if (isString(sysDimItemRaw)) {\n coordDim = sysDimItemRaw;\n sysDimItem = {};\n } else {\n sysDimItem = sysDimItemRaw;\n coordDim = sysDimItem.name;\n var ordinalMeta = sysDimItem.ordinalMeta;\n sysDimItem.ordinalMeta = null;\n sysDimItem = extend({}, sysDimItem);\n sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemOtherDims = sysDimItem.otherDims;\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n }\n\n var dataDims = encodeDefMap.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n if (dataDims === false) {\n return;\n }\n\n dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n if (!dataDims.length) {\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) {\n availDimIdx++;\n }\n\n availDimIdx < dimCount && dataDims.push(availDimIdx++);\n }\n } // Apply templates.\n\n\n each(dataDims, function (resultDimIdx, coordDimIndex) {\n var resultItem = getResultItem(resultDimIdx); // Coordinate system has a higher priority on dim type than source.\n\n if (isUsingSourceDimensionsDef && sysDimItem.type != null) {\n resultItem.type = sysDimItem.type;\n }\n\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n if (resultItem.name == null && sysDimItemDimsDef) {\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n name: sysDimItemDimsDefItem\n });\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n });\n });\n\n function applyDim(resultItem, coordDim, coordDimIndex) {\n if (VISUAL_DIMENSIONS.get(coordDim) != null) {\n resultItem.otherDims[coordDim] = coordDimIndex;\n } else {\n resultItem.coordDim = coordDim;\n resultItem.coordDimIndex = coordDimIndex;\n coordDimNameMap.set(coordDim, true);\n }\n } // Make sure the first extra dim is 'value'.\n\n\n var generateCoord = opt.generateCoord;\n var generateCoordCount = opt.generateCoordCount;\n var fromZero = generateCoordCount != null;\n generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n var extra = generateCoord || 'value';\n\n function ifNoNameFillWithCoordName(resultItem) {\n if (resultItem.name == null) {\n // Duplication will be removed in the next step.\n resultItem.name = resultItem.coordDim;\n }\n } // Set dim `name` and other `coordDim` and other props.\n\n\n if (!omitUnusedDimensions) {\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n var resultItem = getResultItem(resultDimIdx);\n var coordDim = resultItem.coordDim;\n\n if (coordDim == null) {\n // TODO no need to generate coordDim for isExtraCoord?\n resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero);\n resultItem.coordDimIndex = 0; // Series specified generateCoord is using out.\n\n if (!generateCoord || generateCoordCount <= 0) {\n resultItem.isExtraCoord = true;\n }\n\n generateCoordCount--;\n }\n\n ifNoNameFillWithCoordName(resultItem);\n\n if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must // Consider the case:\n // {\n // dataset: {source: [\n // ['2001', 123],\n // ['2002', 456],\n // ...\n // ['The others', 987],\n // ]},\n // series: {type: 'pie'}\n // }\n // The first colum should better be treated as a \"ordinal\" although it\n // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n resultItem.type = 'ordinal';\n }\n }\n } else {\n each(resultList, function (resultItem) {\n // PENDING: guessOrdinal or let user specify type: 'ordinal' manually?\n ifNoNameFillWithCoordName(resultItem);\n }); // Sort dimensions: there are some rule that use the last dim as label,\n // and for some latter travel process easier.\n\n resultList.sort(function (item0, item1) {\n return item0.storeDimIndex - item1.storeDimIndex;\n });\n }\n\n removeDuplication(resultList);\n return new SeriesDataSchema({\n source: source,\n dimensions: resultList,\n fullDimensionCount: dimCount,\n dimensionOmitted: omitUnusedDimensions\n });\n}\n\nfunction removeDuplication(result) {\n var duplicationMap = createHashMap();\n\n for (var i = 0; i < result.length; i++) {\n var dim = result[i];\n var dimOriginalName = dim.name;\n var count = duplicationMap.get(dimOriginalName) || 0;\n\n if (count > 0) {\n // Starts from 0.\n dim.name = dimOriginalName + (count - 1);\n }\n\n count++;\n duplicationMap.set(dimOriginalName, count);\n }\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in data store?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n // Note that the result dimCount should not small than columns count\n // of data, otherwise `dataDimNameMap` checking will be incorrect.\n var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n each(sysDims, function (sysDimItem) {\n var sysDimItemDimsDef;\n\n if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\n dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\n }\n });\n return dimCount;\n}\n\nfunction genCoordDimName(name, map, fromZero) {\n var mapData = map.data;\n\n if (fromZero || mapData.hasOwnProperty(name)) {\n var i = 0;\n\n while (mapData.hasOwnProperty(name + i)) {\n i++;\n }\n\n name += i;\n }\n\n map.set(name, true);\n return name;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\n return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1;\n}\n\nfunction defaultKeyGetter(item) {\n return item;\n}\n\nvar DataDiffer =\n/** @class */\nfunction () {\n /**\n * @param context Can be visited by this.context in callback.\n */\n function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, // By default: 'oneToOne'.\n diffMode) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter; // Visible in callback via `this.context`;\n\n this.context = context;\n this._diffModeMultiple = diffMode === 'multiple';\n }\n /**\n * Callback function when add a data\n */\n\n\n DataDiffer.prototype.add = function (func) {\n this._add = func;\n return this;\n };\n /**\n * Callback function when update a data\n */\n\n\n DataDiffer.prototype.update = function (func) {\n this._update = func;\n return this;\n };\n /**\n * Callback function when update a data and only work in `cbMode: 'byKey'`.\n */\n\n\n DataDiffer.prototype.updateManyToOne = function (func) {\n this._updateManyToOne = func;\n return this;\n };\n /**\n * Callback function when update a data and only work in `cbMode: 'byKey'`.\n */\n\n\n DataDiffer.prototype.updateOneToMany = function (func) {\n this._updateOneToMany = func;\n return this;\n };\n /**\n * Callback function when update a data and only work in `cbMode: 'byKey'`.\n */\n\n\n DataDiffer.prototype.updateManyToMany = function (func) {\n this._updateManyToMany = func;\n return this;\n };\n /**\n * Callback function when remove a data\n */\n\n\n DataDiffer.prototype.remove = function (func) {\n this._remove = func;\n return this;\n };\n\n DataDiffer.prototype.execute = function () {\n this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']();\n };\n\n DataDiffer.prototype._executeOneToOne = function () {\n var oldArr = this._old;\n var newArr = this._new;\n var newDataIndexMap = {};\n var oldDataKeyArr = new Array(oldArr.length);\n var newDataKeyArr = new Array(newArr.length);\n\n this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter');\n\n this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\n\n for (var i = 0; i < oldArr.length; i++) {\n var oldKey = oldDataKeyArr[i];\n var newIdxMapVal = newDataIndexMap[oldKey];\n var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); // idx can never be empty array here. see 'set null' logic below.\n\n if (newIdxMapValLen > 1) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var newIdx = newIdxMapVal.shift();\n\n if (newIdxMapVal.length === 1) {\n newDataIndexMap[oldKey] = newIdxMapVal[0];\n }\n\n this._update && this._update(newIdx, i);\n } else if (newIdxMapValLen === 1) {\n newDataIndexMap[oldKey] = null;\n this._update && this._update(newIdxMapVal, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n this._performRestAdd(newDataKeyArr, newDataIndexMap);\n };\n /**\n * For example, consider the case:\n * oldData: [o0, o1, o2, o3, o4, o5, o6, o7],\n * newData: [n0, n1, n2, n3, n4, n5, n6, n7, n8],\n * Where:\n * o0, o1, n0 has key 'a' (many to one)\n * o5, n4, n5, n6 has key 'b' (one to many)\n * o2, n1 has key 'c' (one to one)\n * n2, n3 has key 'd' (add)\n * o3, o4 has key 'e' (remove)\n * o6, o7, n7, n8 has key 'f' (many to many, treated as add and remove)\n * Then:\n * (The order of the following directives are not ensured.)\n * this._updateManyToOne(n0, [o0, o1]);\n * this._updateOneToMany([n4, n5, n6], o5);\n * this._update(n1, o2);\n * this._remove(o3);\n * this._remove(o4);\n * this._remove(o6);\n * this._remove(o7);\n * this._add(n2);\n * this._add(n3);\n * this._add(n7);\n * this._add(n8);\n */\n\n\n DataDiffer.prototype._executeMultiple = function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n\n this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\n\n this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\n\n for (var i = 0; i < oldDataKeyArr.length; i++) {\n var oldKey = oldDataKeyArr[i];\n var oldIdxMapVal = oldDataIndexMap[oldKey];\n var newIdxMapVal = newDataIndexMap[oldKey];\n var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);\n var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\n\n if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {\n this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);\n newDataIndexMap[oldKey] = null;\n } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {\n this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);\n newDataIndexMap[oldKey] = null;\n } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {\n this._update && this._update(newIdxMapVal, oldIdxMapVal);\n newDataIndexMap[oldKey] = null;\n } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) {\n this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal);\n newDataIndexMap[oldKey] = null;\n } else if (oldIdxMapValLen > 1) {\n for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {\n this._remove && this._remove(oldIdxMapVal[i_1]);\n }\n } else {\n this._remove && this._remove(oldIdxMapVal);\n }\n }\n\n this._performRestAdd(newDataKeyArr, newDataIndexMap);\n };\n\n DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) {\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var newKey = newDataKeyArr[i];\n var newIdxMapVal = newDataIndexMap[newKey];\n var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);\n\n if (idxMapValLen > 1) {\n for (var j = 0; j < idxMapValLen; j++) {\n this._add && this._add(newIdxMapVal[j]);\n }\n } else if (idxMapValLen === 1) {\n this._add && this._add(newIdxMapVal);\n } // Support both `newDataKeyArr` are duplication removed or not removed.\n\n\n newDataIndexMap[newKey] = null;\n }\n };\n\n DataDiffer.prototype._initIndexMap = function (arr, // Can be null.\n map, // In 'byKey', the output `keyArr` is duplication removed.\n // In 'byIndex', the output `keyArr` is not duplication removed and\n // its indices are accurately corresponding to `arr`.\n keyArr, keyGetterName) {\n var cbModeMultiple = this._diffModeMultiple;\n\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + this[keyGetterName](arr[i], i);\n\n if (!cbModeMultiple) {\n keyArr[i] = key;\n }\n\n if (!map) {\n continue;\n }\n\n var idxMapVal = map[key];\n var idxMapValLen = dataIndexMapValueLength(idxMapVal);\n\n if (idxMapValLen === 0) {\n // Simple optimize: in most cases, one index has one key,\n // do not need array.\n map[key] = i;\n\n if (cbModeMultiple) {\n keyArr.push(key);\n }\n } else if (idxMapValLen === 1) {\n map[key] = [idxMapVal, i];\n } else {\n idxMapVal.push(i);\n }\n }\n };\n\n return DataDiffer;\n}();\n\nexport default DataDiffer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Int32Array */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Model from '../model/Model.js';\nimport DataDiffer from './DataDiffer.js';\nimport { DefaultDataProvider } from './helper/dataProvider.js';\nimport { summarizeDimensions } from './helper/dimensionHelper.js';\nimport SeriesDimensionDefine from './SeriesDimensionDefine.js';\nimport { SOURCE_FORMAT_TYPED_ARRAY, SOURCE_FORMAT_ORIGINAL } from '../util/types.js';\nimport { convertOptionIdName, isDataItemOption } from '../util/model.js';\nimport { setCommonECData } from '../util/innerStore.js';\nimport { isSourceInstance } from './Source.js';\nimport DataStore from './DataStore.js';\nimport { isSeriesDataSchema } from './helper/SeriesDataSchema.js';\nvar isObject = zrUtil.isObject;\nvar map = zrUtil.map;\nvar CtorInt32Array = typeof Int32Array === 'undefined' ? Array : Int32Array; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar INDEX_NOT_FOUND = -1; // type SeriesDimensionIndex = DimensionIndex;\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_dimSummary', 'userOutput', '_rawData', '_dimValueGetter', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'];\nvar CLONE_PROPERTIES = ['_approximateExtent']; // -----------------------------\n// Internal method declarations:\n// -----------------------------\n\nvar prepareInvertedIndex;\nvar getId;\nvar getIdNameFromStore;\nvar normalizeDimensions;\nvar transferProperties;\nvar cloneListForMapAndSample;\nvar makeIdFromName;\n\nvar SeriesData =\n/** @class */\nfunction () {\n /**\n * @param dimensionsInput.dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n */\n function SeriesData(dimensionsInput, hostModel) {\n this.type = 'list';\n this._dimOmitted = false;\n this._nameList = [];\n this._idList = []; // Models of data option is stored sparse for optimizing memory cost\n // Never used yet (not used yet).\n // private _optionModels: Model[] = [];\n // Global visual properties after visual coding\n\n this._visual = {}; // Globel layout properties.\n\n this._layout = {}; // Item visual properties after visual coding\n\n this._itemVisuals = []; // Item layout properties after layout\n\n this._itemLayouts = []; // Graphic elemnents\n\n this._graphicEls = []; // key: dim, value: extent\n\n this._approximateExtent = {};\n this._calculationInfo = {}; // Having detected that there is data item is non primitive type\n // (in type `OptionDataItemObject`).\n // Like `data: [ { value: xx, itemStyle: {...} }, ...]`\n // At present it only happen in `SOURCE_FORMAT_ORIGINAL`.\n\n this.hasItemOption = false; // Methods that create a new list based on this list should be listed here.\n // Notice that those method should `RETURN` the new list.\n\n this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map']; // Methods that change indices of this list should be listed here.\n\n this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\n this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'];\n var dimensions;\n var assignStoreDimIdx = false;\n\n if (isSeriesDataSchema(dimensionsInput)) {\n dimensions = dimensionsInput.dimensions;\n this._dimOmitted = dimensionsInput.isDimensionOmitted();\n this._schema = dimensionsInput;\n } else {\n assignStoreDimIdx = true;\n dimensions = dimensionsInput;\n }\n\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n var needsHasOwn = false;\n var emptyObj = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimInfoInput = dimensions[i];\n var dimensionInfo = zrUtil.isString(dimInfoInput) ? new SeriesDimensionDefine({\n name: dimInfoInput\n }) : !(dimInfoInput instanceof SeriesDimensionDefine) ? new SeriesDimensionDefine(dimInfoInput) : dimInfoInput;\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n\n if (emptyObj[dimensionName] != null) {\n needsHasOwn = true;\n }\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n\n if (otherDims.itemName === 0) {\n this._nameDimIdx = i;\n }\n\n if (otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n zrUtil.assert(assignStoreDimIdx || dimensionInfo.storeDimIndex >= 0);\n }\n\n if (assignStoreDimIdx) {\n dimensionInfo.storeDimIndex = i;\n }\n }\n\n this.dimensions = dimensionNames;\n this._dimInfos = dimensionInfos;\n\n this._initGetDimensionInfo(needsHasOwn);\n\n this.hostModel = hostModel;\n this._invertedIndicesMap = invertedIndicesMap;\n\n if (this._dimOmitted) {\n var dimIdxToName_1 = this._dimIdxToName = zrUtil.createHashMap();\n zrUtil.each(dimensionNames, function (dimName) {\n dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName);\n });\n }\n }\n /**\n *\n * Get concrete dimension name by dimension name or dimension index.\n * If input a dimension name, do not validate whether the dimension name exits.\n *\n * @caution\n * @param dim Must make sure the dimension is `SeriesDimensionLoose`.\n * Because only those dimensions will have auto-generated dimension names if not\n * have a user-specified name, and other dimensions will get a return of null/undefined.\n *\n * @notice Becuause of this reason, should better use `getDimensionIndex` instead, for examples:\n * ```js\n * const val = data.getStore().get(data.getDimensionIndex(dim), dataIdx);\n * ```\n *\n * @return Concrete dim name.\n */\n\n\n SeriesData.prototype.getDimension = function (dim) {\n var dimIdx = this._recognizeDimIndex(dim);\n\n if (dimIdx == null) {\n return dim;\n }\n\n dimIdx = dim;\n\n if (!this._dimOmitted) {\n return this.dimensions[dimIdx];\n } // Retrieve from series dimension definition becuase it probably contains\n // generated dimension name (like 'x', 'y').\n\n\n var dimName = this._dimIdxToName.get(dimIdx);\n\n if (dimName != null) {\n return dimName;\n }\n\n var sourceDimDef = this._schema.getSourceDimension(dimIdx);\n\n if (sourceDimDef) {\n return sourceDimDef.name;\n }\n };\n /**\n * Get dimension index in data store. Return -1 if not found.\n * Can be used to index value from getRawValue.\n */\n\n\n SeriesData.prototype.getDimensionIndex = function (dim) {\n var dimIdx = this._recognizeDimIndex(dim);\n\n if (dimIdx != null) {\n return dimIdx;\n }\n\n if (dim == null) {\n return -1;\n }\n\n var dimInfo = this._getDimInfo(dim);\n\n return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1;\n };\n /**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `series.dimensions` or `dataset.dimensions`,\n * it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * @return recogonized `DimensionIndex`. Otherwise return null/undefined (means that dim is `DimensionName`).\n */\n\n\n SeriesData.prototype._recognizeDimIndex = function (dim) {\n if (zrUtil.isNumber(dim) // If being a number-like string but not being defined as a dimension name.\n || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) {\n return +dim;\n }\n };\n\n SeriesData.prototype._getStoreDimIndex = function (dim) {\n var dimIdx = this.getDimensionIndex(dim);\n\n if (process.env.NODE_ENV !== 'production') {\n if (dimIdx == null) {\n throw new Error('Unkown dimension ' + dim);\n }\n }\n\n return dimIdx;\n };\n /**\n * Get type and calculation info of particular dimension\n * @param dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\n SeriesData.prototype.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._getDimInfo(this.getDimension(dim));\n };\n\n SeriesData.prototype._initGetDimensionInfo = function (needsHasOwn) {\n var dimensionInfos = this._dimInfos;\n this._getDimInfo = needsHasOwn ? function (dimName) {\n return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : undefined;\n } : function (dimName) {\n return dimensionInfos[dimName];\n };\n };\n /**\n * concrete dimension name list on coord.\n */\n\n\n SeriesData.prototype.getDimensionsOnCoord = function () {\n return this._dimSummary.dataDimsOnCoord.slice();\n };\n\n SeriesData.prototype.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return dims ? dims[idx] : null;\n };\n\n SeriesData.prototype.mapDimensionsAll = function (coordDim) {\n var dimensionsSummary = this._dimSummary;\n var dims = dimensionsSummary.encode[coordDim];\n return (dims || []).slice();\n };\n\n SeriesData.prototype.getStore = function () {\n return this._store;\n };\n /**\n * Initialize from data\n * @param data source or data or data store.\n * @param nameList The name of a datum is used on data diff and\n * default label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n */\n\n\n SeriesData.prototype.initData = function (data, nameList, dimValueGetter) {\n var _this = this;\n\n var store;\n\n if (data instanceof DataStore) {\n store = data;\n }\n\n if (!store) {\n var dimensions = this.dimensions;\n var provider = isSourceInstance(data) || zrUtil.isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data;\n store = new DataStore();\n var dimensionInfos = map(dimensions, function (dimName) {\n return {\n type: _this._dimInfos[dimName].type,\n property: dimName\n };\n });\n store.initData(provider, dimensionInfos, dimValueGetter);\n }\n\n this._store = store; // Reset\n\n this._nameList = (nameList || []).slice();\n this._idList = [];\n this._nameRepeatCount = {};\n\n this._doInit(0, store.count()); // Cache summary info for fast visit. See \"dimensionHelper\".\n // Needs to be initialized after store is prepared.\n\n\n this._dimSummary = summarizeDimensions(this, this._schema);\n this.userOutput = this._dimSummary.userOutput;\n };\n /**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\n SeriesData.prototype.appendData = function (data) {\n var range = this._store.appendData(data);\n\n this._doInit(range[0], range[1]);\n };\n /**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to store.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n */\n\n\n SeriesData.prototype.appendValues = function (values, names) {\n var _a = this._store.appendValues(values, names.length),\n start = _a.start,\n end = _a.end;\n\n var shouldMakeIdFromName = this._shouldMakeIdFromName();\n\n this._updateOrdinalMeta();\n\n if (names) {\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n this._nameList[idx] = names[sourceIdx];\n\n if (shouldMakeIdFromName) {\n makeIdFromName(this, idx);\n }\n }\n }\n };\n\n SeriesData.prototype._updateOrdinalMeta = function () {\n var store = this._store;\n var dimensions = this.dimensions;\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimInfo = this._dimInfos[dimensions[i]];\n\n if (dimInfo.ordinalMeta) {\n store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta);\n }\n }\n };\n\n SeriesData.prototype._shouldMakeIdFromName = function () {\n var provider = this._store.getProvider();\n\n return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage;\n };\n\n SeriesData.prototype._doInit = function (start, end) {\n if (start >= end) {\n return;\n }\n\n var store = this._store;\n var provider = store.getProvider();\n\n this._updateOrdinalMeta();\n\n var nameList = this._nameList;\n var idList = this._idList;\n var sourceFormat = provider.getSource().sourceFormat;\n var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL; // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n // If dataItem is {name: ...} or {id: ...}, it has highest priority.\n // This kind of ids and names are always stored `_nameList` and `_idList`.\n\n if (isFormatOriginal && !provider.pure) {\n var sharedDataItem = [];\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n var dataItem = provider.getItem(idx, sharedDataItem);\n\n if (!this.hasItemOption && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n if (dataItem) {\n var itemName = dataItem.name;\n\n if (nameList[idx] == null && itemName != null) {\n nameList[idx] = convertOptionIdName(itemName, null);\n }\n\n var itemId = dataItem.id;\n\n if (idList[idx] == null && itemId != null) {\n idList[idx] = convertOptionIdName(itemId, null);\n }\n }\n }\n }\n\n if (this._shouldMakeIdFromName()) {\n for (var idx = start; idx < end; idx++) {\n makeIdFromName(this, idx);\n }\n }\n\n prepareInvertedIndex(this);\n };\n /**\n * PENDING: In fact currently this function is only used to short-circuit\n * the calling of `scale.unionExtentFromData` when data have been filtered by modules\n * like \"dataZoom\". `scale.unionExtentFromData` is used to calculate data extent for series on\n * an axis, but if a \"axis related data filter module\" is used, the extent of the axis have\n * been fixed and no need to calling `scale.unionExtentFromData` actually.\n * But if we add \"custom data filter\" in future, which is not \"axis related\", this method may\n * be still needed.\n *\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\n SeriesData.prototype.getApproximateExtent = function (dim) {\n return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim));\n };\n /**\n * Calculate extent on a filtered data might be time consuming.\n * Approximate extent is only used for: calculte extent of filtered data outside.\n */\n\n\n SeriesData.prototype.setApproximateExtent = function (extent, dim) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n };\n\n SeriesData.prototype.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n };\n\n SeriesData.prototype.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n };\n /**\n * @return Never be null/undefined. `number` will be converted to string. Becuase:\n * In most cases, name is used in display, where returning a string is more convenient.\n * In other cases, name is used in query (see `indexOfName`), where we can keep the\n * rule that name `2` equals to name `'2'`.\n */\n\n\n SeriesData.prototype.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n var name = this._nameList[rawIndex];\n\n if (name == null && this._nameDimIdx != null) {\n name = getIdNameFromStore(this, this._nameDimIdx, rawIndex);\n }\n\n if (name == null) {\n name = '';\n }\n\n return name;\n };\n\n SeriesData.prototype._getCategory = function (dimIdx, idx) {\n var ordinal = this._store.get(dimIdx, idx);\n\n var ordinalMeta = this._store.getOrdinalMeta(dimIdx);\n\n if (ordinalMeta) {\n return ordinalMeta.categories[ordinal];\n }\n\n return ordinal;\n };\n /**\n * @return Never null/undefined. `number` will be converted to string. Becuase:\n * In all cases having encountered at present, id is used in making diff comparison, which\n * are usually based on hash map. We can keep the rule that the internal id are always string\n * (treat `2` is the same as `'2'`) to make the related logic simple.\n */\n\n\n SeriesData.prototype.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n };\n\n SeriesData.prototype.count = function () {\n return this._store.count();\n };\n /**\n * Get value. Return NaN if idx is out of range.\n *\n * @notice Should better to use `data.getStore().get(dimIndex, dataIdx)` instead.\n */\n\n\n SeriesData.prototype.get = function (dim, idx) {\n var store = this._store;\n var dimInfo = this._dimInfos[dim];\n\n if (dimInfo) {\n return store.get(dimInfo.storeDimIndex, idx);\n }\n };\n /**\n * @notice Should better to use `data.getStore().getByRawIndex(dimIndex, dataIdx)` instead.\n */\n\n\n SeriesData.prototype.getByRawIndex = function (dim, rawIdx) {\n var store = this._store;\n var dimInfo = this._dimInfos[dim];\n\n if (dimInfo) {\n return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx);\n }\n };\n\n SeriesData.prototype.getIndices = function () {\n return this._store.getIndices();\n };\n\n SeriesData.prototype.getDataExtent = function (dim) {\n return this._store.getDataExtent(this._getStoreDimIndex(dim));\n };\n\n SeriesData.prototype.getSum = function (dim) {\n return this._store.getSum(this._getStoreDimIndex(dim));\n };\n\n SeriesData.prototype.getMedian = function (dim) {\n return this._store.getMedian(this._getStoreDimIndex(dim));\n };\n\n SeriesData.prototype.getValues = function (dimensions, idx) {\n var _this = this;\n\n var store = this._store;\n return zrUtil.isArray(dimensions) ? store.getValues(map(dimensions, function (dim) {\n return _this._getStoreDimIndex(dim);\n }), idx) : store.getValues(dimensions);\n };\n /**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n */\n\n\n SeriesData.prototype.hasValue = function (idx) {\n var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord;\n\n for (var i = 0, len = dataDimIndicesOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * Retreive the index with given name\n */\n\n\n SeriesData.prototype.indexOfName = function (name) {\n for (var i = 0, len = this._store.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n };\n\n SeriesData.prototype.getRawIndex = function (idx) {\n return this._store.getRawIndex(idx);\n };\n\n SeriesData.prototype.indexOfRawIndex = function (rawIndex) {\n return this._store.indexOfRawIndex(rawIndex);\n };\n /**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param dim concrete dim\n * @param value ordinal index\n * @return rawIndex\n */\n\n\n SeriesData.prototype.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!invertedIndices) {\n throw new Error('Do not supported yet');\n }\n }\n\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n };\n /**\n * Retreive the index of nearest value\n * @param dim\n * @param value\n * @param [maxDistance=Infinity]\n * @return If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\n SeriesData.prototype.indicesOfNearest = function (dim, value, maxDistance) {\n return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance);\n };\n\n SeriesData.prototype.each = function (dims, cb, ctx) {\n 'use strict';\n\n if (zrUtil.isFunction(dims)) {\n ctx = cb;\n cb = dims;\n dims = [];\n } // ctxCompat just for compat echarts3\n\n\n var fCtx = ctx || this;\n var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);\n\n this._store.each(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n };\n\n SeriesData.prototype.filterSelf = function (dims, cb, ctx) {\n 'use strict';\n\n if (zrUtil.isFunction(dims)) {\n ctx = cb;\n cb = dims;\n dims = [];\n } // ctxCompat just for compat echarts3\n\n\n var fCtx = ctx || this;\n var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);\n this._store = this._store.filter(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n return this;\n };\n /**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\n SeriesData.prototype.selectRange = function (range) {\n 'use strict';\n\n var _this = this;\n\n var innerRange = {};\n var dims = zrUtil.keys(range);\n var dimIndices = [];\n zrUtil.each(dims, function (dim) {\n var dimIdx = _this._getStoreDimIndex(dim);\n\n innerRange[dimIdx] = range[dim];\n dimIndices.push(dimIdx);\n });\n this._store = this._store.selectRange(innerRange);\n return this;\n };\n /* eslint-enable max-len */\n\n\n SeriesData.prototype.mapArray = function (dims, cb, ctx) {\n 'use strict';\n\n if (zrUtil.isFunction(dims)) {\n ctx = cb;\n cb = dims;\n dims = [];\n } // ctxCompat just for compat echarts3\n\n\n ctx = ctx || this;\n var result = [];\n this.each(dims, function () {\n result.push(cb && cb.apply(this, arguments));\n }, ctx);\n return result;\n };\n\n SeriesData.prototype.map = function (dims, cb, ctx, ctxCompat) {\n 'use strict'; // ctxCompat just for compat echarts3\n\n var fCtx = ctx || ctxCompat || this;\n var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);\n var list = cloneListForMapAndSample(this);\n list._store = this._store.map(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n return list;\n };\n\n SeriesData.prototype.modify = function (dims, cb, ctx, ctxCompat) {\n var _this = this; // ctxCompat just for compat echarts3\n\n\n var fCtx = ctx || ctxCompat || this;\n\n if (process.env.NODE_ENV !== 'production') {\n zrUtil.each(normalizeDimensions(dims), function (dim) {\n var dimInfo = _this.getDimensionInfo(dim);\n\n if (!dimInfo.isCalculationCoord) {\n console.error('Danger: only stack dimension can be modified');\n }\n });\n }\n\n var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this); // If do shallow clone here, if there are too many stacked series,\n // it still cost lots of memory, becuase `_store.dimensions` are not shared.\n // We should consider there probably be shallow clone happen in each sereis\n // in consequent filter/map.\n\n this._store.modify(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n };\n /**\n * Large data down sampling on given dimension\n * @param sampleIndex Sample index for name and id\n */\n\n\n SeriesData.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this);\n list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex);\n return list;\n };\n /**\n * Large data down sampling using largest-triangle-three-buckets\n * @param {string} valueDimension\n * @param {number} targetCount\n */\n\n\n SeriesData.prototype.lttbDownSample = function (valueDimension, rate) {\n var list = cloneListForMapAndSample(this);\n list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate);\n return list;\n };\n\n SeriesData.prototype.getRawDataItem = function (idx) {\n return this._store.getRawDataItem(idx);\n };\n /**\n * Get model of one data item.\n */\n // TODO: Type of data item\n\n\n SeriesData.prototype.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n var dataItem = this.getRawDataItem(idx);\n return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\n };\n /**\n * Create a data differ\n */\n\n\n SeriesData.prototype.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n };\n /**\n * Get visual property.\n */\n\n\n SeriesData.prototype.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n };\n\n SeriesData.prototype.setVisual = function (kvObj, val) {\n this._visual = this._visual || {};\n\n if (isObject(kvObj)) {\n zrUtil.extend(this._visual, kvObj);\n } else {\n this._visual[kvObj] = val;\n }\n };\n /**\n * Get visual property of single data item\n */\n // eslint-disable-next-line\n\n\n SeriesData.prototype.getItemVisual = function (idx, key) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n };\n /**\n * If exists visual property of single data item\n */\n\n\n SeriesData.prototype.hasItemVisual = function () {\n return this._itemVisuals.length > 0;\n };\n /**\n * Make sure itemVisual property is unique\n */\n // TODO: use key to save visual to reduce memory.\n\n\n SeriesData.prototype.ensureUniqueItemVisual = function (idx, key) {\n var itemVisuals = this._itemVisuals;\n var itemVisual = itemVisuals[idx];\n\n if (!itemVisual) {\n itemVisual = itemVisuals[idx] = {};\n }\n\n var val = itemVisual[key];\n\n if (val == null) {\n val = this.getVisual(key); // TODO Performance?\n\n if (zrUtil.isArray(val)) {\n val = val.slice();\n } else if (isObject(val)) {\n val = zrUtil.extend({}, val);\n }\n\n itemVisual[key] = val;\n }\n\n return val;\n }; // eslint-disable-next-line\n\n\n SeriesData.prototype.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n zrUtil.extend(itemVisual, key);\n } else {\n itemVisual[key] = value;\n }\n };\n /**\n * Clear itemVisuals and list visual.\n */\n\n\n SeriesData.prototype.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n };\n\n SeriesData.prototype.setLayout = function (key, val) {\n isObject(key) ? zrUtil.extend(this._layout, key) : this._layout[key] = val;\n };\n /**\n * Get layout property.\n */\n\n\n SeriesData.prototype.getLayout = function (key) {\n return this._layout[key];\n };\n /**\n * Get layout of single data item\n */\n\n\n SeriesData.prototype.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n };\n /**\n * Set layout of single data item\n */\n\n\n SeriesData.prototype.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n };\n /**\n * Clear all layout of single data item\n */\n\n\n SeriesData.prototype.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n };\n /**\n * Set graphic element relative to data. It can be set as null\n */\n\n\n SeriesData.prototype.setItemGraphicEl = function (idx, el) {\n var seriesIndex = this.hostModel && this.hostModel.seriesIndex;\n setCommonECData(seriesIndex, this.dataType, idx, el);\n this._graphicEls[idx] = el;\n };\n\n SeriesData.prototype.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n };\n\n SeriesData.prototype.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n };\n /**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\n SeriesData.prototype.cloneShallow = function (list) {\n if (!list) {\n list = new SeriesData(this._schema ? this._schema : map(this.dimensions, this._getDimInfo, this), this.hostModel);\n }\n\n transferProperties(list, this);\n list._store = this._store;\n return list;\n };\n /**\n * Wrap some method to add more feature\n */\n\n\n SeriesData.prototype.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (!zrUtil.isFunction(originalMethod)) {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n }; // ----------------------------------------------------------\n // A work around for internal method visiting private member.\n // ----------------------------------------------------------\n\n\n SeriesData.internalField = function () {\n prepareInvertedIndex = function (data) {\n var invertedIndicesMap = data._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = data._dimInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n var store = data._store;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < store.count(); i++) {\n // Only support the case that all values are distinct.\n invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i;\n }\n }\n });\n };\n\n getIdNameFromStore = function (data, dimIdx, idx) {\n return convertOptionIdName(data._getCategory(dimIdx, idx), null);\n };\n /**\n * @see the comment of `List['getId']`.\n */\n\n\n getId = function (data, rawIndex) {\n var id = data._idList[rawIndex];\n\n if (id == null && data._idDimIdx != null) {\n id = getIdNameFromStore(data, data._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n };\n\n normalizeDimensions = function (dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = dimensions != null ? [dimensions] : [];\n }\n\n return dimensions;\n };\n /**\n * Data in excludeDimensions is copied, otherwise transfered.\n */\n\n\n cloneListForMapAndSample = function (original) {\n var list = new SeriesData(original._schema ? original._schema : map(original.dimensions, original._getDimInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n return list;\n };\n\n transferProperties = function (target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend({}, source._calculationInfo);\n };\n\n makeIdFromName = function (data, idx) {\n var nameList = data._nameList;\n var idList = data._idList;\n var nameDimIdx = data._nameDimIdx;\n var idDimIdx = data._idDimIdx;\n var name = nameList[idx];\n var id = idList[idx];\n\n if (name == null && nameDimIdx != null) {\n nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx);\n }\n\n if (id == null && idDimIdx != null) {\n idList[idx] = id = getIdNameFromStore(data, idDimIdx, idx);\n }\n\n if (id == null && name != null) {\n var nameRepeatCount = data._nameRepeatCount;\n var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;\n id = name;\n\n if (nmCnt > 1) {\n id += '__ec__' + nmCnt;\n }\n\n idList[idx] = id;\n }\n };\n }();\n\n return SeriesData;\n}();\n\nexport default SeriesData;","import * as echart from 'echarts/core';\r\nimport {\r\n TooltipComponent,\r\n TooltipComponentOption,\r\n\r\n} from 'echarts/components';\r\nimport { PieChart, PieSeriesOption } from 'echarts/charts';\r\nimport { LabelLayout } from 'echarts/features';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\n\r\nechart.use([\r\n TooltipComponent,\r\n PieChart,\r\n CanvasRenderer,\r\n LabelLayout\r\n]);\r\nexport const echarts = echart;\r\nexport type EChartsOption = echart.ComposeOption<\r\n TooltipComponentOption | PieSeriesOption\r\n>;","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-719ef7a1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"templateprogress\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"完全入径\", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"病案:50份\", -1))\n\nimport { reactive, onMounted, ref, watch, toRefs, watchEffect} from \"vue\";\r\n//import { treeData } from './treeData'\r\nimport { InfoFilled } from '@element-plus/icons-vue'\r\n\r\n\r\n// 规范\r\nimport { EChartsOption, echarts } from './pieTree';\r\n//接口\r\n// 数据\r\nimport {gaugeData} from \"@/assets/testdata/gaugeData\"\r\n\r\nimport { ImgUrlFix } from '@u/contant'\r\nimport { \r\n ElNotification\r\n } from 'element-plus'\r\n \r\n\r\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'templateprogress',\n props: {\n data: null\n },\n emits: ['copyConfirm','changeState','emitCheckAllid','emitCheckAllZzid'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n data: any\r\n };\n\r\n\r\n \r\n \r\n const cardData:any = reactive(props.data);\r\n const propType = ref(false);\r\n const content: any = ref(null);\r\n const newTmplData: any = reactive([]);\r\n const isChecked = ref(false);\r\n const loading1 = ref(false);\r\n \r\n // watch(() => props.data, (val) => {\r\n // cardData.value = props.data\r\n \r\n\r\n // },{immediate:true})\r\n\r\n\r\n onMounted(() => {\r\n var myChart = echarts.init(content.value);\r\n var option: EChartsOption = {\r\n title: {\r\n text: '疗效',\r\n left: 'center',\r\n top: '40%',\r\n textStyle: {\r\n color: '#2b9466',\r\n fontSize: 15,\r\n },\r\n subtext: '80%',\r\n subtextStyle: {\r\n fontWeight: 'blod',\r\n color: 'red',\r\n }\r\n },\r\n series: [\r\n {\r\n name: 'Access From',\r\n type: 'pie',\r\n radius: [50, 60],\r\n avoidLabelOverlap: false,\r\n itemStyle: {\r\n borderRadius: 50,\r\n borderColor: '#fff',\r\n borderWidth: 2\r\n },\r\n label: {\r\n show: false,\r\n position: 'center'\r\n },\r\n emphasis: {\r\n label: {\r\n show: false,\r\n fontSize: '40',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n labelLine: {\r\n show: false\r\n },\r\n data: [\r\n { value: 1048, name: 'Search Engine',\r\n itemStyle: {\r\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\r\n {\r\n offset: 0,\r\n color: 'rgba(58,77,233,0.8)'\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(58,77,233,0.3)'\r\n }\r\n ])\r\n } \r\n },\r\n { value: 735, name: 'Direct', itemStyle: {color: 'transparent' } },\r\n ],\r\n zlevel: 2\r\n },\r\n {\r\n name: 'Access From',\r\n type: 'pie',\r\n radius: [50, 60],\r\n avoidLabelOverlap: false,\r\n itemStyle: {\r\n borderRadius: 50,\r\n borderColor: '#fff',\r\n borderWidth: 2\r\n },\r\n label: {\r\n show: false,\r\n position: 'center'\r\n },\r\n emphasis: {\r\n label: {\r\n show: false,\r\n fontSize: '40',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n labelLine: {\r\n show: false\r\n },\r\n data: [\r\n { value: 735, name: 'Direct', itemStyle: {color: '#f4f4f4' } },\r\n ],\r\n zlevel: 1\r\n }\r\n ]\r\n }\r\n \r\n \r\n myChart.setOption(option); \r\n myChart.on('click', function(param){\r\n // if(param.dataIndex === 1){\r\n // emit('bingzhongClick', param.value);\r\n // }else{\r\n // emit('dialecticalClick', param.value);\r\n // }\r\n }) \r\n \r\n })\r\n \r\n \r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _hoisted_3,\n _createElementVNode(\"div\", {\n class: \"templateprogress-content\",\n ref_key: \"content\",\n ref: content\n }, null, 512)\n ]))\n}\n}\n\n})","import script from \"./templateprogress.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./templateprogress.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./templateprogress.vue?vue&type=style&index=0&id=719ef7a1&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-719ef7a1\"]])\n\nexport default __exports__","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n */\nvar LegendVisualProvider =\n/** @class */\nfunction () {\n function LegendVisualProvider( // Function to get data after filtered. It stores all the encoding info\n getDataWithEncodedVisual, // Function to get raw data before filtered.\n getRawData) {\n this._getDataWithEncodedVisual = getDataWithEncodedVisual;\n this._getRawData = getRawData;\n }\n\n LegendVisualProvider.prototype.getAllNames = function () {\n var rawData = this._getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n\n return rawData.mapArray(rawData.getName);\n };\n\n LegendVisualProvider.prototype.containName = function (name) {\n var rawData = this._getRawData();\n\n return rawData.indexOfName(name) >= 0;\n };\n\n LegendVisualProvider.prototype.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n\n return dataWithEncodedVisual.indexOfName(name);\n };\n\n LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n\n return LegendVisualProvider;\n}();\n\nexport default LegendVisualProvider;","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5b016090\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dataStatistics\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cCell_icon\" }, null, -1))\nconst _hoisted_3 = { class: \"dataStatistics_content\" }\nconst _hoisted_4 = { class: \"dataStatistics_statistic\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"circle circle1\" }, null, -1))\nconst _hoisted_6 = { class: \"text-center\" }\nconst _hoisted_7 = { class: \"color1 text-end\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"lx\" }, null, -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"circle circle2\" }, null, -1))\nconst _hoisted_10 = { class: \"text-center\" }\nconst _hoisted_11 = { class: \"color2 text-end\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"lx\" }, null, -1))\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"circle circle3\" }, null, -1))\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"color3 text-end\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"lx\" }, null, -1))\n\nimport { ref, nextTick, withDefaults, Ref, reactive, watch } from 'vue'\r\nimport cCell from '@c/public/cCell/cCell.vue'\r\nimport * as echarts from 'echarts/core';\r\nimport {\r\n TooltipComponent,\r\n TooltipComponentOption,\r\n LegendComponent,\r\n LegendComponentOption\r\n} from 'echarts/components';\r\nimport { PieChart, PieSeriesOption } from 'echarts/charts';\r\nimport { LabelLayout } from 'echarts/features';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\n\r\ntype EChartsOption = echarts.ComposeOption<\r\n TooltipComponentOption | LegendComponentOption | PieSeriesOption\r\n>;\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'dataStatistics',\n props: {\n data: { default: () => {\r\n return {}\r\n } }\n },\n emits: [\"select\"],\n setup(__props: any, { emit: emits }: { emit: ({\r\n // (e: 'update:modelValue', val: boolean): void,\r\n (e: 'select', data: any, idx: number): void\r\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props as { data: any };\n\r\necharts.use([\r\n TooltipComponent,\r\n LegendComponent,\r\n PieChart,\r\n CanvasRenderer,\r\n LabelLayout\r\n]);\r\n\r\nconst charts: any = ref(null);\r\n\r\n// watch(() => props.data, val => {\r\n// })\r\n\r\nconst stateTitle: string[] = reactive(['完全入径' ,'变异入径','未入径'])\r\nnextTick(() => {\r\n var myChart = echarts.init(charts.value);\r\n var option: EChartsOption;\r\n option = {\r\n tooltip: {\r\n trigger: 'item',\r\n formatter(val: any) {\r\n return val.data.value + '份'\r\n }\r\n },\r\n series: [\r\n {\r\n name: '',\r\n type: 'pie',\r\n radius: ['50%', '80%'],\r\n avoidLabelOverlap: false,\r\n label: {\r\n show: false,\r\n position: 'center'\r\n },\r\n itemStyle: {\r\n color: data => {\r\n const colorList = ['', '#2b9567', '#f4b819', '#ca373b']\r\n return colorList[data.data.id]\r\n }\r\n },\r\n labelLine: {\r\n show: false\r\n },\r\n data: [\r\n { value: props.data.sameCount, name: '完全入径', id: 1 },\r\n { value: props.data.parCount, name: '变异入径' , id: 2},\r\n { value: props.data.diffCount, name: '未入径' , id: 3}\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n option && myChart.setOption(option);\r\n})\r\nconst select = (idx: number) => {\r\n emits('select', props.data, idx)\r\n}\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(cCell, {\n label: '版本号:' + props.data.version\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"pointer\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (select(0)))\n }, _toDisplayString(props.data.alias ? props.data.dxName + '('+ props.data.alias +')' : props.data.dxName), 1)\n ]),\n icon: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }, 8, [\"label\"]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n ref_key: \"charts\",\n ref: charts,\n class: \"dataStatistics_echarts pointer\"\n }, null, 512),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"div\", {\n class: \"pointer\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (select(0)))\n }, [\n _hoisted_5,\n _createTextVNode(_toDisplayString(stateTitle[0]), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", null, _toDisplayString(props.data.sameCount), 1),\n _createTextVNode(\" 份\")\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"span\", null, _toDisplayString(props.data.sameAvgEff == -1 ? '--' : (props.data.sameAvgEff + '%')), 1)\n ])\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"div\", {\n class: \"pointer\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (select(1)))\n }, [\n _hoisted_9,\n _createTextVNode(_toDisplayString(stateTitle[1]), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", null, _toDisplayString(props.data.parCount), 1),\n _createTextVNode(\" 份\")\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", null, _toDisplayString(props.data.parAvgEff == -1 ? '--' : (props.data.parAvgEff + '%')), 1)\n ])\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"div\", {\n class: \"pointer\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (select(2)))\n }, [\n _hoisted_13,\n _createTextVNode(_toDisplayString(stateTitle[2]), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"span\", null, _toDisplayString(props.data.diffCount), 1),\n _createTextVNode(\" 份\")\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createElementVNode(\"span\", null, _toDisplayString(props.data.diffAvgEff == -1 ? '--' : (props.data.diffAvgEff + '%')), 1)\n ])\n ])\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./dataStatistics.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./dataStatistics.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./dataStatistics.vue?vue&type=style&index=0&id=5b016090&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5b016090\"]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./cCell.vue?vue&type=style&index=0&id=362d7721&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./effcoll.vue?vue&type=style&index=0&id=29763974&lang=scss\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport Model from '../../model/Model.js';\nimport { each, curry, clone, defaults, isArray, indexOf } from 'zrender/lib/core/util.js'; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nexport function collect(ecModel, api) {\n var result = {\n /**\n * key: makeKey(axis.model)\n * value: {\n * axis,\n * coordSys,\n * axisPointerModel,\n * triggerTooltip,\n * involveSeries,\n * snap,\n * seriesModels,\n * seriesDataCount\n * }\n */\n axesInfo: {},\n seriesInvolved: false,\n\n /**\n * key: makeKey(coordSys.model)\n * value: Object: key makeKey(axis.model), value: axisInfo\n */\n coordSysAxesInfo: {},\n coordSysMap: {}\n };\n collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\n return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n var linksOption = globalAxisPointerModel.get('link', true) || [];\n var linkGroups = []; // Collect axes info.\n\n each(api.getCoordinateSystems(), function (coordSys) {\n // Some coordinate system do not support axes, like geo.\n if (!coordSys.axisPointerEnabled) {\n return;\n }\n\n var coordSysKey = makeKey(coordSys.model);\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n // for user. So we enable seting tooltip on coordSys model.\n\n var coordSysModel = coordSys.model;\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n // show but axisPointer will show as normal.\n && baseTooltipModel.get('show')) {\n // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross';\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(['axisPointer', 'axis']));\n\n if (triggerAxis || cross) {\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n }\n\n if (cross) {\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n }\n } // fromTooltip: true | false | 'cross'\n // triggerTooltip: true | false | null\n\n\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n var axisPointerShow = axisPointerModel.get('show');\n\n if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n return;\n }\n\n if (triggerTooltip == null) {\n triggerTooltip = axisPointerModel.get('triggerTooltip');\n }\n\n axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n var snap = axisPointerModel.get('snap');\n var axisKey = makeKey(axis.model);\n var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n var axisInfo = result.axesInfo[axisKey] = {\n key: axisKey,\n axis: axis,\n coordSys: coordSys,\n axisPointerModel: axisPointerModel,\n triggerTooltip: triggerTooltip,\n involveSeries: involveSeries,\n snap: snap,\n useHandle: isHandleTrigger(axisPointerModel),\n seriesModels: [],\n linkGroup: null\n };\n axesInfoInCoordSys[axisKey] = axisInfo;\n result.seriesInvolved = result.seriesInvolved || involveSeries;\n var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n if (groupIndex != null) {\n var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n axesInfo: {}\n });\n linkGroup.axesInfo[axisKey] = axisInfo;\n linkGroup.mapper = linksOption[groupIndex].mapper;\n axisInfo.linkGroup = linkGroup;\n }\n }\n });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n var fields = ['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'];\n var volatileOption = {};\n each(fields, function (field) {\n volatileOption[field] = clone(tooltipAxisPointerModel.get(field));\n }); // category axis do not auto snap, otherwise some tick that do not\n // has value can not be hovered. value/time/log axis default snap if\n // triggered from tooltip and trigger tooltip.\n\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n // Only these properties can be overrided from tooltip to axisPointer.\n\n if (tooltipAxisPointerModel.get('type') === 'cross') {\n volatileOption.type = 'line';\n }\n\n var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n labelOption.show == null && (labelOption.show = false);\n\n if (fromTooltip === 'cross') {\n // When 'cross', both axes show labels.\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(['label', 'show']);\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n // (cross style is dashed by default)\n\n if (!triggerTooltip) {\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n crossStyle && defaults(labelOption, crossStyle.textStyle);\n }\n }\n\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n // Prepare data for axis trigger\n ecModel.eachSeries(function (seriesModel) {\n // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n var coordSys = seriesModel.coordinateSystem;\n var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true);\n var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true);\n\n if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get(['axisPointer', 'show'], true) === false) {\n return;\n }\n\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n var axis = axisInfo.axis;\n\n if (coordSys.getAxis(axis.dim) === axis) {\n axisInfo.seriesModels.push(seriesModel);\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n axisInfo.seriesDataCount += seriesModel.getData().count();\n }\n });\n });\n}\n/**\n * For example:\n * {\n * axisPointer: {\n * links: [{\n * xAxisIndex: [2, 4],\n * yAxisIndex: 'all'\n * }, {\n * xAxisId: ['a5', 'a7'],\n * xAxisName: 'xxx'\n * }]\n * }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n var axisModel = axis.model;\n var dim = axis.dim;\n\n for (var i = 0; i < linksOption.length; i++) {\n var linkOption = linksOption[i] || {};\n\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n return i;\n }\n }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n return linkPropValue === 'all' || isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nexport function fixValue(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n\n if (!axisInfo) {\n return;\n }\n\n var axisPointerModel = axisInfo.axisPointerModel;\n var scale = axisInfo.axis.scale;\n var option = axisPointerModel.option;\n var status = axisPointerModel.get('status');\n var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n if (value != null) {\n value = scale.parse(value);\n }\n\n var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n // and status should be initialized.\n\n if (status == null) {\n option.status = useHandle ? 'show' : 'hide';\n }\n\n var extent = scale.getExtent().slice();\n extent[0] > extent[1] && extent.reverse();\n\n if ( // Pick a value on axis when initializing.\n value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n // where we should re-pick a value to keep `handle` displaying normally.\n || value > extent[1]) {\n // Make handle displayed on the end of the axis when init, which looks better.\n value = extent[1];\n }\n\n if (value < extent[0]) {\n value = extent[0];\n }\n\n option.value = value;\n\n if (useHandle) {\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n }\n}\nexport function getAxisInfo(axisModel) {\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\nexport function getAxisPointerModel(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n return !!axisPointerModel.get(['handle', 'show']);\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nexport function makeKey(model) {\n return model.type + '||' + model.id;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\n\nvar SeriesDimensionDefine =\n/** @class */\nfunction () {\n /**\n * @param opt All of the fields will be shallow copied.\n */\n function SeriesDimensionDefine(opt) {\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip?: number\n * label?: number\n * itemName?: number\n * seriesName?: number\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.label`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n */\n this.otherDims = {};\n\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n }\n\n return SeriesDimensionDefine;\n}();\n\n;\nexport default SeriesDimensionDefine;","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./casstable.vue?vue&type=style&index=0&id=1faff333&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./templateprogress.vue?vue&type=style&index=0&id=719ef7a1&lang=scss&scoped=true\"","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./cSteps.vue?vue&type=style&index=0&id=1508654f&lang=scss&scoped=true\"","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createVNode as _createVNode, unref as _unref, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = [\"innerHTML\"]\nconst _hoisted_6 = { class: \"caseeffect-percentage\" }\nconst _hoisted_7 = { class: \"caseeffect-tableBox\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"tableLine background-color fontWeight tableLine\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a0 padding10\" }, \"临床表现\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a1 padding10\" }, \"好多了\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a2 padding10\" }, \"好了些\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a3 padding10\" }, \"未见效\"),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"a4 padding10\" }, \"加重\")\n], -1)\nconst _hoisted_9 = { class: \"tableLine background-color fontWeight tableLine0\" }\nconst _hoisted_10 = { class: \"a0 checked-bg\" }\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = [\"src\"]\nconst _hoisted_13 = { key: 1 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = [\"src\"]\nconst _hoisted_16 = { key: 1 }\nconst _hoisted_17 = { key: 0 }\nconst _hoisted_18 = [\"src\"]\nconst _hoisted_19 = { key: 1 }\nconst _hoisted_20 = { key: 0 }\nconst _hoisted_21 = [\"src\"]\nconst _hoisted_22 = { key: 1 }\nconst _hoisted_23 = { class: \"dialog-footer\" }\n\nimport { reactive, ref, watch } from \"vue\";\r\n//接口\r\nimport { getQuestionnaire } from '@r/api/xingling'\r\n// 引入第三方组件\r\nimport { ElNotification, ElLoading } from \"element-plus\";\r\n\r\nimport { ImgUrlFix } from \"@u/contant\";\r\nimport { bg } from \"element-plus/lib/locale\";\r\nimport { Checked } from \"@element-plus/icons-vue/dist/types\";\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'caseeffect',\n props: {\n dialogVisible: null,\n caseeffectitem: null\n },\n emits: ['update:dialogVisible'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\r\n dialogVisible: any,\r\n caseeffectitem: any\r\n};\n\r\n\r\n\r\n\r\nconst propcaseeffectitem = ref(0)\r\nconst radio = ref(true)\r\nconst dialogeffectVisible = ref(props.dialogVisible)\r\nconst effectData = ref([])\r\nconst topicData = ref([])\r\nconst checkboxSelect = ref([])\r\n//关闭\r\nconst onClose = () => {\r\n emit('update:dialogVisible', false)\r\n\r\n}\r\nconst getCisw = (id: any) => {\r\n const loading = ElLoading.service({\r\n lock: true,\r\n text: \"加载中...\",\r\n background: \"rgba(0, 0, 0, 0.4)\",\r\n });\r\n getQuestionnaire({\r\n data: {\r\n effcollId: id, \r\n //effcollId: '06da0f9d-8be7-4b64-90af-cebb541e47b1',\r\n _times: new Date().getTime()\r\n }\r\n }).then((data: any) => {\r\n topicData.value = [].concat(data.submitTopic)\r\n effectData.value= [].concat(data.effcollforms)\r\n var arr: any = []\r\n data.submitTopic.forEach((item:any) => {\r\n if(item.type){\r\n item.submitOption.forEach((e:any) => {\r\n if(e.selected){\r\n arr.push(e.content)\r\n console.log(arr)\r\n\r\n }\r\n });\r\n \r\n }\r\n });\r\n \r\n checkboxSelect.value = arr\r\n propcaseeffectitem.value = data.Score\r\n loading.close();\r\n }).catch(() => {\r\n topicData.value = []\r\n propcaseeffectitem.value = 0\r\n loading.close();\r\n })\r\n}\r\n\r\nwatch(() => props.dialogVisible, (val) => {\r\n dialogeffectVisible.value = val\r\n}, {\r\n immediate: true\r\n})\r\nwatch(() => props.caseeffectitem, (val) => {\r\n if (val && val.id) {\r\n getCisw(val.id)\r\n }\r\n\r\n}, {\r\n immediate: true\r\n})\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_radio = _resolveComponent(\"el-radio\")!\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\")!\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\")!\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\")!\n const _component_el_col = _resolveComponent(\"el-col\")!\n const _component_el_row = _resolveComponent(\"el-row\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n const _directive_key = _resolveDirective(\"key\")!\n\n return (_openBlock(), _createBlock(_component_el_dialog, {\n modelValue: dialogeffectVisible.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((dialogeffectVisible).value = $event)),\n title: __props.caseeffectitem.patName + '随访问卷',\n width: \"60%\",\n onClose: onClose,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n \"custom-class\": \"caseeffect\"\n }, {\n footer: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_23, [\n _createVNode(_component_el_button, {\n type: \"success\",\n onClick: onClose\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_el_row, { gutter: 20 }, {\n default: _withCtx(() => [\n _createVNode(_component_el_col, { span: 14 }, {\n default: _withCtx(() => [\n (!topicData.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"暂无问卷\"))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(topicData.value, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: idx }, [\n (item.type == 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h4\", {\n innerHTML: ((idx + 1) + '、' + item.name)\n }, null, 8, _hoisted_3),\n _createVNode(_component_el_radio_group, {\n modelValue: radio.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((radio).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.submitOption, (e, i) => {\n return (_openBlock(), _createBlock(_component_el_radio, {\n label: e.selected,\n name: i,\n key: i,\n disabled: true\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(e.content), 1)\n ]),\n _: 2\n }, 1032, [\"label\", \"name\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true),\n (item.type == 1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"h4\", {\n innerHTML: ((idx + 1) + '、' + item.name)\n }, null, 8, _hoisted_5),\n _createVNode(_component_el_checkbox_group, {\n modelValue: checkboxSelect.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((checkboxSelect).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.submitOption, (e, i) => {\n return (_openBlock(), _createBlock(_component_el_checkbox, {\n label: e.content,\n key: i,\n disabled: true\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(e.content), 1)\n ]),\n _: 2\n }, 1032, [\"label\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_el_col, { span: 10 }, {\n default: _withCtx(() => [\n _createElementVNode(\"h3\", _hoisted_6, [\n _createTextVNode(\"疗效指数:\"),\n _createElementVNode(\"span\", null, _toDisplayString(__props.caseeffectitem.per) + \"%\", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(effectData.value, (item, idx) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(item.name), 1),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '好多了' ? 'checked-bg a1' : 'a1' )\n }, [\n (item.selectName == '好多了')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_12)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" -- \"))\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '好了些' ? 'checked-bg a2' : 'a2' )\n }, [\n (item.selectName == '好了些')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_15)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \" -- \"))\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '未见效' ? 'checked-bg a3' : 'a3' )\n }, [\n (item.selectName == '未见效')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_18)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \" -- \"))\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(item.selectName == '加重' ? 'checked-bg a4' : 'a4' )\n }, [\n (item.selectName == '加重')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"img\", {\n src: _unref(ImgUrlFix) + 'images/checked.png'\n }, null, 8, _hoisted_21)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_22, \" -- \"))\n ], 2)\n ])), [\n [_directive_key, idx]\n ])\n }), 256))\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"title\"]))\n}\n}\n\n})","import script from \"./caseeffect.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./caseeffect.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./caseeffect.vue?vue&type=style&index=0&id=68d29b8a&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, vShow as _vShow, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective } from \"vue\"\n\nconst _hoisted_1 = { class: \"effcollDiaBox\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", null, \"问卷格式:系统根据病历书写生成的问题+ 医生新增的临床表现生成的问题+自定义问题,例如:\", -1)\nconst _hoisted_3 = { class: \"example\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"p\", null, [\n /*#__PURE__*/_createTextVNode(\" 病历书写: \"),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"green\" }, \"咳嗽3日,咳痰伴随胸闷\")\n], -1)\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", null, \"问卷内容如下:\", -1)\nconst _hoisted_6 = { class: \"item\" }\nconst _hoisted_7 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"fontWeight\" }, \"1.请问问诊后至今服用中药情况?\", -1)\nconst _hoisted_8 = { class: \"answers\" }\nconst _hoisted_9 = { class: \"answers-item\" }\nconst _hoisted_10 = { class: \"answers-item\" }\nconst _hoisted_11 = { class: \"answers-item\" }\nconst _hoisted_12 = { class: \"item\" }\nconst _hoisted_13 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"fontWeight\" }, \"2.请问您的咳嗽是否好转?\", -1)\nconst _hoisted_14 = { class: \"answers\" }\nconst _hoisted_15 = { class: \"answers-item\" }\nconst _hoisted_16 = { class: \"answers-item\" }\nconst _hoisted_17 = { class: \"answers-item\" }\nconst _hoisted_18 = { class: \"answers-item\" }\nconst _hoisted_19 = { class: \"item\" }\nconst _hoisted_20 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"fontWeight\" }, \"3.请问您的咳痰是否好转?\", -1)\nconst _hoisted_21 = { class: \"answers\" }\nconst _hoisted_22 = { class: \"answers-item\" }\nconst _hoisted_23 = { class: \"answers-item\" }\nconst _hoisted_24 = { class: \"answers-item\" }\nconst _hoisted_25 = { class: \"answers-item\" }\nconst _hoisted_26 = { class: \"item\" }\nconst _hoisted_27 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"fontWeight\" }, \"4.请问您的胸闷是否好转?\", -1)\nconst _hoisted_28 = { class: \"answers\" }\nconst _hoisted_29 = { class: \"answers-item\" }\nconst _hoisted_30 = { class: \"answers-item\" }\nconst _hoisted_31 = { class: \"answers-item\" }\nconst _hoisted_32 = { class: \"answers-item\" }\nconst _hoisted_33 = { class: \"imgbox\" }\nconst _hoisted_34 = /*#__PURE__*/_createElementVNode(\"div\", { style: {\"margin-bottom\":\"10px\"} }, \"移动端效果\", -1)\nconst _hoisted_35 = [\"src\"]\nconst _hoisted_36 = { class: \"effcollBox\" }\nconst _hoisted_37 = { class: \"effcollBox-top\" }\nconst _hoisted_38 = /*#__PURE__*/_createElementVNode(\"div\", null, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"title\" }, \"新增问题:\"),\n /*#__PURE__*/_createElementVNode(\"span\", {\n class: \"content\",\n style: {\"color\":\"#ccc\"}\n }, \" (新增问题答卷不纳入疗效指数) \")\n], -1)\nconst _hoisted_39 = { class: \"topicCounter\" }\nconst _hoisted_40 = { class: \"topicContentBox\" }\nconst _hoisted_41 = { class: \"topicContent\" }\nconst _hoisted_42 = { class: \"effcollNameBox\" }\nconst _hoisted_43 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"title\" }, \"题目名称:\", -1)\nconst _hoisted_44 = { class: \"content\" }\nconst _hoisted_45 = { class: \"effcollNameBox\" }\nconst _hoisted_46 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"题目类型:\", -1)\nconst _hoisted_47 = { class: \"content\" }\nconst _hoisted_48 = { class: \"optionBox\" }\nconst _hoisted_49 = { class: \"optionText lineheight32\" }\nconst _hoisted_50 = { class: \"optioncontent\" }\nconst _hoisted_51 = {\n key: 0,\n class: \"lineheight32 delIcon\"\n}\nconst _hoisted_52 = { class: \"btnBox\" }\nconst _hoisted_53 = { class: \"deleteBox\" }\nconst _hoisted_54 = { class: \"dialog-footer\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_radio = _resolveComponent(\"el-radio\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_empty = _resolveComponent(\"empty\")!\n const _component_el_input = _resolveComponent(\"el-input\")!\n const _component_el_option = _resolveComponent(\"el-option\")!\n const _component_el_select = _resolveComponent(\"el-select\")!\n const _component_delete = _resolveComponent(\"delete\")!\n const _component_el_icon = _resolveComponent(\"el-icon\")!\n const _component_el_popconfirm = _resolveComponent(\"el-popconfirm\")!\n const _component_CloseBold = _resolveComponent(\"CloseBold\")!\n const _component_el_dialog = _resolveComponent(\"el-dialog\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createBlock(_component_el_dialog, {\n modelValue: _ctx.dialogVisible2,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((_ctx.dialogVisible2) = $event)),\n title: \"随访问卷\",\n width: \"70%\",\n onClose: _ctx.onClose,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n top: \"30px\",\n \"custom-class\": \"effcoll\",\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_54, [\n _createVNode(_component_el_button, { onClick: _ctx.onClose }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _withDirectives(_createVNode(_component_el_button, {\n type: \"success\",\n onClick: _ctx.onConfirm,\n loading: _ctx.loading\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"保存\")\n ]),\n _: 1\n }, 8, [\"onClick\", \"loading\"]), [\n [_vShow, !_ctx.isLock]\n ])\n ])\n ]),\n default: _withCtx(() => [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", null, [\n _hoisted_4,\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio1,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.radio1) = $event)),\n disabled: \"\",\n label: \"完全按照医嘱服用\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"完全按照医嘱服用\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_10, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio1,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.radio1) = $event)),\n disabled: \"\",\n label: \"部分按照医嘱服用\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"部分按照医嘱服用\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_11, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio1,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.radio1) = $event)),\n disabled: \"\",\n label: \"未服用\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"未服用\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio2,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.radio2) = $event)),\n disabled: \"\",\n label: \"好多了\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"好多了\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_16, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio2,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.radio2) = $event)),\n disabled: \"\",\n label: \"好了些\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"好了些\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_17, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio2,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.radio2) = $event)),\n disabled: \"\",\n label: \"未见效\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"未见效\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_18, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio2,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.radio2) = $event)),\n disabled: \"\",\n label: \"加重\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"加重\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio3,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.radio3) = $event)),\n disabled: \"\",\n label: \"好多了\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"好多了\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_23, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio3,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((_ctx.radio3) = $event)),\n disabled: \"\",\n label: \"好了些\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"好了些\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_24, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio3,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.radio3) = $event)),\n disabled: \"\",\n label: \"未见效\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"未见效\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_25, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio3,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((_ctx.radio3) = $event)),\n disabled: \"\",\n label: \"加重\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"加重\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _hoisted_27,\n _createElementVNode(\"div\", _hoisted_28, [\n _createElementVNode(\"span\", _hoisted_29, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio4,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((_ctx.radio4) = $event)),\n disabled: \"\",\n label: \"好多了\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"好多了\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_30, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio4,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.radio4) = $event)),\n disabled: \"\",\n label: \"好了些\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"好了些\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_31, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio4,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((_ctx.radio4) = $event)),\n disabled: \"\",\n label: \"未见效\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"未见效\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"span\", _hoisted_32, [\n _createVNode(_component_el_radio, {\n modelValue: _ctx.radio4,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((_ctx.radio4) = $event)),\n disabled: \"\",\n label: \"加重\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"加重\")\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_33, [\n _hoisted_34,\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + '/images/sellphone.png'\n }, null, 8, _hoisted_35)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_36, [\n _createElementVNode(\"div\", _hoisted_37, [\n _hoisted_38,\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _ctx.addTopicHandle,\n disabled: _ctx.isLock\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"新增题目\")\n ]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])\n ])\n ]),\n _withDirectives(_createVNode(_component_empty, null, {\n default: _withCtx(() => [\n _createTextVNode(\" 暂无问卷 \")\n ]),\n _: 1\n }, 512), [\n [_vShow, _ctx.effcollList.length === 0]\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.effcollList, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"topicItem\"\n }, [\n _createElementVNode(\"div\", _hoisted_39, _toDisplayString((index + 1)), 1),\n _createElementVNode(\"div\", _hoisted_40, [\n _createElementVNode(\"div\", _hoisted_41, [\n _createElementVNode(\"div\", _hoisted_42, [\n _hoisted_43,\n _createElementVNode(\"span\", _hoisted_44, [\n _createVNode(_component_el_input, {\n modelValue: item.name,\n \"onUpdate:modelValue\": ($event: any) => ((item.name) = $event),\n modelModifiers: { trim: true },\n placeholder: \"请输入题目名称,不超过50个字符\",\n maxlength: \"50\",\n disabled: _ctx.isLock\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_45, [\n _hoisted_46,\n _createElementVNode(\"div\", _hoisted_47, [\n _createVNode(_component_el_select, {\n modelValue: item.type,\n \"onUpdate:modelValue\": ($event: any) => ((item.type) = $event),\n class: \"m-2\",\n placeholder: \"请选择\",\n disabled: _ctx.isLock\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.effcollType, (item) => {\n return (_openBlock(), _createBlock(_component_el_option, {\n key: item.value,\n label: item.label,\n value: item.value\n }, null, 8, [\"label\", \"value\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_48, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.option, (option, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"optionItemBox\",\n key: index + idx\n }, [\n _createElementVNode(\"div\", _hoisted_49, \"选项\" + _toDisplayString(_ctx.ALPHA[idx]), 1),\n _createElementVNode(\"div\", _hoisted_50, [\n _createVNode(_component_el_input, {\n modelValue: option.content,\n \"onUpdate:modelValue\": ($event: any) => ((option.content) = $event),\n modelModifiers: { trim: true },\n placeholder: \"请输入选项内容,不超过50个字符\",\n maxlength: \"50\",\n disabled: _ctx.isLock\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disabled\"])\n ]),\n (idx > 1 && !_ctx.isLock)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_51, [\n _createVNode(_component_el_popconfirm, {\n title: \"是否删除该选项?\",\n onConfirm: ($event: any) => (_ctx.removeEffcollOption(index, idx))\n }, {\n reference: _withCtx(() => [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_delete)\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"onConfirm\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n _withDirectives(_createElementVNode(\"div\", _hoisted_52, [\n _withDirectives(_createVNode(_component_el_button, {\n type: \"success\",\n onClick: ($event: any) => (_ctx.addEffcollOptionHandle(index))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"添加选项\")\n ]),\n _: 2\n }, 1032, [\"onClick\"]), [\n [_vShow, !_ctx.isLock]\n ])\n ], 512), [\n [_vShow, item.option.length < 26]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_53, [\n _withDirectives(_createElementVNode(\"span\", null, [\n _createVNode(_component_el_popconfirm, {\n title: \"是否删除该问题?\",\n onConfirm: ($event: any) => (_ctx.deleteTopicHandle(index))\n }, {\n reference: _withCtx(() => [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CloseBold)\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"onConfirm\"])\n ], 512), [\n [_vShow, !_ctx.isLock]\n ])\n ])\n ])\n ]))\n }), 128))\n ])\n ])), [\n [_directive_loading, _ctx.loading]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onClose\"]))\n}","\r\nclass Label{\r\n id:string //主键\r\n content:string //标签内容\r\n\r\n constructor(){\r\n this.content = ''\r\n this.id= ''\r\n }\r\n}\r\n\r\nexport class EffcollOption{\r\n content: string //选项内容\r\n id: string //主键\r\n score: number //评分\r\n serialNum: number //排序号\r\n topicId: string //题目ID\r\n \r\n constructor(){\r\n this.content = ''\r\n this.id = ''\r\n this.score = 0\r\n this.serialNum = 0\r\n this.topicId = ''\r\n }\r\n}\r\n\r\nexport class Effcoll {\r\n enabled: boolean //使用状态\r\n id: string //主键\r\n name: string //题目名称\r\n required: boolean //是否必填\r\n respondent: string //答题对象\r\n sort:number\r\n type: number //题目类型,0:单选,1:多选,2:填空,3:选星\r\n useCat: string //题目用途\r\n \r\n \r\n \r\n label:Label[] //标签\r\n option: EffcollOption[] //题目选项\r\n\r\n constructor(param? :Effcoll ){\r\n if(param){\r\n this.enabled = param.enabled\r\n this.id = param.id\r\n this.label = param.label\r\n this.name = param.name\r\n this.option = param.option\r\n this.required = param.required\r\n this.respondent = param.respondent\r\n this.type = param.type\r\n this.useCat = param.useCat\r\n this.sort = param.sort\r\n }else{\r\n this.enabled = true\r\n this.id = ''\r\n this.label = []\r\n this.name = ''\r\n this.option = [ new EffcollOption(), new EffcollOption() ]\r\n this.required = true\r\n this.respondent = '患者'\r\n this.type = 0\r\n this.useCat = '评价疗效'\r\n this.sort = 0\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n// export class TopicOption{\r\n// content: string = '' //选项内容\r\n// id: string = '' //问题ID \r\n// serialNum: number = 0 //排序号\r\n// }\r\n\r\n// //新的问卷类型\r\n// export class Topic{\r\n// id: string = '' //题目ID \r\n// name: string = ''\r\n// sort: number = 0 //题目排序 ,\r\n// type: number = 0 //题目类型。0:单选,1:多选,2:填空,3:选星\r\n// option:TopicOption[] = [] //选项 ,\r\n\r\n// constructor(){\r\n// this.option.push(new TopicOption())\r\n// this.option.push(new TopicOption())\r\n// }\r\n// }\r\n","\r\nimport { defineComponent, reactive, ref, toRefs, watch } from 'vue';\r\n\r\nimport { ElMessageBox, ElNotification, ElMessage } from 'element-plus'\r\nimport { Delete, CloseBold } from '@element-plus/icons-vue'\r\n\r\nimport { getTocpic, saveTocpic, deleteTocpic } from '@r/api/effcoll'\r\nimport { getTopicList, saveTopicList } from '@r/api/xingling'\r\nimport { Effcoll, EffcollOption } from '@u/class/effcoll'\r\nimport { effcollType, ALPHA, ImgUrlFix } from '@u/contant'\r\nimport Brain_bak from '@/components/public/brain/brain_bak.vue';\r\nimport empty from '@c/public/empty/empty.vue'\r\n\r\nexport default defineComponent({\r\n name: \"effcoll\",\r\n emits: {\r\n 'update:dialogVisible': null,\r\n },\r\n components: {\r\n Delete, CloseBold,empty,\r\n },\r\n props: {\r\n dialogVisible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n dialecticalID: {\r\n type: String,\r\n default: ''\r\n },\r\n isLock: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n setup(props, { emit }) {\r\n const { dialogVisible, isLock } = toRefs(props)\r\n const dialogVisible2 = ref(dialogVisible.value)\r\n const loading = ref(false)\r\n const effcollList = reactive([])\r\n\r\n const radio1 = ref('完全按照医嘱服用')\r\n const radio2 = ref('好多了')\r\n const radio3 = ref('好了些')\r\n const radio4 = ref('好了些')\r\n\r\n //关闭本弹窗\r\n const onClose = () => {\r\n emit('update:dialogVisible', false)\r\n // dialogVisible2.value = false\r\n }\r\n\r\n //增加问题\r\n const addTopicHandle = () => {\r\n if (effcollList.length < 10) {\r\n const tem = new Effcoll()\r\n effcollList.push(tem)\r\n } else {\r\n ElMessage('只可以有10道问题')\r\n }\r\n }\r\n\r\n //删除问题\r\n const deleteTopicHandle = (index: number) => {\r\n effcollList.splice(index, 1)\r\n }\r\n\r\n // 增加选项\r\n const addEffcollOptionHandle = (index: number) => {\r\n const option = new EffcollOption()\r\n effcollList[index].option.push(option)\r\n }\r\n\r\n // 删除选项\r\n const removeEffcollOption = (index: number, idx: number) => {\r\n effcollList[index].option.splice(idx, 1)\r\n }\r\n\r\n // 保存问卷\r\n const onConfirm = () => {\r\n const re:Effcoll[] = JSON.parse(JSON.stringify(effcollList))\r\n\r\n let flag = false;\r\n let str = ''\r\n\r\n for(let i=0; i< re.length; i++){\r\n const item:Effcoll = re[i]\r\n\r\n item.option.forEach((option)=>{\r\n if(option.content.trim() === ''){\r\n flag = true\r\n str = `第${i+1}个问题,请补充完选项内容,或删除空选项`\r\n }\r\n })\r\n\r\n if(item.name.trim() === ''){\r\n flag = true\r\n str = `第${i+1}个问题,请补充完题目标题,或删除该题目`\r\n }\r\n\r\n if(flag){\r\n break;\r\n }\r\n }\r\n\r\n if(flag){\r\n ElNotification({\r\n title: '提示',\r\n message: str,\r\n position: 'top-right',\r\n type: 'warning',\r\n duration: 3000,\r\n })\r\n return\r\n }\r\n\r\n re.map((item:Effcoll, index:number)=>{\r\n item.sort = index + 1\r\n\r\n item.option.map((item: EffcollOption, idx:number)=>{\r\n item.serialNum = idx + 1\r\n })\r\n\r\n })\r\n\r\n\r\n\r\n\r\n loading.value = true\r\n saveTopicList({\r\n data:{\r\n topicListId:props.dialecticalID,\r\n topicList:re\r\n }\r\n }).then((data:any)=>{\r\n ElNotification({\r\n title: '提示',\r\n message: '保存成功',\r\n position: 'top-right',\r\n duration: 3000,\r\n type: 'success',\r\n })\r\n loading.value = false\r\n emit('update:dialogVisible', false)\r\n dialogVisible2.value = false\r\n }).catch((data:any) => {\r\n ElNotification({\r\n title: '提示',\r\n message: '保存失败,请稍后再试',\r\n position: 'top-right',\r\n duration: 3000,\r\n type: 'error',\r\n })\r\n loading.value = false\r\n })\r\n }\r\n\r\n watch(() => props.dialogVisible, async (val) => {\r\n dialogVisible2.value = val\r\n if (dialogVisible2.value) {\r\n\r\n loading.value = true\r\n getTopicList({\r\n data: {\r\n topicListId: props.dialecticalID,\r\n _times: new Date().getTime()\r\n }\r\n }).then((re: any) => {\r\n loading.value = false\r\n effcollList.splice(0, effcollList.length, ...re.topicList)\r\n }).catch((re: any) => {\r\n loading.value = false\r\n effcollList.splice(0, effcollList.length)\r\n ElNotification({\r\n title: '提示',\r\n message: '获取问卷失败,请稍后再试',\r\n position: 'top-right',\r\n duration: 3000,\r\n type: 'error',\r\n })\r\n })\r\n }\r\n })\r\n\r\n\r\n return {\r\n dialogVisible2,\r\n isLock,\r\n loading,\r\n effcollList,\r\n effcollType,\r\n ALPHA,\r\n ImgUrlFix,\r\n radio1,radio2,radio3,radio4,\r\n onClose,\r\n onConfirm,\r\n addTopicHandle, deleteTopicHandle,\r\n addEffcollOptionHandle,\r\n removeEffcollOption,\r\n\r\n }\r\n },\r\n})\r\n","import { render } from \"./effcoll.vue?vue&type=template&id=29763974&ts=true\"\nimport script from \"./effcoll.vue?vue&type=script&lang=ts\"\nexport * from \"./effcoll.vue?vue&type=script&lang=ts\"\n\nimport \"./effcoll.vue?vue&type=style&index=0&id=29763974&lang=scss\"\n\nimport exportComponent from \"D:\\\\公司项目\\\\T-CAS\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./dataStatistics.vue?vue&type=style&index=0&id=5b016090&lang=scss&scoped=true\"","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Delete\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar _delete = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { _delete as default };\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as clazzUtil from '../util/clazz.js';\n\nvar Scale =\n/** @class */\nfunction () {\n function Scale(setting) {\n this._setting = setting || {};\n this._extent = [Infinity, -Infinity];\n }\n\n Scale.prototype.getSetting = function (name) {\n return this._setting[name];\n };\n /**\n * Set extent from data\n */\n\n\n Scale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n };\n /**\n * Set extent from data\n */\n\n\n Scale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n };\n /**\n * Get extent\n *\n * Extent is always in increase order.\n */\n\n\n Scale.prototype.getExtent = function () {\n return this._extent.slice();\n };\n /**\n * Set extent\n */\n\n\n Scale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n };\n /**\n * If value is in extent range\n */\n\n\n Scale.prototype.isInExtentRange = function (value) {\n return this._extent[0] <= value && this._extent[1] >= value;\n };\n /**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\n Scale.prototype.isBlank = function () {\n return this._isBlank;\n };\n /**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\n Scale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n };\n\n return Scale;\n}();\n\nclazzUtil.enableClassManagement(Scale);\nexport default Scale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { each, isString } from 'zrender/lib/core/util.js';\nimport { isSeriesDataSchema } from './SeriesDataSchema.js';\n/**\n * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param seriesModel\n * @param dimensionsInput The same as the input of .\n * The input will be modified.\n * @param opt\n * @param opt.stackedCoordDimension Specify a coord dimension if needed.\n * @param opt.byIndex=false\n * @return calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\n\nexport function enableDataStack(seriesModel, dimensionsInput, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension;\n var dimensionDefineList;\n var schema;\n var store;\n\n if (isLegacyDimensionsInput(dimensionsInput)) {\n dimensionDefineList = dimensionsInput;\n } else {\n schema = dimensionsInput.schema;\n dimensionDefineList = schema.dimensions;\n store = dimensionsInput.store;\n } // Compatibal: when `stack` is set as '', do not stack.\n\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionDefineList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionDefineList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n // Also need to use seriesModel.id as postfix because different\n // series may share same data store. The stack dimension needs to be distinguished.\n stackResultDimension = '__\\0ecstackresult_' + seriesModel.id;\n stackedOverDimension = '__\\0ecstackedover_' + seriesModel.id; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex_1 = 0;\n each(dimensionDefineList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\n stackedDimCoordIndex_1++;\n }\n });\n var stackedOverDimensionDefine = {\n name: stackResultDimension,\n coordDim: stackedDimCoordDim_1,\n coordDimIndex: stackedDimCoordIndex_1,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true,\n storeDimIndex: dimensionDefineList.length\n };\n var stackResultDimensionDefine = {\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex_1 + 1,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true,\n storeDimIndex: dimensionDefineList.length + 1\n };\n\n if (schema) {\n if (store) {\n stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType);\n stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType);\n }\n\n schema.appendCalculationDimension(stackedOverDimensionDefine);\n schema.appendCalculationDimension(stackResultDimensionDefine);\n } else {\n dimensionDefineList.push(stackedOverDimensionDefine);\n dimensionDefineList.push(stackResultDimensionDefine);\n }\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n\nfunction isLegacyDimensionsInput(dimensionsInput) {\n return !isSeriesDataSchema(dimensionsInput.schema);\n}\n\nexport function isDimensionStacked(data, stackedDim) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\n}\nexport function getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO: move labels out of viewport.\nimport { BoundingRect, updateProps, initProps, isElementRemoved } from '../util/graphic.js';\nimport { getECData } from '../util/innerStore.js';\nimport { parsePercent } from '../util/number.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport { updateLabelLinePoints, setLabelLineStyle, getLabelLineStatesModels } from './labelGuideHelper.js';\nimport { makeInner } from '../util/model.js';\nimport { retrieve2, each, keys, isFunction, filter, indexOf } from 'zrender/lib/core/util.js';\nimport { prepareLayoutList, hideOverlap, shiftLayoutOnX, shiftLayoutOnY } from './labelLayoutHelper.js';\nimport { labelInner, animateLabelValue } from './labelStyle.js';\n\nfunction cloneArr(points) {\n if (points) {\n var newPoints = [];\n\n for (var i = 0; i < points.length; i++) {\n newPoints.push(points[i].slice());\n }\n\n return newPoints;\n }\n}\n\nfunction prepareLayoutCallbackParams(labelItem, hostEl) {\n var label = labelItem.label;\n var labelLine = hostEl && hostEl.getTextGuideLine();\n return {\n dataIndex: labelItem.dataIndex,\n dataType: labelItem.dataType,\n seriesIndex: labelItem.seriesModel.seriesIndex,\n text: labelItem.label.style.text,\n rect: labelItem.hostRect,\n labelRect: labelItem.rect,\n // x: labelAttr.x,\n // y: labelAttr.y,\n align: label.style.align,\n verticalAlign: label.style.verticalAlign,\n labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\n };\n}\n\nvar LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\nvar dummyTransformable = new Transformable();\nvar labelLayoutInnerStore = makeInner();\nvar labelLineAnimationStore = makeInner();\n\nfunction extendWithKeys(target, source, keys) {\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (source[key] != null) {\n target[key] = source[key];\n }\n }\n}\n\nvar LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\n\nvar LabelManager =\n/** @class */\nfunction () {\n function LabelManager() {\n this._labelList = [];\n this._chartViewList = [];\n }\n\n LabelManager.prototype.clearLabels = function () {\n this._labelList = [];\n this._chartViewList = [];\n };\n /**\n * Add label to manager\n */\n\n\n LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\n var labelStyle = label.style;\n var hostEl = label.__hostTarget;\n var textConfig = hostEl.textConfig || {}; // TODO: If label is in other state.\n\n var labelTransform = label.getComputedTransform();\n var labelRect = label.getBoundingRect().plain();\n BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\n\n if (labelTransform) {\n dummyTransformable.setLocalTransform(labelTransform);\n } else {\n // Identity transform.\n dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0;\n dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\n }\n\n var host = label.__hostTarget;\n var hostRect;\n\n if (host) {\n hostRect = host.getBoundingRect().plain();\n var transform = host.getComputedTransform();\n BoundingRect.applyTransform(hostRect, hostRect, transform);\n }\n\n var labelGuide = hostRect && host.getTextGuideLine();\n\n this._labelList.push({\n label: label,\n labelLine: labelGuide,\n seriesModel: seriesModel,\n dataIndex: dataIndex,\n dataType: dataType,\n layoutOption: layoutOption,\n computedLayoutOption: null,\n rect: labelRect,\n hostRect: hostRect,\n // Label with lower priority will be hidden when overlapped\n // Use rect size as default priority\n priority: hostRect ? hostRect.width * hostRect.height : 0,\n // Save default label attributes.\n // For restore if developers want get back to default value in callback.\n defaultAttr: {\n ignore: label.ignore,\n labelGuideIgnore: labelGuide && labelGuide.ignore,\n x: dummyTransformable.x,\n y: dummyTransformable.y,\n scaleX: dummyTransformable.scaleX,\n scaleY: dummyTransformable.scaleY,\n rotation: dummyTransformable.rotation,\n style: {\n x: labelStyle.x,\n y: labelStyle.y,\n align: labelStyle.align,\n verticalAlign: labelStyle.verticalAlign,\n width: labelStyle.width,\n height: labelStyle.height,\n fontSize: labelStyle.fontSize\n },\n cursor: label.cursor,\n attachedPos: textConfig.position,\n attachedRot: textConfig.rotation\n }\n });\n };\n\n LabelManager.prototype.addLabelsOfSeries = function (chartView) {\n var _this = this;\n\n this._chartViewList.push(chartView);\n\n var seriesModel = chartView.__model;\n var layoutOption = seriesModel.get('labelLayout');\n /**\n * Ignore layouting if it's not specified anything.\n */\n\n if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\n return;\n }\n\n chartView.group.traverse(function (child) {\n if (child.ignore) {\n return true; // Stop traverse descendants.\n } // Only support label being hosted on graphic elements.\n\n\n var textEl = child.getTextContent();\n var ecData = getECData(child); // Can only attach the text on the element with dataIndex\n\n if (textEl && !textEl.disableLabelLayout) {\n _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\n }\n });\n };\n\n LabelManager.prototype.updateLayoutConfig = function (api) {\n var width = api.getWidth();\n var height = api.getHeight();\n\n function createDragHandler(el, labelLineModel) {\n return function () {\n updateLabelLinePoints(el, labelLineModel);\n };\n }\n\n for (var i = 0; i < this._labelList.length; i++) {\n var labelItem = this._labelList[i];\n var label = labelItem.label;\n var hostEl = label.__hostTarget;\n var defaultLabelAttr = labelItem.defaultAttr;\n var layoutOption = void 0; // TODO A global layout option?\n\n if (isFunction(labelItem.layoutOption)) {\n layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\n } else {\n layoutOption = labelItem.layoutOption;\n }\n\n layoutOption = layoutOption || {};\n labelItem.computedLayoutOption = layoutOption;\n var degreeToRadian = Math.PI / 180; // TODO hostEl should always exists.\n // Or label should not have parent because the x, y is all in global space.\n\n if (hostEl) {\n hostEl.setTextConfig({\n // Force to set local false.\n local: false,\n // Ignore position and rotation config on the host el if x or y is changed.\n position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos,\n // Ignore rotation config on the host el if rotation is changed.\n rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\n offset: [layoutOption.dx || 0, layoutOption.dy || 0]\n });\n }\n\n var needsUpdateLabelLine = false;\n\n if (layoutOption.x != null) {\n // TODO width of chart view.\n label.x = parsePercent(layoutOption.x, width);\n label.setStyle('x', 0); // Ignore movement in style. TODO: origin.\n\n needsUpdateLabelLine = true;\n } else {\n label.x = defaultLabelAttr.x;\n label.setStyle('x', defaultLabelAttr.style.x);\n }\n\n if (layoutOption.y != null) {\n // TODO height of chart view.\n label.y = parsePercent(layoutOption.y, height);\n label.setStyle('y', 0); // Ignore movement in style.\n\n needsUpdateLabelLine = true;\n } else {\n label.y = defaultLabelAttr.y;\n label.setStyle('y', defaultLabelAttr.style.y);\n }\n\n if (layoutOption.labelLinePoints) {\n var guideLine = hostEl.getTextGuideLine();\n\n if (guideLine) {\n guideLine.setShape({\n points: layoutOption.labelLinePoints\n }); // Not update\n\n needsUpdateLabelLine = false;\n }\n }\n\n var labelLayoutStore = labelLayoutInnerStore(label);\n labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\n label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\n label.scaleX = defaultLabelAttr.scaleX;\n label.scaleY = defaultLabelAttr.scaleY;\n\n for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\n var key = LABEL_OPTION_TO_STYLE_KEYS[k];\n label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\n }\n\n if (layoutOption.draggable) {\n label.draggable = true;\n label.cursor = 'move';\n\n if (hostEl) {\n var hostModel = labelItem.seriesModel;\n\n if (labelItem.dataIndex != null) {\n var data = labelItem.seriesModel.getData(labelItem.dataType);\n hostModel = data.getItemModel(labelItem.dataIndex);\n }\n\n label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\n }\n } else {\n // TODO Other drag functions?\n label.off('drag');\n label.cursor = defaultLabelAttr.cursor;\n }\n }\n };\n\n LabelManager.prototype.layout = function (api) {\n var width = api.getWidth();\n var height = api.getHeight();\n var labelList = prepareLayoutList(this._labelList);\n var labelsNeedsAdjustOnX = filter(labelList, function (item) {\n return item.layoutOption.moveOverlap === 'shiftX';\n });\n var labelsNeedsAdjustOnY = filter(labelList, function (item) {\n return item.layoutOption.moveOverlap === 'shiftY';\n });\n shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\n shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\n var labelsNeedsHideOverlap = filter(labelList, function (item) {\n return item.layoutOption.hideOverlap;\n });\n hideOverlap(labelsNeedsHideOverlap);\n };\n /**\n * Process all labels. Not only labels with layoutOption.\n */\n\n\n LabelManager.prototype.processLabelsOverall = function () {\n var _this = this;\n\n each(this._chartViewList, function (chartView) {\n var seriesModel = chartView.__model;\n var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\n var animationEnabled = seriesModel.isAnimationEnabled();\n chartView.group.traverse(function (child) {\n if (child.ignore && !child.forceLabelAnimation) {\n return true; // Stop traverse descendants.\n }\n\n var needsUpdateLabelLine = !ignoreLabelLineUpdate;\n var label = child.getTextContent();\n\n if (!needsUpdateLabelLine && label) {\n needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\n }\n\n if (needsUpdateLabelLine) {\n _this._updateLabelLine(child, seriesModel);\n }\n\n if (animationEnabled) {\n _this._animateLabels(child, seriesModel);\n }\n });\n });\n };\n\n LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\n // Only support label being hosted on graphic elements.\n var textEl = el.getTextContent(); // Update label line style.\n\n var ecData = getECData(el);\n var dataIndex = ecData.dataIndex; // Only support labelLine on the labels represent data.\n\n if (textEl && dataIndex != null) {\n var data = seriesModel.getData(ecData.dataType);\n var itemModel = data.getItemModel(dataIndex);\n var defaultStyle = {};\n var visualStyle = data.getItemVisual(dataIndex, 'style');\n var visualType = data.getVisual('drawType'); // Default to be same with main color\n\n defaultStyle.stroke = visualStyle[visualType];\n var labelLineModel = itemModel.getModel('labelLine');\n setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\n updateLabelLinePoints(el, labelLineModel);\n }\n };\n\n LabelManager.prototype._animateLabels = function (el, seriesModel) {\n var textEl = el.getTextContent();\n var guideLine = el.getTextGuideLine(); // Animate\n\n if (textEl // `forceLabelAnimation` has the highest priority\n && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) {\n var layoutStore = labelLayoutInnerStore(textEl);\n var oldLayout = layoutStore.oldLayout;\n var ecData = getECData(el);\n var dataIndex = ecData.dataIndex;\n var newProps = {\n x: textEl.x,\n y: textEl.y,\n rotation: textEl.rotation\n };\n var data = seriesModel.getData(ecData.dataType);\n\n if (!oldLayout) {\n textEl.attr(newProps); // Disable fade in animation if value animation is enabled.\n\n if (!labelInner(textEl).valueAnimation) {\n var oldOpacity = retrieve2(textEl.style.opacity, 1); // Fade in animation\n\n textEl.style.opacity = 0;\n initProps(textEl, {\n style: {\n opacity: oldOpacity\n }\n }, seriesModel, dataIndex);\n }\n } else {\n textEl.attr(oldLayout); // Make sure the animation from is in the right status.\n\n var prevStates = el.prevStates;\n\n if (prevStates) {\n if (indexOf(prevStates, 'select') >= 0) {\n textEl.attr(layoutStore.oldLayoutSelect);\n }\n\n if (indexOf(prevStates, 'emphasis') >= 0) {\n textEl.attr(layoutStore.oldLayoutEmphasis);\n }\n }\n\n updateProps(textEl, newProps, seriesModel, dataIndex);\n }\n\n layoutStore.oldLayout = newProps;\n\n if (textEl.states.select) {\n var layoutSelect = layoutStore.oldLayoutSelect = {};\n extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\n extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\n }\n\n if (textEl.states.emphasis) {\n var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\n extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\n extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\n }\n\n animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel);\n }\n\n if (guideLine && !guideLine.ignore && !guideLine.invisible) {\n var layoutStore = labelLineAnimationStore(guideLine);\n var oldLayout = layoutStore.oldLayout;\n var newLayout = {\n points: guideLine.shape.points\n };\n\n if (!oldLayout) {\n guideLine.setShape(newLayout);\n guideLine.style.strokePercent = 0;\n initProps(guideLine, {\n style: {\n strokePercent: 1\n }\n }, seriesModel);\n } else {\n guideLine.attr({\n shape: oldLayout\n });\n updateProps(guideLine, {\n shape: newLayout\n }, seriesModel);\n }\n\n layoutStore.oldLayout = newLayout;\n }\n };\n\n return LabelManager;\n}();\n\nexport default LabelManager;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { makeInner } from '../util/model.js';\nimport LabelManager from './LabelManager.js';\nvar getLabelManager = makeInner();\nexport function installLabelLayout(registers) {\n registers.registerUpdateLifecycle('series:beforeupdate', function (ecModel, api, params) {\n // TODO api provide an namespace that can save stuff per instance\n var labelManager = getLabelManager(api).labelManager;\n\n if (!labelManager) {\n labelManager = getLabelManager(api).labelManager = new LabelManager();\n }\n\n labelManager.clearLabels();\n });\n registers.registerUpdateLifecycle('series:layoutlabels', function (ecModel, api, params) {\n var labelManager = getLabelManager(api).labelManager;\n params.updatedSeries.forEach(function (series) {\n labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series));\n });\n labelManager.updateLayoutConfig(api);\n labelManager.layout(api);\n labelManager.processLabelsOverall();\n });\n}","import { __extends } from \"tslib\";\nimport * as util from '../core/util.js';\nimport { devicePixelRatio } from '../config.js';\nimport Eventful from '../core/Eventful.js';\nimport { getCanvasGradient } from './helper.js';\nimport { createCanvasPattern } from './graphic.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { platformApi } from '../core/platform.js';\nfunction createDom(id, painter, dpr) {\n var newDom = platformApi.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n if (newDomStyle) {\n newDomStyle.position = 'absolute';\n newDomStyle.left = '0';\n newDomStyle.top = '0';\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n;\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, painter, dpr) {\n var _this = _super.call(this) || this;\n _this.motionBlur = false;\n _this.lastFrameAlpha = 0.7;\n _this.dpr = 1;\n _this.virtual = false;\n _this.config = {};\n _this.incremental = false;\n _this.zlevel = 0;\n _this.maxRepaintRectCount = 5;\n _this.__dirty = true;\n _this.__firstTimePaint = true;\n _this.__used = false;\n _this.__drawIndex = 0;\n _this.__startIndex = 0;\n _this.__endIndex = 0;\n _this.__prevStartIndex = null;\n _this.__prevEndIndex = null;\n var dom;\n dpr = dpr || devicePixelRatio;\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n }\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n _this.id = id;\n _this.dom = dom;\n var domStyle = dom.style;\n if (domStyle) {\n util.disableUserSelect(dom);\n dom.onselectstart = function () { return false; };\n domStyle.padding = '0';\n domStyle.margin = '0';\n domStyle.borderWidth = '0';\n }\n _this.painter = painter;\n _this.dpr = dpr;\n return _this;\n }\n Layer.prototype.getElementCount = function () {\n return this.__endIndex - this.__startIndex;\n };\n Layer.prototype.afterBrush = function () {\n this.__prevStartIndex = this.__startIndex;\n this.__prevEndIndex = this.__endIndex;\n };\n Layer.prototype.initContext = function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n };\n Layer.prototype.setUnpainted = function () {\n this.__firstTimePaint = true;\n };\n Layer.prototype.createBackBuffer = function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n };\n Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\n if (this.__firstTimePaint) {\n this.__firstTimePaint = false;\n return null;\n }\n var mergedRepaintRects = [];\n var maxRepaintRectCount = this.maxRepaintRectCount;\n var full = false;\n var pendingRect = new BoundingRect(0, 0, 0, 0);\n function addRectToMergePool(rect) {\n if (!rect.isFinite() || rect.isZero()) {\n return;\n }\n if (mergedRepaintRects.length === 0) {\n var boundingRect = new BoundingRect(0, 0, 0, 0);\n boundingRect.copy(rect);\n mergedRepaintRects.push(boundingRect);\n }\n else {\n var isMerged = false;\n var minDeltaArea = Infinity;\n var bestRectToMergeIdx = 0;\n for (var i = 0; i < mergedRepaintRects.length; ++i) {\n var mergedRect = mergedRepaintRects[i];\n if (mergedRect.intersect(rect)) {\n var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\n pendingRect_1.copy(mergedRect);\n pendingRect_1.union(rect);\n mergedRepaintRects[i] = pendingRect_1;\n isMerged = true;\n break;\n }\n else if (full) {\n pendingRect.copy(rect);\n pendingRect.union(mergedRect);\n var aArea = rect.width * rect.height;\n var bArea = mergedRect.width * mergedRect.height;\n var pendingArea = pendingRect.width * pendingRect.height;\n var deltaArea = pendingArea - aArea - bArea;\n if (deltaArea < minDeltaArea) {\n minDeltaArea = deltaArea;\n bestRectToMergeIdx = i;\n }\n }\n }\n if (full) {\n mergedRepaintRects[bestRectToMergeIdx].union(rect);\n isMerged = true;\n }\n if (!isMerged) {\n var boundingRect = new BoundingRect(0, 0, 0, 0);\n boundingRect.copy(rect);\n mergedRepaintRects.push(boundingRect);\n }\n if (!full) {\n full = mergedRepaintRects.length >= maxRepaintRectCount;\n }\n }\n }\n for (var i = this.__startIndex; i < this.__endIndex; ++i) {\n var el = displayList[i];\n if (el) {\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n var prevRect = el.__isRendered && ((el.__dirty & REDRAW_BIT) || !shouldPaint)\n ? el.getPrevPaintRect()\n : null;\n if (prevRect) {\n addRectToMergePool(prevRect);\n }\n var curRect = shouldPaint && ((el.__dirty & REDRAW_BIT) || !el.__isRendered)\n ? el.getPaintRect()\n : null;\n if (curRect) {\n addRectToMergePool(curRect);\n }\n }\n }\n for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\n var el = prevList[i];\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\n var prevRect = el.getPrevPaintRect();\n if (prevRect) {\n addRectToMergePool(prevRect);\n }\n }\n }\n var hasIntersections;\n do {\n hasIntersections = false;\n for (var i = 0; i < mergedRepaintRects.length;) {\n if (mergedRepaintRects[i].isZero()) {\n mergedRepaintRects.splice(i, 1);\n continue;\n }\n for (var j = i + 1; j < mergedRepaintRects.length;) {\n if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\n hasIntersections = true;\n mergedRepaintRects[i].union(mergedRepaintRects[j]);\n mergedRepaintRects.splice(j, 1);\n }\n else {\n j++;\n }\n }\n i++;\n }\n } while (hasIntersections);\n this._paintRects = mergedRepaintRects;\n return mergedRepaintRects;\n };\n Layer.prototype.debugGetPaintRects = function () {\n return (this._paintRects || []).slice();\n };\n Layer.prototype.resize = function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n dom.width = width * dpr;\n dom.height = height * dpr;\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n };\n Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n var self = this;\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n var domBack = this.domBack;\n function doClear(x, y, width, height) {\n ctx.clearRect(x, y, width, height);\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern = void 0;\n if (util.isGradientObject(clearColor)) {\n clearColorGradientOrPattern = clearColor.__canvasGradient\n || getCanvasGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n }\n else if (util.isImagePatternObject(clearColor)) {\n clearColor.scaleX = clearColor.scaleX || dpr;\n clearColor.scaleY = clearColor.scaleY || dpr;\n clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\n dirty: function () {\n self.setUnpainted();\n self.__painter.refresh();\n }\n });\n }\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(x, y, width, height);\n ctx.restore();\n }\n if (haveMotionBLur) {\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, x, y, width, height);\n ctx.restore();\n }\n }\n ;\n if (!repaintRects || haveMotionBLur) {\n doClear(0, 0, width, height);\n }\n else if (repaintRects.length) {\n util.each(repaintRects, function (rect) {\n doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n });\n }\n };\n return Layer;\n}(Eventful));\nexport default Layer;\n","import { devicePixelRatio } from '../config.js';\nimport * as util from '../core/util.js';\nimport Layer from './Layer.js';\nimport requestAnimationFrame from '../animation/requestAnimationFrame.js';\nimport env from '../core/env.js';\nimport { brush, brushSingle } from './graphic.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { getSize } from './helper.js';\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n if (layer.__builtin__) {\n return true;\n }\n if (typeof (layer.resize) !== 'function'\n || typeof (layer.refresh) !== 'function') {\n return false;\n }\n return true;\n}\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div');\n domRoot.style.cssText = [\n 'position:relative',\n 'width:' + width + 'px',\n 'height:' + height + 'px',\n 'padding:0',\n 'margin:0',\n 'border-width:0'\n ].join(';') + ';';\n return domRoot;\n}\nvar CanvasPainter = (function () {\n function CanvasPainter(root, storage, opts, id) {\n this.type = 'canvas';\n this._zlevelList = [];\n this._prevDisplayList = [];\n this._layers = {};\n this._layerConfig = {};\n this._needsManuallyCompositing = false;\n this.type = 'canvas';\n var singleCanvas = !root.nodeName\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n this._singleCanvas = singleCanvas;\n this.root = root;\n var rootStyle = root.style;\n if (rootStyle) {\n util.disableUserSelect(root);\n root.innerHTML = '';\n }\n this.storage = storage;\n var zlevelList = this._zlevelList;\n this._prevDisplayList = [];\n var layers = this._layers;\n if (!singleCanvas) {\n this._width = getSize(root, 0, opts);\n this._height = getSize(root, 1, opts);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n }\n else {\n var rootCanvas = root;\n var width = rootCanvas.width;\n var height = rootCanvas.height;\n if (opts.width != null) {\n width = opts.width;\n }\n if (opts.height != null) {\n height = opts.height;\n }\n this.dpr = opts.devicePixelRatio || 1;\n rootCanvas.width = width * this.dpr;\n rootCanvas.height = height * this.dpr;\n this._width = width;\n this._height = height;\n var mainLayer = new Layer(rootCanvas, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext();\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL;\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n }\n CanvasPainter.prototype.getType = function () {\n return 'canvas';\n };\n CanvasPainter.prototype.isSingleCanvas = function () {\n return this._singleCanvas;\n };\n CanvasPainter.prototype.getViewportRoot = function () {\n return this._domRoot;\n };\n CanvasPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n };\n CanvasPainter.prototype.refresh = function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var prevList = this._prevDisplayList;\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n this._paintList(list, prevList, paintAll, this._redrawId);\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n if (this._opts.useDirtyRect) {\n this._prevDisplayList = list.slice();\n }\n return this;\n };\n CanvasPainter.prototype.refreshHover = function () {\n this._paintHoverList(this.storage.getDisplayList(false));\n };\n CanvasPainter.prototype._paintHoverList = function (list) {\n var len = list.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n if (!len) {\n return;\n }\n var scope = {\n inHover: true,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var ctx;\n for (var i = 0; i < len; i++) {\n var el = list[i];\n if (el.__inHover) {\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n if (!ctx) {\n ctx = hoverLayer.ctx;\n ctx.save();\n }\n brush(ctx, el, scope, i === len - 1);\n }\n }\n if (ctx) {\n ctx.restore();\n }\n };\n CanvasPainter.prototype.getHoverLayer = function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n };\n CanvasPainter.prototype.paintOne = function (ctx, el) {\n brushSingle(ctx, el);\n };\n CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n paintAll = paintAll || false;\n this._updateLayerStatus(list);\n var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n if (needsRefreshHover) {\n this._paintHoverList(list);\n }\n if (!finished) {\n var self_1 = this;\n requestAnimationFrame(function () {\n self_1._paintList(list, prevList, paintAll, redrawId);\n });\n }\n else {\n this.eachLayer(function (layer) {\n layer.afterBrush && layer.afterBrush();\n });\n }\n };\n CanvasPainter.prototype._compositeManually = function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height);\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n };\n CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\n var _this = this;\n var layerList = [];\n var useDirtyRect = this._opts.useDirtyRect;\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n if (layer.__builtin__\n && layer !== this._hoverlayer\n && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n var finished = true;\n var needsRefreshHover = false;\n var _loop_1 = function (k) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var repaintRects = useDirtyRect\n && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this_1._zlevelList[0]\n ? this_1._backgroundColor : null;\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor, repaintRects);\n }\n else if (start === layer.__startIndex) {\n var firstEl = list[start];\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor, repaintRects);\n }\n }\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n var i;\n var repaint = function (repaintRect) {\n var scope = {\n inHover: false,\n allClipped: false,\n prevEl: null,\n viewWidth: _this._width,\n viewHeight: _this._height\n };\n for (i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n if (el.__inHover) {\n needsRefreshHover = true;\n }\n _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\n if (useTimer) {\n var dTime = Date.now() - startTime;\n if (dTime > 15) {\n break;\n }\n }\n }\n if (scope.prevElClipPaths) {\n ctx.restore();\n }\n };\n if (repaintRects) {\n if (repaintRects.length === 0) {\n i = layer.__endIndex;\n }\n else {\n var dpr = this_1.dpr;\n for (var r = 0; r < repaintRects.length; ++r) {\n var rect = repaintRects[r];\n ctx.save();\n ctx.beginPath();\n ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n ctx.clip();\n repaint(rect);\n ctx.restore();\n }\n }\n }\n else {\n ctx.save();\n repaint();\n ctx.restore();\n }\n layer.__drawIndex = i;\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n };\n var this_1 = this;\n for (var k = 0; k < layerList.length; k++) {\n _loop_1(k);\n }\n if (env.wxa) {\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n return {\n finished: finished,\n needsRefreshHover: needsRefreshHover\n };\n };\n CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\n var ctx = currentLayer.ctx;\n if (useDirtyRect) {\n var paintRect = el.getPaintRect();\n if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\n brush(ctx, el, scope, isLast);\n el.setPrevPaintRect(paintRect);\n }\n }\n else {\n brush(ctx, el, scope, isLast);\n }\n };\n CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n var layer = this._layers[zlevel];\n if (!layer) {\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n }\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n if (virtual) {\n layer.virtual = virtual;\n }\n this.insertLayer(zlevel, layer);\n layer.initContext();\n }\n return layer;\n };\n CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var domRoot = this._domRoot;\n var prevLayer = null;\n var i = -1;\n if (layersMap[zlevel]) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('ZLevel ' + zlevel + ' has been used already');\n }\n return;\n }\n if (!isLayerValid(layer)) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('Layer of zlevel ' + zlevel + ' is not valid');\n }\n return;\n }\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel\n && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n prevLayer = layersMap[zlevelList[i]];\n }\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer;\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n }\n else {\n domRoot.appendChild(layer.dom);\n }\n }\n else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n }\n else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n layer.__painter = this;\n };\n CanvasPainter.prototype.eachLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n };\n CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n CanvasPainter.prototype.getLayers = function () {\n return this._layers;\n };\n CanvasPainter.prototype._updateLayerStatus = function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n prevLayer.__endIndex = idx;\n }\n }\n if (this._singleCanvas) {\n for (var i_1 = 1; i_1 < list.length; i_1++) {\n var el = list[i_1];\n if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n var i;\n for (i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer = void 0;\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n }\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n }\n else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n if (!layer.__builtin__) {\n util.logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n if (layer !== prevLayer) {\n layer.__used = true;\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n layer.__startIndex = i;\n if (!layer.incremental) {\n layer.__drawIndex = i;\n }\n else {\n layer.__drawIndex = -1;\n }\n updatePrevLayer(i);\n prevLayer = layer;\n }\n if ((el.__dirty & REDRAW_BIT) && !el.__inHover) {\n layer.__dirty = true;\n if (layer.incremental && layer.__drawIndex < 0) {\n layer.__drawIndex = i;\n }\n }\n }\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n }\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n };\n CanvasPainter.prototype.clear = function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n };\n CanvasPainter.prototype._clearLayer = function (layer) {\n layer.clear();\n };\n CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n util.each(this._layers, function (layer) {\n layer.setUnpainted();\n });\n };\n CanvasPainter.prototype.configLayer = function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n }\n else {\n util.merge(layerConfig[zlevel], config, true);\n }\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i];\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n };\n CanvasPainter.prototype.delLayer = function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n if (!layer) {\n return;\n }\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n };\n CanvasPainter.prototype.resize = function (width, height) {\n if (!this._domRoot.style) {\n if (width == null || height == null) {\n return;\n }\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n }\n else {\n var domRoot = this._domRoot;\n domRoot.style.display = 'none';\n var opts = this._opts;\n var root = this.root;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\n domRoot.style.display = '';\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n this.refresh(true);\n }\n this._width = width;\n this._height = height;\n }\n return this;\n };\n CanvasPainter.prototype.clearLayer = function (zlevel) {\n var layer = this._layers[zlevel];\n if (layer) {\n layer.clear();\n }\n };\n CanvasPainter.prototype.dispose = function () {\n this.root.innerHTML = '';\n this.root =\n this.storage =\n this._domRoot =\n this._layers = null;\n };\n CanvasPainter.prototype.getRenderedCanvas = function (opts) {\n opts = opts || {};\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n var ctx = imageLayer.ctx;\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width_1 = imageLayer.dom.width;\n var height_1 = imageLayer.dom.height;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width_1, height_1);\n }\n else if (layer.renderToCanvas) {\n ctx.save();\n layer.renderToCanvas(ctx);\n ctx.restore();\n }\n });\n }\n else {\n var scope = {\n inHover: false,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var displayList = this.storage.getDisplayList(true);\n for (var i = 0, len = displayList.length; i < len; i++) {\n var el = displayList[i];\n brush(ctx, el, scope, i === len - 1);\n }\n }\n return imageLayer.dom;\n };\n CanvasPainter.prototype.getWidth = function () {\n return this._width;\n };\n CanvasPainter.prototype.getHeight = function () {\n return this._height;\n };\n return CanvasPainter;\n}());\nexport default CanvasPainter;\n;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport CanvasPainter from 'zrender/lib/canvas/Painter.js';\nexport function install(registers) {\n registers.registerPainter('canvas', CanvasPainter);\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./dialectical.vue?vue&type=style&index=0&id=744ca021&lang=scss\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { retrieve, defaults, extend, each, isObject, map, isString, isNumber, isFunction } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport Model from '../../model/Model.js';\nimport { isRadianAroundZero, remRadian } from '../../util/number.js';\nimport { createSymbol, normalizeSymbolOffset } from '../../util/symbol.js';\nimport * as matrixUtil from 'zrender/lib/core/matrix.js';\nimport { applyTransform as v2ApplyTransform } from 'zrender/lib/core/vector.js';\nimport { shouldShowAllLabels } from '../../coord/axisHelper.js';\nimport { prepareLayoutList, hideOverlap } from '../../label/labelLayoutHelper.js';\nvar PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n */\n\nvar AxisBuilder =\n/** @class */\nfunction () {\n function AxisBuilder(axisModel, opt) {\n this.group = new graphic.Group();\n this.opt = opt;\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true,\n handleAutoShown: function () {\n return true;\n }\n }); // FIXME Not use a seperate text group?\n\n var transformGroup = new graphic.Group({\n x: opt.position[0],\n y: opt.position[1],\n rotation: opt.rotation\n }); // this.group.add(transformGroup);\n // this._transformGroup = transformGroup;\n\n transformGroup.updateTransform();\n this._transformGroup = transformGroup;\n }\n\n AxisBuilder.prototype.hasBuilder = function (name) {\n return !!builders[name];\n };\n\n AxisBuilder.prototype.add = function (name) {\n builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\n };\n\n AxisBuilder.prototype.getGroup = function () {\n return this.group;\n };\n\n AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n };\n\n AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n };\n\n AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n };\n\n return AxisBuilder;\n}();\n\n;\nvar builders = {\n axisLine: function (opt, axisModel, group, transformGroup) {\n var shown = axisModel.get(['axisLine', 'show']);\n\n if (shown === 'auto' && opt.handleAutoShown) {\n shown = opt.handleAutoShown('axisLine');\n }\n\n if (!shown) {\n return;\n }\n\n var extent = axisModel.axis.getExtent();\n var matrix = transformGroup.transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n var inverse = pt1[0] > pt2[0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\n var line = new graphic.Line({\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n });\n graphic.subPixelOptimizeLine(line.shape, line.style.lineWidth);\n line.anid = 'line';\n group.add(line);\n var arrows = axisModel.get(['axisLine', 'symbol']);\n\n if (arrows != null) {\n var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\n\n if (isString(arrows)) {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (isString(arrowSize) || isNumber(arrowSize)) {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var arrowOffset = normalizeSymbolOffset(axisModel.get(['axisLine', 'symbolOffset']) || 0, arrowSize);\n var symbolWidth_1 = arrowSize[0];\n var symbolHeight_1 = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pt = inverse ? pt2 : pt1;\n symbol.attr({\n rotation: point.rotate,\n x: pt[0] + r * Math.cos(opt.rotation),\n y: pt[1] - r * Math.sin(opt.rotation),\n silent: true,\n z2: 11\n });\n group.add(symbol);\n }\n });\n }\n },\n axisTickLabel: function (opt, axisModel, group, transformGroup) {\n var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\n var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); // This bit fixes the label overlap issue for the time chart.\n // See https://github.com/apache/echarts/issues/14266 for more.\n\n if (axisModel.get(['axisLabel', 'hideOverlap'])) {\n var labelList = prepareLayoutList(map(labelEls, function (label) {\n return {\n label: label,\n priority: label.z2,\n defaultAttr: {\n ignore: label.ignore\n }\n };\n }));\n hideOverlap(labelList);\n }\n },\n axisName: function (opt, axisModel, group, transformGroup) {\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\n var textEl = new graphic.Text({\n x: pos[0],\n y: pos[1],\n rotation: labelLayout.rotation,\n silent: AxisBuilder.isLabelSilent(axisModel),\n style: createTextStyle(textStyleModel, {\n text: name,\n font: textFont,\n overflow: 'truncate',\n width: maxWidth,\n ellipsis: ellipsis,\n fill: textStyleModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']),\n align: textStyleModel.get('align') || labelLayout.textAlign,\n verticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n }),\n z2: 1\n });\n graphic.setTooltipConfig({\n el: textEl,\n componentModel: axisModel,\n itemName: name\n });\n textEl.__fullText = name; // Id for animation\n\n textEl.anid = 'name';\n\n if (axisModel.get('triggerEvent')) {\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\n eventData.targetType = 'axisName';\n eventData.name = name;\n getECData(textEl).eventData = eventData;\n } // FIXME\n\n\n transformGroup.add(textEl);\n textEl.updateTransform();\n group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nfunction endTextLayout(rotation, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\n var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n autoBatch: true,\n silent: true\n });\n graphic.subPixelOptimizeLine(tickEl.shape, tickEl.style.lineWidth);\n tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n var shown = tickModel.get('show');\n\n if (shown === 'auto' && opt.handleAutoShown) {\n shown = opt.handleAutoShown('axisTick');\n }\n\n if (!shown || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(group, transformGroup, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = AxisBuilder.isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = axis.scale.type === 'ordinal' ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue]) {\n var rawCategoryItem = rawCategoryData[tickValue];\n\n if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\n itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\n }\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']);\n var tickCoord = axis.dataToCoord(tickValue);\n var textEl = new graphic.Text({\n x: tickCoord,\n y: opt.labelOffset + opt.labelDirection * labelMargin,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10 + (labelItem.level || 0),\n style: createTextStyle(itemLabelModel, {\n text: formattedLabel,\n align: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n verticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n fill: isFunction(textColor) ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n })\n });\n textEl.anid = 'label_' + tickValue; // Pack data for mouse event\n\n if (triggerEvent) {\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\n eventData.targetType = 'axisLabel';\n eventData.value = rawLabel;\n eventData.tickIndex = index;\n\n if (axis.type === 'category') {\n eventData.dataIndex = tickValue;\n }\n\n getECData(textEl).eventData = eventData;\n } // FIXME\n\n\n transformGroup.add(textEl);\n textEl.updateTransform();\n labelEls.push(textEl);\n group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nexport default AxisBuilder;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport * as formatUtil from '../../util/format.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport AxisBuilder from '../axis/AxisBuilder.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nexport function buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\nexport function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get(['label', 'precision']),\n formatter: axisPointerModel.get(['label', 'formatter'])\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']);\n }\n\n elOption.label = {\n // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},\n x: position[0],\n y: position[1],\n style: createTextStyle(labelModel, {\n text: text,\n font: font,\n fill: labelModel.getTextColor(),\n padding: paddings,\n backgroundColor: bgColor\n }),\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n\nexport function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel({\n value: value\n }, {\n // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params_1 = {\n value: axisHelper.getAxisRawValue(axis, {\n value: value\n }),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params_1.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params_1);\n }\n }\n\n return text;\n}\nexport function getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\nexport function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n // @ts-ignore\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin']);\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\nexport function makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\nexport function makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\nexport function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Model from '../../model/Model.js';\nimport { isNameSpecified } from '../../util/model.js';\nimport ComponentModel from '../../model/Component.js';\n\nvar getDefaultSelectorOptions = function (ecModel, type) {\n if (type === 'all') {\n return {\n type: 'all',\n title: ecModel.getLocaleModel().get(['legend', 'selector', 'all'])\n };\n } else if (type === 'inverse') {\n return {\n type: 'inverse',\n title: ecModel.getLocaleModel().get(['legend', 'selector', 'inverse'])\n };\n }\n};\n\nvar LegendModel =\n/** @class */\nfunction (_super) {\n __extends(LegendModel, _super);\n\n function LegendModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = LegendModel.type;\n _this.layoutMode = {\n type: 'box',\n // legend.width/height are maxWidth/maxHeight actually,\n // whereas realy width/height is calculated by its content.\n // (Setting {left: 10, right: 10} does not make sense).\n // So consider the case:\n // `setOption({legend: {left: 10});`\n // then `setOption({legend: {right: 10});`\n // The previous `left` should be cleared by setting `ignoreSize`.\n ignoreSize: true\n };\n return _this;\n }\n\n LegendModel.prototype.init = function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n option.selected = option.selected || {};\n\n this._updateSelector(option);\n };\n\n LegendModel.prototype.mergeOption = function (option, ecModel) {\n _super.prototype.mergeOption.call(this, option, ecModel);\n\n this._updateSelector(option);\n };\n\n LegendModel.prototype._updateSelector = function (option) {\n var selector = option.selector;\n var ecModel = this.ecModel;\n\n if (selector === true) {\n selector = option.selector = ['all', 'inverse'];\n }\n\n if (zrUtil.isArray(selector)) {\n zrUtil.each(selector, function (item, index) {\n zrUtil.isString(item) && (item = {\n type: item\n });\n selector[index] = zrUtil.merge(item, getDefaultSelectorOptions(ecModel, item.type));\n });\n }\n };\n\n LegendModel.prototype.optionUpdated = function () {\n this._updateData(this.ecModel);\n\n var legendData = this._data; // If selectedMode is single, try to select one\n\n if (legendData[0] && this.get('selectedMode') === 'single') {\n var hasSelected = false; // If has any selected in option.selected\n\n for (var i = 0; i < legendData.length; i++) {\n var name_1 = legendData[i].get('name');\n\n if (this.isSelected(name_1)) {\n // Force to unselect others\n this.select(name_1);\n hasSelected = true;\n break;\n }\n } // Try select the first if selectedMode is single\n\n\n !hasSelected && this.select(legendData[0].get('name'));\n }\n };\n\n LegendModel.prototype._updateData = function (ecModel) {\n var potentialData = [];\n var availableNames = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var seriesName = seriesModel.name;\n availableNames.push(seriesName);\n var isPotential;\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n var names = provider.getAllNames();\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n availableNames = availableNames.concat(names);\n }\n\n if (names.length) {\n potentialData = potentialData.concat(names);\n } else {\n isPotential = true;\n }\n } else {\n isPotential = true;\n }\n\n if (isPotential && isNameSpecified(seriesModel)) {\n potentialData.push(seriesModel.name);\n }\n });\n /**\n * @type {Array.}\n * @private\n */\n\n this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n // which is convinient for user preparing option.\n\n var rawData = this.get('data') || potentialData;\n var legendData = zrUtil.map(rawData, function (dataItem) {\n // Can be string or number\n if (zrUtil.isString(dataItem) || zrUtil.isNumber(dataItem)) {\n dataItem = {\n name: dataItem\n };\n }\n\n return new Model(dataItem, this, this.ecModel);\n }, this);\n /**\n * @type {Array.}\n * @private\n */\n\n this._data = legendData;\n };\n\n LegendModel.prototype.getData = function () {\n return this._data;\n };\n\n LegendModel.prototype.select = function (name) {\n var selected = this.option.selected;\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n var data = this._data;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name')] = false;\n });\n }\n\n selected[name] = true;\n };\n\n LegendModel.prototype.unSelect = function (name) {\n if (this.get('selectedMode') !== 'single') {\n this.option.selected[name] = false;\n }\n };\n\n LegendModel.prototype.toggleSelected = function (name) {\n var selected = this.option.selected; // Default is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n this[selected[name] ? 'unSelect' : 'select'](name);\n };\n\n LegendModel.prototype.allSelect = function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name', true)] = true;\n });\n };\n\n LegendModel.prototype.inverseSelect = function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n var name = dataItem.get('name', true); // Initially, default value is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n selected[name] = !selected[name];\n });\n };\n\n LegendModel.prototype.isSelected = function (name) {\n var selected = this.option.selected;\n return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n };\n\n LegendModel.prototype.getOrient = function () {\n return this.get('orient') === 'vertical' ? {\n index: 1,\n name: 'vertical'\n } : {\n index: 0,\n name: 'horizontal'\n };\n };\n\n LegendModel.type = 'legend.plain';\n LegendModel.dependencies = ['series'];\n LegendModel.defaultOption = {\n // zlevel: 0,\n z: 4,\n show: true,\n orient: 'horizontal',\n left: 'center',\n // right: 'center',\n top: 0,\n // bottom: null,\n align: 'auto',\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n borderRadius: 0,\n borderWidth: 0,\n padding: 5,\n itemGap: 10,\n itemWidth: 25,\n itemHeight: 14,\n symbolRotate: 'inherit',\n symbolKeepAspect: true,\n inactiveColor: '#ccc',\n inactiveBorderColor: '#ccc',\n inactiveBorderWidth: 'auto',\n itemStyle: {\n color: 'inherit',\n opacity: 'inherit',\n borderColor: 'inherit',\n borderWidth: 'auto',\n borderCap: 'inherit',\n borderJoin: 'inherit',\n borderDashOffset: 'inherit',\n borderMiterLimit: 'inherit'\n },\n lineStyle: {\n width: 'auto',\n color: 'inherit',\n inactiveColor: '#ccc',\n inactiveWidth: 2,\n opacity: 'inherit',\n type: 'inherit',\n cap: 'inherit',\n join: 'inherit',\n dashOffset: 'inherit',\n miterLimit: 'inherit'\n },\n textStyle: {\n color: '#333'\n },\n selectedMode: true,\n selector: false,\n selectorLabel: {\n show: true,\n borderRadius: 10,\n padding: [3, 5, 3, 5],\n fontSize: 12,\n fontFamily: 'sans-serif',\n color: '#666',\n borderWidth: 1,\n borderColor: '#666'\n },\n emphasis: {\n selectorLabel: {\n show: true,\n color: '#eee',\n backgroundColor: '#666'\n }\n },\n selectorPosition: 'auto',\n selectorItemGap: 7,\n selectorButtonGap: 10,\n tooltip: {\n show: false\n }\n };\n return LegendModel;\n}(ComponentModel);\n\nexport default LegendModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport { getLayoutRect, box as layoutBox, positionElement } from '../../util/layout.js';\nimport * as formatUtil from '../../util/format.js';\nimport * as graphic from '../../util/graphic.js';\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\n\nexport function layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\nexport function makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parse, stringify } from 'zrender/lib/tool/color.js';\nimport * as graphic from '../../util/graphic.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { setLabelStyle, createTextStyle } from '../../label/labelStyle.js';\nimport { makeBackground } from '../helper/listComponent.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport ComponentView from '../../view/Component.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { createOrUpdatePatternFromDecal } from '../../util/decal.js';\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar LegendView =\n/** @class */\nfunction (_super) {\n __extends(LegendView, _super);\n\n function LegendView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = LegendView.type;\n _this.newlineDisabled = false;\n return _this;\n }\n\n LegendView.prototype.init = function () {\n this.group.add(this._contentGroup = new Group());\n this.group.add(this._selectorGroup = new Group());\n this._isFirstRender = true;\n };\n /**\n * @protected\n */\n\n\n LegendView.prototype.getContentGroup = function () {\n return this._contentGroup;\n };\n /**\n * @protected\n */\n\n\n LegendView.prototype.getSelectorGroup = function () {\n return this._selectorGroup;\n };\n /**\n * @override\n */\n\n\n LegendView.prototype.render = function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n } // selector has been normalized to an array in model\n\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.x = layoutRect.x - mainRect.x;\n this.group.y = layoutRect.y - mainRect.y;\n this.group.markRedraw(); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n };\n\n LegendView.prototype.resetInner = function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n };\n\n LegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (legendItemModel, dataIndex) {\n var name = legendItemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n var g = new Group(); // @ts-ignore\n\n g.newline = true;\n contentGroup.add(g);\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var lineVisualStyle = data.getVisual('legendLineStyle') || {};\n var legendIcon = data.getVisual('legendIcon');\n /**\n * `data.getVisual('style')` may be the color from the register\n * in series. For example, for line series,\n */\n\n var style = data.getVisual('style');\n\n var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var style = provider.getItemVisual(idx, 'style');\n var legendIcon = provider.getItemVisual(idx, 'legendIcon');\n var colorArr = parse(style.fill); // Color may be set to transparent in visualMap when data is out of range.\n // Do not show nothing.\n\n if (colorArr && colorArr[3] === 0) {\n colorArr[3] = 0.2; // TODO color is set to 0, 0, 0, 0. Should show correct RGBA\n\n style = zrUtil.extend(zrUtil.extend({}, style), {\n fill: stringify(colorArr, 'rgba')\n });\n }\n\n var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style, legendIcon, selectMode, api); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!legendDrawnMap.get(name)) {\n console.warn(name + ' series not exists. Legend data should be same with series name or data name.');\n }\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n };\n\n LegendView.prototype._createSelector = function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel(['emphasis', 'selectorLabel']);\n setLabelStyle(labelText, {\n normal: labelModel,\n emphasis: emphasisLabelModel\n }, {\n defaultText: selectorItem.title\n });\n enableHoverEmphasis(labelText);\n });\n };\n\n LegendView.prototype._createItem = function (seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) {\n var drawType = seriesModel.visualDrawType;\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var isSelected = legendModel.isSelected(name);\n var iconRotate = legendItemModel.get('symbolRotate');\n var symbolKeepAspect = legendItemModel.get('symbolKeepAspect');\n var legendIconType = legendItemModel.get('icon');\n legendIcon = legendIconType || legendIcon || 'roundRect';\n var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api);\n var itemGroup = new Group();\n var textStyleModel = legendItemModel.getModel('textStyle');\n\n if (zrUtil.isFunction(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === 'inherit')) {\n // Series has specific way to define legend icon\n itemGroup.add(seriesModel.getLegendIcon({\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n icon: legendIcon,\n iconRotate: iconRotate,\n itemStyle: style.itemStyle,\n lineStyle: style.lineStyle,\n symbolKeepAspect: symbolKeepAspect\n }));\n } else {\n // Use default legend icon policy for most series\n var rotate = legendIconType === 'inherit' && seriesModel.getData().getVisual('symbol') ? iconRotate === 'inherit' ? seriesModel.getData().getVisual('symbolRotate') : iconRotate : 0; // No rotation for no icon\n\n itemGroup.add(getDefaultLegendIcon({\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n icon: legendIcon,\n iconRotate: rotate,\n itemStyle: style.itemStyle,\n lineStyle: style.lineStyle,\n symbolKeepAspect: symbolKeepAspect\n }));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (zrUtil.isString(formatter) && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (zrUtil.isFunction(formatter)) {\n content = formatter(name);\n }\n\n var inactiveColor = legendItemModel.get('inactiveColor');\n itemGroup.add(new graphic.Text({\n style: createTextStyle(textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n fill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n align: textAlign,\n verticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true\n });\n var tooltipModel = legendItemModel.getModel('tooltip');\n\n if (tooltipModel.get('show')) {\n graphic.setTooltipConfig({\n el: hitRect,\n componentModel: legendModel,\n itemName: name,\n itemTooltipOption: tooltipModel.option\n });\n }\n\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n enableHoverEmphasis(itemGroup); // @ts-ignore\n\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n };\n\n LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n selectorGroup.markRedraw();\n contentGroup.markRedraw();\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.x = selectorPos[0];\n selectorGroup.y = selectorPos[1];\n contentGroup.x = contentPos[0];\n contentGroup.y = contentPos[1];\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.x = contentPos[0];\n contentGroup.y = contentPos[1];\n return this.group.getBoundingRect();\n }\n };\n /**\n * @protected\n */\n\n\n LegendView.prototype.remove = function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n };\n\n LegendView.type = 'legend.plain';\n return LegendView;\n}(ComponentView);\n\nfunction getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) {\n /**\n * Use series style if is inherit;\n * elsewise, use legend style\n */\n function handleCommonProps(style, visualStyle) {\n // If lineStyle.width is 'auto', it is set to be 2 if series has border\n if (style.lineWidth === 'auto') {\n style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0;\n }\n\n each(style, function (propVal, propName) {\n style[propName] === 'inherit' && (style[propName] = visualStyle[propName]);\n });\n } // itemStyle\n\n\n var itemStyleModel = legendItemModel.getModel('itemStyle');\n var itemStyle = itemStyleModel.getItemStyle();\n var iconBrushType = iconType.lastIndexOf('empty', 0) === 0 ? 'fill' : 'stroke';\n var decalStyle = itemStyleModel.getShallow('decal');\n itemStyle.decal = !decalStyle || decalStyle === 'inherit' ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api);\n\n if (itemStyle.fill === 'inherit') {\n /**\n * Series with visualDrawType as 'stroke' should have\n * series stroke as legend fill\n */\n itemStyle.fill = itemVisualStyle[drawType];\n }\n\n if (itemStyle.stroke === 'inherit') {\n /**\n * icon type with \"emptyXXX\" should use fill color\n * in visual style\n */\n itemStyle.stroke = itemVisualStyle[iconBrushType];\n }\n\n if (itemStyle.opacity === 'inherit') {\n /**\n * Use lineStyle.opacity if drawType is stroke\n */\n itemStyle.opacity = (drawType === 'fill' ? itemVisualStyle : lineVisualStyle).opacity;\n }\n\n handleCommonProps(itemStyle, itemVisualStyle); // lineStyle\n\n var legendLineModel = legendItemModel.getModel('lineStyle');\n var lineStyle = legendLineModel.getLineStyle();\n handleCommonProps(lineStyle, lineVisualStyle); // Fix auto color to real color\n\n itemStyle.fill === 'auto' && (itemStyle.fill = itemVisualStyle.fill);\n itemStyle.stroke === 'auto' && (itemStyle.stroke = itemVisualStyle.fill);\n lineStyle.stroke === 'auto' && (lineStyle.stroke = itemVisualStyle.fill);\n\n if (!isSelected) {\n var borderWidth = legendItemModel.get('inactiveBorderWidth');\n /**\n * Since stroke is set to be inactiveBorderColor, it may occur that\n * there is no border in series but border in legend, so we need to\n * use border only when series has border if is set to be auto\n */\n\n var visualHasBorder = itemStyle[iconBrushType];\n itemStyle.lineWidth = borderWidth === 'auto' ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth;\n itemStyle.fill = legendItemModel.get('inactiveColor');\n itemStyle.stroke = legendItemModel.get('inactiveBorderColor');\n lineStyle.stroke = legendLineModel.get('inactiveColor');\n lineStyle.lineWidth = legendLineModel.get('inactiveWidth');\n }\n\n return {\n itemStyle: itemStyle,\n lineStyle: lineStyle\n };\n}\n\nfunction getDefaultLegendIcon(opt) {\n var symboType = opt.icon || 'roundRect';\n var icon = createSymbol(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect);\n icon.setStyle(opt.itemStyle);\n icon.rotation = (opt.iconRotate || 0) * Math.PI / 180;\n icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n\n if (symboType.indexOf('empty') > -1) {\n icon.style.stroke = icon.style.fill;\n icon.style.fill = '#fff';\n icon.style.lineWidth = 2;\n }\n\n return icon;\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n // TODO higlight immediately may cause animation loss.\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction isUseHoverLayer(api) {\n var list = api.getZr().storage.getDisplayList();\n var emphasisState;\n var i = 0;\n var len = list.length;\n\n while (i < len && !(emphasisState = list[i].states.emphasis)) {\n i++;\n }\n\n return emphasisState && emphasisState.hoverLayer;\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n if (!isUseHoverLayer(api)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n if (!isUseHoverLayer(api)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nexport default LegendView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function legendFilter(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (legendModels && legendModels.length) {\n ecModel.filterSeries(function (series) {\n // If in any legend component the status is not selected.\n // Because in legend series is assumed selected when it is not in the legend data.\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(series.name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport { curry, each } from 'zrender/lib/core/util.js';\n\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n var selectedMap = {};\n var isToggleSelect = methodName === 'toggleSelected';\n var isSelected; // Update all legend components\n\n ecModel.eachComponent('legend', function (legendModel) {\n if (isToggleSelect && isSelected != null) {\n // Force other legend has same selected status\n // Or the first is toggled to true and other are toggled to false\n // In the case one legend has some item unSelected in option. And if other legend\n // doesn't has the item, they will assume it is selected.\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n legendModel[methodName]();\n } else {\n legendModel[methodName](payload.name);\n isSelected = legendModel.isSelected(payload.name);\n }\n\n var legendData = legendModel.getData();\n each(legendData, function (model) {\n var name = model.get('name'); // Wrap element\n\n if (name === '\\n' || name === '') {\n return;\n }\n\n var isItemSelected = legendModel.isSelected(name);\n\n if (selectedMap.hasOwnProperty(name)) {\n // Unselected if any legend is unselected\n selectedMap[name] = selectedMap[name] && isItemSelected;\n } else {\n selectedMap[name] = isItemSelected;\n }\n });\n }); // Return the event explicitly\n\n return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n selected: selectedMap\n } : {\n name: payload.name,\n selected: selectedMap\n };\n}\n\nexport function installLegendAction(registers) {\n /**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n registers.registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\n registers.registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\n registers.registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\n /**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\n registers.registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\n /**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\n registers.registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport LegendModel from './LegendModel.js';\nimport LegendView from './LegendView.js';\nimport legendFilter from './legendFilter.js';\nimport { installLegendAction } from './legendAction.js';\nexport function install(registers) {\n registers.registerComponentModel(LegendModel);\n registers.registerComponentView(LegendView);\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\n registers.registerSubTypeDefaulter('legend', function () {\n return 'plain';\n });\n installLegendAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport LegendModel from './LegendModel.js';\nimport { mergeLayoutParam, getLayoutParams } from '../../util/layout.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar ScrollableLegendModel =\n/** @class */\nfunction (_super) {\n __extends(ScrollableLegendModel, _super);\n\n function ScrollableLegendModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = ScrollableLegendModel.type;\n return _this;\n }\n /**\n * @param {number} scrollDataIndex\n */\n\n\n ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) {\n this.option.scrollDataIndex = scrollDataIndex;\n };\n\n ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) {\n var inputPositionParams = getLayoutParams(option);\n\n _super.prototype.init.call(this, option, parentModel, ecModel);\n\n mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n };\n /**\n * @override\n */\n\n\n ScrollableLegendModel.prototype.mergeOption = function (option, ecModel) {\n _super.prototype.mergeOption.call(this, option, ecModel);\n\n mergeAndNormalizeLayoutParams(this, this.option, option);\n };\n\n ScrollableLegendModel.type = 'legend.scroll';\n ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {\n scrollDataIndex: 0,\n pageButtonItemGap: 5,\n pageButtonGap: null,\n pageButtonPosition: 'end',\n pageFormatter: '{current}/{total}',\n pageIcons: {\n horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n },\n pageIconColor: '#2f4554',\n pageIconInactiveColor: '#aaa',\n pageIconSize: 15,\n pageTextStyle: {\n color: '#333'\n },\n animationDurationUpdate: 800\n });\n return ScrollableLegendModel;\n}(LegendModel);\n\n; // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n var orient = legendModel.getOrient();\n var ignoreSize = [1, 1];\n ignoreSize[orient.index] = 0;\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: !!ignoreSize\n });\n}\n\nexport default ScrollableLegendModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/**\n * Separate legend and scrollable legend to reduce package size.\n */\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport LegendView from './LegendView.js';\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\n\nvar ScrollableLegendView =\n/** @class */\nfunction (_super) {\n __extends(ScrollableLegendView, _super);\n\n function ScrollableLegendView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = ScrollableLegendView.type;\n _this.newlineDisabled = true;\n _this._currentIndex = 0;\n return _this;\n }\n\n ScrollableLegendView.prototype.init = function () {\n _super.prototype.init.call(this);\n\n this.group.add(this._containerGroup = new Group());\n\n this._containerGroup.add(this.getContentGroup());\n\n this.group.add(this._controllerGroup = new Group());\n };\n /**\n * @override\n */\n\n\n ScrollableLegendView.prototype.resetInner = function () {\n _super.prototype.resetInner.call(this);\n\n this._controllerGroup.removeAll();\n\n this._containerGroup.removeClipPath();\n\n this._containerGroup.__rectSize = null;\n };\n /**\n * @override\n */\n\n\n ScrollableLegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var self = this; // Render content items.\n\n _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n\n var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n // e.g., '3/12345' should not overlap with the control arrow button.\n\n var pageIconSize = legendModel.get('pageIconSize', true);\n var pageIconSizeArr = zrUtil.isArray(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize];\n createPageButton('pagePrev', 0);\n var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n controllerGroup.add(new graphic.Text({\n name: 'pageText',\n style: {\n // Placeholder to calculate a proper layout.\n text: 'xx/xx',\n fill: pageTextStyleModel.getTextColor(),\n font: pageTextStyleModel.getFont(),\n verticalAlign: 'middle',\n align: 'center'\n },\n silent: true\n }));\n createPageButton('pageNext', 1);\n\n function createPageButton(name, iconIdx) {\n var pageDataIndexName = name + 'DataIndex';\n var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n // Buttons will be created in each render, so we do not need\n // to worry about avoiding using legendModel kept in scope.\n onclick: zrUtil.bind(self._pageGo, self, pageDataIndexName, legendModel, api)\n }, {\n x: -pageIconSizeArr[0] / 2,\n y: -pageIconSizeArr[1] / 2,\n width: pageIconSizeArr[0],\n height: pageIconSizeArr[1]\n });\n icon.name = name;\n controllerGroup.add(icon);\n }\n };\n /**\n * @override\n */\n\n\n ScrollableLegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n var hw = WH[1 - orientIdx];\n var yx = XY[1 - orientIdx];\n selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var processMaxSize = zrUtil.clone(maxSize);\n selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy);\n\n if (selector) {\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n } else {\n var offset = selectorRect[wh] + selectorButtonGap;\n selectorPos[orientIdx] -= offset;\n mainRect[xy] -= offset;\n }\n\n mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n selectorGroup.x = selectorPos[0];\n selectorGroup.y = selectorPos[1];\n selectorGroup.markRedraw();\n }\n\n return mainRect;\n };\n\n ScrollableLegendView.prototype._layoutContentAndController = function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) {\n var contentGroup = this.getContentGroup();\n var containerGroup = this._containerGroup;\n var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n layoutUtil.box( // Buttons in controller are layout always horizontally.\n 'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n var contentRect = contentGroup.getBoundingRect();\n var controllerRect = controllerGroup.getBoundingRect();\n var showController = this._showController = contentRect[wh] > maxSize[wh]; // In case that the inner elements of contentGroup layout do not based on [0, 0]\n\n var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n // If first rendering, `contentGroup.position` is [0, 0], which\n // does not make sense and may cause unexepcted animation if adopted.\n\n if (!isFirstRender) {\n contentPos[orientIdx] = contentGroup[xy];\n } // Layout container group based on 0.\n\n\n var containerPos = [0, 0];\n var controllerPos = [-controllerRect.x, -controllerRect.y];\n var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n if (showController) {\n var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n if (pageButtonPosition === 'end') {\n controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n } // controller is on the left / top.\n else {\n containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n }\n } // Always align controller to content as 'middle'.\n\n\n controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n contentGroup.setPosition(contentPos);\n containerGroup.setPosition(containerPos);\n controllerGroup.setPosition(controllerPos); // Calculate `mainRect` and set `clipPath`.\n // mainRect should not be calculated by `this.group.getBoundingRect()`\n // for sake of the overflow.\n\n var mainRect = {\n x: 0,\n y: 0\n }; // Consider content may be overflow (should be clipped).\n\n mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n containerGroup.__rectSize = maxSize[wh];\n\n if (showController) {\n var clipShape = {\n x: 0,\n y: 0\n };\n clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n clipShape[hw] = mainRect[hw];\n containerGroup.setClipPath(new graphic.Rect({\n shape: clipShape\n })); // Consider content may be larger than container, container rect\n // can not be obtained from `containerGroup.getBoundingRect()`.\n\n containerGroup.__rectSize = clipShape[wh];\n } else {\n // Do not remove or ignore controller. Keep them set as placeholders.\n controllerGroup.eachChild(function (child) {\n child.attr({\n invisible: true,\n silent: true\n });\n });\n } // Content translate animation.\n\n\n var pageInfo = this._getPageInfo(legendModel);\n\n pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n x: pageInfo.contentPosition[0],\n y: pageInfo.contentPosition[1]\n }, // When switch from \"show controller\" to \"not show controller\", view should be\n // updated immediately without animation, otherwise causes weird effect.\n showController ? legendModel : null);\n\n this._updatePageInfoView(legendModel, pageInfo);\n\n return mainRect;\n };\n\n ScrollableLegendView.prototype._pageGo = function (to, legendModel, api) {\n var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n scrollDataIndex != null && api.dispatchAction({\n type: 'legendScroll',\n scrollDataIndex: scrollDataIndex,\n legendId: legendModel.id\n });\n };\n\n ScrollableLegendView.prototype._updatePageInfoView = function (legendModel, pageInfo) {\n var controllerGroup = this._controllerGroup;\n zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n var key = name + 'DataIndex';\n var canJump = pageInfo[key] != null;\n var icon = controllerGroup.childOfName(name);\n\n if (icon) {\n icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n icon.cursor = canJump ? 'pointer' : 'default';\n }\n });\n var pageText = controllerGroup.childOfName('pageText');\n var pageFormatter = legendModel.get('pageFormatter');\n var pageIndex = pageInfo.pageIndex;\n var current = pageIndex != null ? pageIndex + 1 : 0;\n var total = pageInfo.pageCount;\n pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current == null ? '' : current + '').replace('{total}', total == null ? '' : total + '') : pageFormatter({\n current: current,\n total: total\n }));\n };\n /**\n * contentPosition: Array., null when data item not found.\n * pageIndex: number, null when data item not found.\n * pageCount: number, always be a number, can be 0.\n * pagePrevDataIndex: number, null when no previous page.\n * pageNextDataIndex: number, null when no next page.\n * }\n */\n\n\n ScrollableLegendView.prototype._getPageInfo = function (legendModel) {\n var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n var contentGroup = this.getContentGroup();\n var containerRectSize = this._containerGroup.__rectSize;\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n\n var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n var children = contentGroup.children();\n var targetItem = children[targetItemIndex];\n var itemCount = children.length;\n var pCount = !itemCount ? 0 : 1;\n var result = {\n contentPosition: [contentGroup.x, contentGroup.y],\n pageCount: pCount,\n pageIndex: pCount - 1,\n pagePrevDataIndex: null,\n pageNextDataIndex: null\n };\n\n if (!targetItem) {\n return result;\n }\n\n var targetItemInfo = getItemInfo(targetItem);\n result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n // (1) Always align based on the left/top most item.\n // (2) It is user-friendly that the last item shown in the\n // current window is shown at the begining of next window.\n // Otherwise if half of the last item is cut by the window,\n // it will have no chance to display entirely.\n // (3) Consider that item size probably be different, we\n // have calculate pageIndex by size rather than item index,\n // and we can not get page index directly by division.\n // (4) The window is to narrow to contain more than\n // one item, we should make sure that the page can be fliped.\n\n for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // Half of the last item is out of the window.\n !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n // can be started at the current item or the last item.\n currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n if (winEndItemInfo.i > winStartItemInfo.i) {\n winStartItemInfo = winEndItemInfo;\n } else {\n // e.g., when page size is smaller than item size.\n winStartItemInfo = currItemInfo;\n }\n\n if (winStartItemInfo) {\n if (result.pageNextDataIndex == null) {\n result.pageNextDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n }\n }\n\n winEndItemInfo = currItemInfo;\n }\n\n for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // If the the end item does not intersect with the window started\n // from the current item, a page can be settled.\n (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n winStartItemInfo.i < winEndItemInfo.i) {\n winEndItemInfo = winStartItemInfo;\n\n if (result.pagePrevDataIndex == null) {\n result.pagePrevDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n ++result.pageIndex;\n }\n\n winStartItemInfo = currItemInfo;\n }\n\n return result;\n\n function getItemInfo(el) {\n if (el) {\n var itemRect = el.getBoundingRect();\n var start = itemRect[xy] + el[xy];\n return {\n s: start,\n e: start + itemRect[wh],\n i: el.__legendDataIndex\n };\n }\n }\n\n function intersect(itemInfo, winStart) {\n return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n }\n };\n\n ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) {\n if (!this._showController) {\n return 0;\n }\n\n var index;\n var contentGroup = this.getContentGroup();\n var defaultIndex;\n contentGroup.eachChild(function (child, idx) {\n var legendDataIdx = child.__legendDataIndex; // FIXME\n // If the given targetDataIndex (from model) is illegal,\n // we use defaultIndex. But the index on the legend model and\n // action payload is still illegal. That case will not be\n // changed until some scenario requires.\n\n if (defaultIndex == null && legendDataIdx != null) {\n defaultIndex = idx;\n }\n\n if (legendDataIdx === targetDataIndex) {\n index = idx;\n }\n });\n return index != null ? index : defaultIndex;\n };\n\n ScrollableLegendView.type = 'legend.scroll';\n return ScrollableLegendView;\n}(LegendView);\n\nexport default ScrollableLegendView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function installScrollableLegendAction(registers) {\n /**\n * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\n registers.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n var scrollDataIndex = payload.scrollDataIndex;\n scrollDataIndex != null && ecModel.eachComponent({\n mainType: 'legend',\n subType: 'scroll',\n query: payload\n }, function (legendModel) {\n legendModel.setScrollDataIndex(scrollDataIndex);\n });\n });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { use } from '../../extension.js';\nimport { install as installLegendPlain } from './installLegendPlain.js';\nimport ScrollableLegendModel from './ScrollableLegendModel.js';\nimport ScrollableLegendView from './ScrollableLegendView.js';\nimport installScrollableLegendAction from './scrollableLegendAction.js';\nexport function install(registers) {\n use(installLegendPlain);\n registers.registerComponentModel(ScrollableLegendModel);\n registers.registerComponentView(ScrollableLegendView);\n installScrollableLegendAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { use } from '../../extension.js';\nimport { install as installLegendPlain } from './installLegendPlain.js';\nimport { install as installLegendScroll } from './installLegendScroll.js';\nexport function install(registers) {\n use(installLegendPlain);\n use(installLegendScroll);\n}"],"sourceRoot":""}