{"version":3,"sources":["webpack:///./src/components/public/brain/brain.vue?3d37","webpack:///./src/views/Cass/CassHome/components/CassHomeCard.vue?75b4","webpack:///./node_modules/dayjs/plugin/isLeapYear.js","webpack:///./src/util/class/fjbDrug.ts","webpack:///./src/util/class/llDrug.ts","webpack:///./src/util/publicMethod.ts","webpack:///./src/views/Cass/CassHome/CassHome.vue?2a4d","webpack:///./src/views/Cass/CassHome/components/CassHomeCard.vue?e4af","webpack:///./src/views/Cass/CassHome/components/CassHomeCard.vue?6774","webpack:///./src/views/Cass/CassHome/components/CassHomeCard.vue","webpack:///./src/views/Cass/CassHome/components/CassHomeDatanalysis.vue?8bdb","webpack:///./src/views/Cass/CassHome/components/CassHomeDatanalysis.vue?49c3","webpack:///./src/views/Cass/CassHome/components/CassHomeDatanalysis.vue","webpack:///./src/views/Cass/CassHome/components/CassHomePrescriptanslysis.vue?e7a9","webpack:///./src/views/Cass/CassHome/components/CassHomePrescriptanslysis.vue?ce3d","webpack:///./src/views/Cass/CassHome/components/CassHomePrescriptanslysis.vue","webpack:///./src/views/Cass/CassHome/CassHome.vue?5ea2","webpack:///./src/views/Cass/CassHome/CassHome.vue","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/util/contant.ts","webpack:///./src/views/Cass/CassHome/CassHome.vue?6ad5","webpack:///./node_modules/echarts/lib/label/labelGuideHelper.js","webpack:///./src/views/Cass/CassHome/components/CassHomeDatanalysis.vue?7582","webpack:///./node_modules/dayjs/locale/zh-cn.js","webpack:///./src/components/public/brain/brain.vue?575d","webpack:///./src/components/public/brain/brain.vue?4b59","webpack:///./src/components/public/brain/brain.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/views/Cass/CassHome/components/CassHomePrescriptanslysis.vue?2fe5","webpack:///./src/components/public/dataStatistics/dataStatistics.vue?d2bc","webpack:///./node_modules/echarts/lib/label/LabelManager.js","webpack:///./node_modules/echarts/lib/label/installLabelLayout.js","webpack:///./src/util/class/synDiffDrug.ts","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":["e","t","module","exports","this","prototype","isLeapYear","$y","FjbDrug","LlDrug","constructor","id","qty","unit","llUsage","precautions","remark","factory","articleUpdate","articleTitle","llId","llCode","llName","llAlias","llmainCategory","llSmallCategory","stdLlId","stdLlCode","stdLlName","stdLlAlias","stdLlmainCategory","stdLlSmallCategory","pbFn","dayjs","extend","locale","phone","re","test","synDiffDrug","fjbDrug","drugId","drugName","checkRemind","defaultMethod","direction","fjbDrugId","fjbDrugName","major","number","pharmacology","specs","drugType","drugState","rxType","SynDiffDrug","attention","aliasName","customaryName","llDrug","drugUnit","drugUsage","incompatibility","attentions","stdDrugCode","stdDrugName","category","drugCode","synDiffDrugs","fjbDrugs","i","length","j","drug","Object","assign","drugList","temDrug","JSON","parse","stringify","synDiff","flag","msg","synDiffCode","mainPoints","tmpl","dxCode","el","content","weight","tem","curdrugobj","pwjjList","fjDrug","len","taboo","pwjj","pwjjDrug","checkDrugName","indexOf","k","innerDrug","type","sbf","sbfDrug","sjw","sjwDrug","cdyl","map","item","push","code","list","name","num","changeNum","getWan","temp","strArr","toString","split","reverse","newNum","keyValue","parseInt","oKeyValue","overWan","Math","floor","noWan","array","result","hash","key","trim","arr1","arr2","arr3","label","times","date","Date","years","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","seconds","getSeconds","res","formatNumber","join","n","str","r","deg","x","round","sin","y","cos","left","top","start","end","differ","random","data","m","d","shif","arr","low","high","orderKey","tmp","timestamp","getTime","randomNum","randomNum2","recipeId","String","TreeNode","child","deep","PermutationSequence","treeRoot","solution","dataArray","constrator","makeTree","root","newNode","node","backtrack","sel","pop","Array","getSolution","element","offsetTop","offsetLeft","current","offsetParent","windowWidth","window","innerWidth","document","documentElement","clientWidth","body","_hoisted_1","class","_hoisted_2","ref","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_brain","_resolveComponent","_component_cassHomeCard","_component_CassHomeDatanalysis","_component_CassHomePrescriptanslysis","_openBlock","_createElementBlock","_createElementVNode","style","_normalizeStyle","width","isShowBrain","_createBlock","brainName","navList","pointList","onBrainClick","brainClick","_createCommentVNode","_createVNode","personCount","zzCount","isShowDatanalysis","bafx","isShowPrescriptanslysis","cffx","_withScopeId","_pushScopeId","_popScopeId","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_component_router_link","to","default","_withCtx","_","_toDisplayString","props","defineComponent","components","Number","setup","emit","toRefs","__exports__","_component_dataStatistics","dxName","dataStatistics","clas","_Fragment","_renderList","idx","fjName","useCount","getAvgEff","avgEff","brain","CassHomeCard","CassHomePrescriptanslysis","CassHomeDatanalysis","router","useRouter","store","useStore","reactive","img","text","isActive","info","count","brainBoxRef","getAnalysisDetail","emrNum","rxNum","_times","then","analysisVms","splice","rxAnalysisVms","getAnalysisSummary","dataStatisticsVms","forEach","navItem","quantity","disabledQuantity","value","temList","brainMapVms","alias","bgcolor","color","level","rate","watch","state","routeList","children","immediate","nextTick","offsetWidth","offsetHeight","PI2","PI","RADIAN","getViewRect","seriesModel","api","getBoxLayoutParams","getWidth","height","getHeight","getBasicPieLayout","viewRect","center","get","radius","cx","cy","size","min","r0","coordSys","coordinateSystem","point","dataToPoint","pieLayout","seriesType","ecModel","eachSeriesByType","getData","valueDim","mapDimension","_a","startAngle","minAngle","validDataCount","each","isNaN","sum","getSum","unitRadian","clockwise","roseType","stillShowZeroSum","extent","getDataExtent","restAngle","valueSumLargerThanMinAngle","currentAngle","dir","setLayout","angle","setItemLayout","NaN","endAngle","angle_1","layout_1","getItemLayout","layout_2","dataFilter","reset","legendModels","findComponents","mainType","filterSelf","getName","isSelected","adjustSingleSide","viewWidth","viewHeight","viewLeft","viewTop","farthestX","position","labelAlignTo","dx","linePoints","recalculateX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","dy","abs","rA","rA2","sqrt","newX","len2","deltaX","newTargetWidth","targetTextWidth","constrainTextWidth","items","topSemi","maxY","bottomSemi","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","MAX_VALUE","rightmostX","isPositionCenter","max","layout","labelStyleWidth","labelDistance","edgeDistance","bleedMargin","isAlignToEdge","padding","paddingH","extraPaddingH","backgroundColor","realTextWidth","rect","dist","availableWidth","forceRecalculate","textRect","bgColor","overflow","oldOuterWidth","oldHeight","match","setStyle","innerRect","getBoundingRect","ceil","availableInnerWidth","newWidth","unconstrainedWidth","newRect","margin","sectorShape","pieLabelLayout","hasLabelRotate","minShowLabelRadian","getLayout","setNotShow","ignore","isLabelShown","states","sector","getItemGraphicEl","shape","getTextContent","labelLine","getTextGuideLine","itemModel","getItemModel","labelModel","getModel","labelPosition","labelLineModel","labelLineLen","labelLineLen2","textX","textY","textAlign","midAngle","nx","ny","isLabelInside","x1","y1","x2","y2","x3","y3","labelRotate","rotate","radialAngle","rad","atan2","isDown","rotation","verticalAlign","align","selectState","select","clone","applyTransform","getComputedTransform","minTurnAngle","maxSurfaceAngle","surfaceNormal","Point","setTextConfig","inside","notShowLabel","setShape","points","__hostTarget","textGuideLineConfig","anchor","getSectorCornerRadius","model","zeroIfNull","cornerRadius","dr","cr","_super","PiePiece","_this","call","z2","setTextContent","updateData","firstCreate","hostModel","emphasisModel","animationType","getShallow","ssr","scaleX","scaleY","dataIndex","isFrom","originX","originY","useStyle","getItemVisual","offset","cursorStyle","attr","_updateLabel","ensureState","labelText","visualColor","fill","visualOpacity","opacity","labelFetcher","labelDataIndex","inheritColor","defaultOpacity","defaultText","getFormattedLabel","removeTextGuideLine","polyline","setTextGuideLine","stroke","PieView","apply","arguments","ignoreLabelLineUpdate","payload","oldData","_data","group","s","_emptyCircleSector","remove","getItemStyle","add","diff","piePiece","setItemGraphicEl","update","newIdx","oldIdx","off","execute","dispose","containPoint","itemLayout","Chart","createSeriesDataSimply","opt","nameList","coordDimensions","encodeDefine","getEncode","source","getSource","dimensions","SeriesData","initData","PieSeriesModel","init","option","legendVisualProvider","LegendVisualProvider","getRawData","_defaultLabelLine","mergeOption","getInitialData","encodeDefaulter","valueList","seats","getDataParams","params","percent","$vars","labelLineNormalOpt","labelLineEmphasisOpt","emphasis","show","defaultOption","z","legendHoverLink","colorBy","minShowLabelAngle","selectedOffset","percentPrecision","right","bottom","alignTo","distanceToLabelLine","length2","smooth","lineStyle","itemStyle","borderWidth","borderJoin","showEmptyCircle","emptyCircleStyle","labelLayout","hideOverlap","scale","scaleSize","avoidLabelOverlap","animationDuration","animationTypeUpdate","animationEasingUpdate","animationDurationUpdate","animationEasing","Series","PieSeries","negativeDataFilter","curValue","install","registers","registerChartView","registerSeriesModel","registerAction","registerLayout","registerProcessor","ImgUrlFix","location","origin","pathname","replace","header","header2","effcollDateSelect","effcollType","directionType","charCodeArr","ALPHA","SEX","AGE","markReg","drugUeWayList","qidList","title","groupLabelList","EYE_VALUE","EYE_LIST","nameAlias","groupOfLabel","syndiffAlias","CMD","DEFAULT_SEARCH_SPACE","getCandidateAnchor","pos","distance","outPt","outDir","set","projectPointToArc","anticlockwise","out","ox","oy","d1","d2","projectPointToLine","limitToEnds","dx1","dy1","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","path","xi","yi","x0","y0","minDist","Infinity","cmd","M","L","C","Q","A","rx","ry","theta","dTheta","_x","R","Z","pt0","pt1","pt2","dir2","updateLabelLinePoints","target","labelGuideConfig","searchSpace","candidates","labelRect","anchorPoint","targetTransform","targetInversedTransform","copy","candidate","scaleAndAdd","transform","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","moveTo","lineTo","moveLen","midPoint0","midPoint2","midPoint1","bezierCurveTo","setLabelLineStyle","targetEl","statesModels","defaultStyle","normalModel","normal","showNormal","labelIgnoreNormal","stateShow","isLabelIgnored","stateProxy","showAbove","labelLineConfig","buildPath","getLabelLineStatesModels","labelLineName","weekdays","weekdaysShort","weekdaysMin","months","monthsShort","ordinal","weekStart","yearStart","formats","LT","LTS","LL","LLL","LLLL","l","ll","lll","llll","relativeTime","future","past","mm","h","hh","dd","MM","yy","meridiem","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_component_el_tooltip","_normalizeClass","hasNav","autoplay","loop","muted","src","poster","poin","index","onClick","$event","brainClickHandle","effect","placement","inner","st","emits","brainRef","navBoxRef","pointListRef","poinSitionList","poinMaxW","poinH","reSetPoinStation","randomPoinStation","setTimeout","itemList","querySelectorAll","poinSition","getRandomInt","isInArray","maxWidth","maxHeight","setNavStation","brainWidt","degSt","getLocation","getX","display","isOverlap","rect1","rect2","l1","r1","l2","r2","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","rawData","mapArray","containName","indexOfName","dataWithEncodedVisual","_defineComponent","__name","__props","echarts","TooltipComponent","LegendComponent","PieChart","CanvasRenderer","LabelLayout","charts","stateTitle","myChart","tooltip","trigger","formatter","val","series","colorList","sameCount","parCount","diffCount","setOption","cCell","version","icon","ref_key","_createTextVNode","sameAvgEff","parAvgEff","diffAvgEff","cloneArr","newPoints","slice","prepareLayoutCallbackParams","labelItem","hostEl","dataType","seriesIndex","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","Transformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","keys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","layoutOption","labelStyle","textConfig","labelTransform","plain","BoundingRect","setLocalTransform","host","labelGuide","computedLayoutOption","priority","defaultAttr","labelGuideIgnore","fontSize","cursor","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","traverse","textEl","ecData","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","local","needsUpdateLabelLine","guideLine","labelLayoutStore","draggable","on","labelList","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","animationEnabled","isAnimationEnabled","forceLabelAnimation","_updateLabelLine","_animateLabels","visualStyle","visualType","getVisual","invisible","disableLabelAnimation","layoutStore","oldLayout","newProps","prevStates","oldLayoutSelect","oldLayoutEmphasis","valueAnimation","oldOpacity","layoutSelect","layoutEmphasis","newLayout","strokePercent","getLabelManager","installLabelLayout","registerUpdateLifecycle","labelManager","updatedSeries","getViewOfSeriesModel","getDefaultSelectorOptions","getLocaleModel","LegendModel","layoutMode","ignoreSize","parentModel","mergeDefaultAndTheme","selected","_updateSelector","selector","optionUpdated","_updateData","legendData","hasSelected","name_1","potentialData","availableNames","eachRawSeries","isPotential","seriesName","provider","names","isSeriesFiltered","concat","_availableNames","dataItem","Model","selectedMode","unSelect","toggleSelected","hasOwnProperty","allSelect","inverseSelect","getOrient","dependencies","orient","borderColor","borderRadius","itemGap","itemWidth","itemHeight","symbolRotate","symbolKeepAspect","inactiveColor","inactiveBorderColor","inactiveBorderWidth","borderCap","borderDashOffset","borderMiterLimit","inactiveWidth","cap","dashOffset","miterLimit","textStyle","selectorLabel","fontFamily","selectorPosition","selectorItemGap","selectorButtonGap","Component","makeBackground","componentModel","format","silent","curry","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","legendModel","isFirstRender","resetInner","itemAlign","renderInner","positionInfo","viewportSize","maxSize","mainRect","layoutInner","layoutRect","markRedraw","_backgroundEl","removeAll","contentGroup","legendDrawnMap","selectMode","excludeSeriesId","legendItemModel","g","newline","getSeriesByName","lineVisualStyle","legendIcon","itemGroup","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","colorArr","_createSelector","selectorGroup","selectorItem","onclick","dispatchAction","emphasisLabelModel","itemVisualStyle","drawType","visualDrawType","iconRotate","legendIconType","getLegendStyle","textStyleModel","getLegendIcon","getDefaultLegendIcon","getTextColor","hitRect","tooltipModel","graphic","itemName","itemTooltipOption","eachChild","__legendDataIndex","contentRect","contentPos","selectorRect","selectorPos","orientIdx","wh","hw","yx","iconType","handleCommonProps","lineWidth","propVal","propName","itemStyleModel","iconBrushType","lastIndexOf","decalStyle","decal","legendLineModel","visualHasBorder","symboType","setOrigin","dataName","isUseHoverLayer","emphasisState","getZr","storage","getDisplayList","hoverLayer","legendFilter","filterSeries","legendSelectActionHandler","methodName","selectedMap","isToggleSelect","eachComponent","isItemSelected","installLegendAction","registerComponentModel","registerComponentView","PRIORITY","PROCESSOR","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","self","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","font","getFont","xy","processMaxSize","_layoutContentAndController","containerGroup","controllerRect","showController","_showController","containerPos","controllerPos","setPosition","clipShape","setClipPath","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","legendId","canJump","childOfName","pageText","total","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","intersect","itemRect","itemInfo","winStart","targetDataIndex","defaultIndex","legendDataIdx","installScrollableLegendAction","subType","query"],"mappings":"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","file":"js/Cass-home.b7f1c5dc.js","sourcesContent":["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!./brain.vue?vue&type=style&index=0&id=4214f81b&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!./CassHomeCard.vue?vue&type=style&index=0&id=29a4fb4d&lang=scss&scoped=true\"","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isLeapYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isLeapYear=function(){return this.$y%4==0&&this.$y%100!=0||this.$y%400==0}}}));","export class FjbDrug {\r\n attention?: string\r\n checkRemind?: number\r\n chemicalName?: any\r\n customaryName?: string\r\n customaryNamePinyinCode?: string\r\n customaryNameWuBiCode?: string\r\n defaultMethod?: string\r\n dosageRange?: any\r\n drugName?: string\r\n drugType?: number\r\n fjbDrugId?: string\r\n fjbDrugName?: string\r\n healthcaremedicineName?: string\r\n id?: string\r\n drugId?: string\r\n major?: string\r\n maximumDosage?: number\r\n medicareNum?: string\r\n pharmacology?: string\r\n pinyinCode?: string\r\n price?: number\r\n qty?: number\r\n number?: number\r\n selfPrepared?: boolean\r\n specs?: string\r\n stockNum?: any\r\n unit?: string\r\n wubi?: string\r\n remark?: string\r\n factory?: string// 厂家\r\n\r\n\r\n\r\n drugState?:number\r\n}","export class LlDrug{\r\n id: string = '' // 特色诊疗数据id \r\n\t\r\n\tqty: number = 0 // 总量\r\n unit: string = '' // 单位\r\n llUsage: string = '' // 用法\r\n precautions: string = '' // 注意事项\r\n remark: string = '' // 备注说明\r\n factory:string = '' // 厂家\r\n articleUpdate:boolean = false //对应的文章是否更新\r\n articleTitle:string = '' //对应的文章的标题\r\n\r\n llId: string = '' // 机构特色诊疗id\r\n llCode: string = '' // 机构特色诊疗编号\r\n llName: string = ''// 机构特色诊疗名称\r\n llAlias: string = '' // 机构特色诊疗别名\r\n llmainCategory: string = '' // 特色诊疗大类\r\n llSmallCategory : string = '' // 特色诊疗小类\r\n\r\n stdLlId: string = '' // 标准特色诊疗id\r\n stdLlCode: string = ''// 标准特色诊疗编号\r\n stdLlName: string = '' // 标准特色诊疗名称\r\n stdLlAlias: string = '' // 标准特色诊疗别名\r\n stdLlmainCategory: string = ''// 标准特色诊疗大类\r\n stdLlSmallCategory: string = ''// 标准特色诊疗小类\r\n}","import { synDiff } from './class/synDiff';\r\nimport {SynDiffDrug} from \"@u/class/synDiffDrug\"\r\nimport {Tmpl} from './class/Tmpl'\r\nimport {FjbDrug} from './class/fjbDrug'\r\nimport {LlDrug} from './class/llDrug'\r\n\r\nimport dayjs from 'dayjs'\r\nimport isLeapYear from 'dayjs/plugin/isLeapYear' // import plugin\r\nimport 'dayjs/locale/zh-cn' // import locale\r\nimport { stringifyQuery } from 'vue-router';\r\ndayjs.extend(isLeapYear) // use plugin\r\ndayjs.locale('zh-cn') // use locale\r\n\r\nexport namespace pbFn{\r\n\r\n export const dateFormat = dayjs\r\n //检验手机号码是否合法\r\n export const checkPhoen = (phone:string):boolean=>{\r\n const re = /^(?:(?:\\+|00)86)?1\\d{10}$/\r\n return re.test(phone)\r\n }\r\n\r\n // cass药品转方剂宝药品\r\n export const diffDrugToFjbDrug = (synDiffDrug:SynDiffDrug) => {\r\n const fjbDrug = new FjbDrug()\r\n\r\n fjbDrug.id = synDiffDrug.drugId\r\n fjbDrug.drugId = synDiffDrug.drugId\r\n fjbDrug.drugName = synDiffDrug.drugName\r\n fjbDrug.checkRemind = synDiffDrug.checkRemind\r\n fjbDrug.defaultMethod = synDiffDrug.direction || ''\r\n fjbDrug.fjbDrugId = synDiffDrug.fjbDrugId\r\n fjbDrug.fjbDrugName = synDiffDrug.fjbDrugName\r\n fjbDrug.major = synDiffDrug.major || ''\r\n fjbDrug.number = synDiffDrug.qty\r\n fjbDrug.pharmacology = synDiffDrug.pharmacology || ''\r\n fjbDrug.remark = synDiffDrug.remark || ''\r\n fjbDrug.specs = synDiffDrug.specs || ''\r\n fjbDrug.unit = synDiffDrug.unit || ''\r\n fjbDrug.factory = synDiffDrug.factory || ''\r\n fjbDrug.drugType = synDiffDrug.drugType || 0\r\n\r\n fjbDrug.drugState = synDiffDrug.drugState || 0\r\n\r\n return fjbDrug;\r\n }\r\n\r\n //方剂宝药品转cass药品\r\n export const fjbDrugToDiffDrug = (fjbDrug:any, rxType:number=0)=>{\r\n if(rxType === 0){\r\n const synDiffDrug = new SynDiffDrug()\r\n\r\n synDiffDrug.drugId = fjbDrug.drugId || \"\"\r\n synDiffDrug.drugName = fjbDrug.drugName \r\n synDiffDrug.factory = fjbDrug.factory || ''\r\n synDiffDrug.fjbDrugId = fjbDrug.fjbDrugId \r\n synDiffDrug.fjbDrugName = fjbDrug.fjbDrugName \r\n synDiffDrug.unit = fjbDrug.unit \r\n synDiffDrug.specs = fjbDrug.specs \r\n synDiffDrug.qty = fjbDrug.qty || fjbDrug.number || 0\r\n synDiffDrug.drugType = fjbDrug.drugType|| 0\r\n synDiffDrug.direction =fjbDrug.direction || fjbDrug.defaultMethod\r\n synDiffDrug.remark = fjbDrug.attention || fjbDrug.remark\r\n synDiffDrug.aliasName = fjbDrug.customaryName || fjbDrug.aliasName || ''\r\n synDiffDrug.checkRemind = fjbDrug.checkRemind \r\n synDiffDrug.pharmacology = fjbDrug.pharmacology\r\n synDiffDrug.major = fjbDrug.major\r\n synDiffDrug.id = ''\r\n\r\n synDiffDrug.drugState = fjbDrug.drugState || 0\r\n \r\n return synDiffDrug\r\n }else {\r\n const synDiffDrug = new SynDiffDrug()\r\n return synDiffDrug\r\n }\r\n \r\n }\r\n //方剂宝药品转cass特色诊疗药品\r\n export const fjbDrugToDiffLLDrug = (fjbDrug:any) => {\r\n const llDrug = new LlDrug()\r\n \r\n llDrug.id= '' // 特色诊疗数据id\r\n llDrug.qty= 1 // 总量\r\n llDrug.unit= fjbDrug.drugUnit // 单位\r\n llDrug.factory= fjbDrug.factory || '' // 厂家\r\n llDrug.llUsage= fjbDrug.drugUsage // 用法\r\n llDrug.precautions= fjbDrug.incompatibility // 注意事项\r\n llDrug.remark= fjbDrug.attentions // 备注说明\r\n\r\n llDrug.stdLlId = fjbDrug.stdDrugCode // 标准特色诊疗id\r\n llDrug.stdLlCode= fjbDrug.stdDrugCode // 标准特色诊疗编号\r\n llDrug.stdLlName= fjbDrug.stdDrugName // 标准特色诊疗名称\r\n llDrug.stdLlAlias= fjbDrug.aliasName // 标准特色诊疗别名\r\n llDrug.stdLlmainCategory= fjbDrug.category // 标准特色诊疗大类\r\n llDrug.stdLlSmallCategory = '' // 标准特色诊疗小类\r\n\r\n llDrug.llId= fjbDrug.drugCode // his特色诊疗id\r\n llDrug.llCode= fjbDrug.drugCode // his特色诊疗编号\r\n llDrug.llName= fjbDrug.drugName // his特色诊疗名称\r\n llDrug.llAlias= fjbDrug.aliasName // his特色诊疗别名\r\n llDrug.llmainCategory= fjbDrug.category// his特色诊疗大类\r\n llDrug.llSmallCategory= '' // his特色诊疗小类\r\n\r\n return llDrug\r\n }\r\n\r\n // cass 药品数组增加属性\r\n export const cassDrugListAddAttribute = (synDiffDrugs:SynDiffDrug[], fjbDrugs:any[]) => {\r\n for(let i=0; i{\r\n const drug = new SynDiffDrug()\r\n Object.assign(drug, synDiffDrug)\r\n drug.pharmacology = fjbDrug.pharmacology\r\n drug.major = fjbDrug.major\r\n drug.factory = fjbDrug.factory || ''\r\n return drug\r\n }\r\n\r\n // 检查是否有相同的药品\r\n export const checkHasSameDrug = (drugList:any[], drug:any, rxType:number=0 ) => {\r\n\r\n let temDrug : any\r\n for(let i=0; i{\r\n //辨证名称和辨证要点必填\r\n const re = {\r\n flag:true,\r\n msg:''\r\n }\r\n if(!synDiff.synDiffCode){\r\n re.flag = false\r\n re.msg = \"请选择证型\"\r\n }else if(!synDiff.mainPoints){\r\n re.flag = false\r\n re.msg = \"请输入辨证要点\"\r\n }\r\n\r\n return re\r\n }\r\n\r\n //检查病种是否合法\r\n export const checkPplTmpl = (tmpl:Tmpl)=>{\r\n const re = {\r\n flag:true,\r\n msg:''\r\n }\r\n\r\n if(! tmpl.dxCode){\r\n re.flag = false\r\n re.msg = '请选择中医诊断'\r\n\r\n return re\r\n }\r\n\r\n if( ! tmpl.el[0].content){\r\n re.flag = false\r\n re.msg = '请填写第一诊断要素'\r\n return re\r\n }\r\n if( (tmpl.el[0].weight as number) < 1){\r\n re.flag = false\r\n re.msg = '第一诊断要素权重不能低于1'\r\n return re\r\n }\r\n\r\n if( tmpl.el[1].content!== '' && (tmpl.el[1].weight as number) < 1){\r\n re.flag = false\r\n re.msg = '第二诊断要素权重不能低于1'\r\n return re\r\n }\r\n\r\n if( tmpl.el[2].content!== '' && (tmpl.el[2].weight as number) < 1){\r\n re.flag = false\r\n re.msg = '第三诊断要素权重不能低于1'\r\n return re\r\n }\r\n\r\n\r\n if(tmpl.synDiff.length === 0){\r\n re.flag = false\r\n re.msg = '请添加证型'\r\n return re\r\n }\r\n\r\n for(let i=0; i< tmpl.synDiff.length; i++){\r\n const tem = checkSynDiff(tmpl.synDiff[i])\r\n if( !tem.flag){\r\n re.flag = tem.flag\r\n re.msg = `第${i+1}个证型:${tem.msg}`\r\n break;\r\n }\r\n }\r\n return re;\r\n\r\n }\r\n\r\n\r\n //检查gemodel病种是否合法\r\n export const checkgemodel = (tmpl:Tmpl)=>{\r\n const re = {\r\n flag:true,\r\n msg:''\r\n }\r\n\r\n if(! tmpl.dxCode){\r\n re.flag = false\r\n re.msg = '请选择中医诊断'\r\n\r\n return re\r\n }\r\n\r\n if( ! tmpl.el[0].content){\r\n re.flag = false\r\n re.msg = '请填写第一诊断要素'\r\n return re\r\n }\r\n if( (tmpl.el[0].weight as number) < 1){\r\n re.flag = false\r\n re.msg = '第一诊断要素权重不能低于1'\r\n return re\r\n }\r\n\r\n if( tmpl.el[1].content!== '' && (tmpl.el[1].weight as number) < 1){\r\n re.flag = false\r\n re.msg = '第二诊断要素权重不能低于1'\r\n return re\r\n }\r\n\r\n if( tmpl.el[2].content!== '' && (tmpl.el[2].weight as number) < 1){\r\n re.flag = false\r\n re.msg = '第三诊断要素权重不能低于1'\r\n return re\r\n }\r\n\r\n\r\n if(tmpl.synDiff.length === 0){\r\n re.flag = false\r\n re.msg = '请添加证型'\r\n return re\r\n }\r\n\r\n for(let i=0; i< tmpl.synDiff.length; i++){\r\n const tem = checkSynDiff(tmpl.synDiff[i])\r\n if( !tem.flag){\r\n re.flag = tem.flag\r\n re.msg = `${tem.msg}`\r\n break;\r\n }\r\n }\r\n return re;\r\n\r\n }\r\n\r\n\r\n\r\n //通过id找到药品\r\n export const findDrugById = (drugList:any[], drugId:String, rxType:number = 0)=>{\r\n if (!drugId){\r\n return null\r\n }\r\n let synDiffDrug : any\r\n if(rxType === 0){\r\n for(let i=0; i{\r\n let synDiffDrug : any\r\n \r\n for(let i=0; i{\r\n let synDiffDrug : any\r\n if(rxType === 0){\r\n for(let i=0; i{\r\n /*\r\n sbf 十八反\r\n sjw 十九畏\r\n sbfDrug 对应的十八反禁忌药\r\n sjwDrug 对应的十九畏禁忌药\r\n cdyl 超大用量\r\n */\r\n \r\n \r\n for (var i = 0, len = fjDrug.length; i < len; ++i) {\r\n var taboo = 0\r\n var drug = fjDrug[i]\r\n\r\n\r\n for (var j = 0; j < pwjjList.length; ++j) {\r\n const pwjj = pwjjList[j]\r\n let pwjjDrug = null;\r\n \r\n //如果药在配伍禁忌内,需要再循环判断对应禁忌药是不是也在处方中\r\n if (pwjj.checkDrugName.indexOf('|' + drug.fjbDrugName + '|') !== -1) {\r\n var flag = false\r\n for (var k = 0; k < fjDrug.length; ++k) {\r\n var innerDrug = fjDrug[k]\r\n \r\n if (pwjj.drugName.indexOf('|' + innerDrug.fjbDrugName + '|') !== -1) {\r\n flag = true\r\n pwjjDrug = JSON.parse(JSON.stringify(innerDrug))\r\n break;\r\n }\r\n }\r\n if (flag) {\r\n if (pwjj.type == 0) {\r\n fjDrug[i].sbf = true;\r\n fjDrug[i].sbfDrug = pwjjDrug\r\n taboo = taboo | 1\r\n } else {\r\n fjDrug[i].sjw = true;\r\n fjDrug[i].sjwDrug = pwjjDrug\r\n taboo = taboo | 2\r\n }\r\n break;\r\n } else {\r\n fjDrug[i].sbf = false;\r\n fjDrug[i].sjw = false;\r\n fjDrug[i].sbfDrug = null;\r\n fjDrug[i].sjwDrug = null;\r\n }\r\n \r\n } else if (pwjj.drugName.indexOf('|' + drug.fjbDrugName + '|') !== -1) {\r\n var flag = false\r\n \r\n for (var k = 0; k < fjDrug.length; ++k) {\r\n var innerDrug = fjDrug[k]\r\n if (pwjj.checkDrugName.indexOf('|' + innerDrug.fjbDrugName + '|') !== -1) {\r\n flag = true\r\n pwjjDrug = JSON.parse(JSON.stringify(innerDrug))\r\n pwjjDrug.sbfDrug = null;\r\n pwjjDrug.sjwDrug = null;\r\n break;\r\n }\r\n }\r\n if (flag) {\r\n if (pwjj.type == 0) {\r\n fjDrug[i].sbf = true;\r\n fjDrug[i].sbfDrug = pwjjDrug\r\n } else {\r\n fjDrug[i].sjw = true;\r\n fjDrug[i].sjwDrug = pwjjDrug\r\n }\r\n break;\r\n } else {\r\n fjDrug[i].sbf = false;\r\n fjDrug[i].sjw = false;\r\n fjDrug[i].sbfDrug = null;\r\n fjDrug[i].sjwDrug = null;\r\n }\r\n } else {\r\n fjDrug[i].sbf = false;\r\n fjDrug[i].sjw = false\r\n fjDrug[i].sbfDrug = null;\r\n fjDrug[i].sjwDrug = null;\r\n }\r\n }\r\n \r\n if (fjDrug[i].qty! >= 100) {\r\n fjDrug[i].cdyl = true\r\n taboo = taboo | 128\r\n } else {\r\n fjDrug[i].cdyl = false\r\n }\r\n fjDrug[i].taboo = taboo\r\n }\r\n\r\n return fjDrug;\r\n }\r\n\r\n //配伍禁忌第二版\r\n export const checkFjTaboo2 = (pwjjList:any[], fjDrug: SynDiffDrug[])=>{\r\n /*\r\n sbf 十八反\r\n sjw 十九畏\r\n sbfDrug 对应的十八反禁忌药\r\n sjwDrug 对应的十九畏禁忌药\r\n cdyl 超大用量\r\n */\r\n fjDrug.map((item:SynDiffDrug)=>{\r\n item.sbfDrug = []\r\n item.sjwDrug = []\r\n item.sbf = false \r\n item.sjw = false\r\n })\r\n \r\n \r\n for (var i = 0, len = fjDrug.length; i < len; ++i) {\r\n var taboo = 0\r\n var drug = fjDrug[i]\r\n\r\n\r\n for (var j = 0; j < pwjjList.length; ++j) {\r\n const pwjj = pwjjList[j]\r\n let pwjjDrug = null;\r\n \r\n //如果药在配伍禁忌内,需要再循环判断对应禁忌药是不是也在处方中\r\n if (pwjj.checkDrugName.indexOf('|' + drug.fjbDrugName + '|') !== -1) {\r\n \r\n for (var k = 0; k < fjDrug.length; ++k) {\r\n var flag = false\r\n var innerDrug = fjDrug[k]\r\n if (pwjj.drugName.indexOf('|' + innerDrug.fjbDrugName + '|') !== -1) {\r\n flag = true\r\n pwjjDrug = JSON.parse(JSON.stringify(innerDrug))\r\n pwjjDrug.sbfDrug = null;\r\n pwjjDrug.sjwDrug = null;\r\n }\r\n if (flag) {\r\n if (pwjj.type == 0) {\r\n fjDrug[i].sbf = true;\r\n (fjDrug[i].sbfDrug as SynDiffDrug[] ).push(pwjjDrug)\r\n taboo = taboo | 1\r\n } else {\r\n fjDrug[i].sjw = true;\r\n (fjDrug[i].sjwDrug as SynDiffDrug[]).push(pwjjDrug)\r\n taboo = taboo | 2\r\n }\r\n } \r\n }\r\n } else if (pwjj.drugName.indexOf('|' + drug.fjbDrugName + '|') !== -1) {\r\n for (var k = 0; k < fjDrug.length; ++k) {\r\n var flag = false\r\n var innerDrug = fjDrug[k]\r\n if (pwjj.checkDrugName.indexOf('|' + innerDrug.fjbDrugName + '|') !== -1) {\r\n flag = true\r\n pwjjDrug = JSON.parse(JSON.stringify(innerDrug))\r\n pwjjDrug.sbfDrug = null;\r\n pwjjDrug.sjwDrug = null;\r\n }\r\n if (flag) {\r\n if (pwjj.type == 0) {\r\n fjDrug[i].sbf = true;\r\n (fjDrug[i].sbfDrug as SynDiffDrug[]).push(pwjjDrug as unknown as SynDiffDrug)\r\n } else {\r\n fjDrug[i].sjw = true;\r\n (fjDrug[i].sjwDrug as SynDiffDrug[]).push(pwjjDrug as unknown as SynDiffDrug)\r\n }\r\n } \r\n }\r\n } \r\n }\r\n \r\n if (fjDrug[i].qty! >= 100) {\r\n fjDrug[i].cdyl = true\r\n taboo = taboo | 128\r\n } else {\r\n fjDrug[i].cdyl = false\r\n }\r\n fjDrug[i].taboo = taboo\r\n }\r\n\r\n return fjDrug;\r\n }\r\n\r\n //通过 id 找到名称 病种,辨证,治则治法\r\n export const findNameByCode = (code:string, list:any[])=>{\r\n for(let i=0; i< list.length; i++){\r\n if(code === list[i].code){\r\n return list[i].name\r\n }\r\n }\r\n\r\n return ''\r\n }\r\n //通过 名称找到code 病种,辨证,治则治法\r\n export const findCodeByName = (name:string, list:any[])=>{\r\n for(let i=0; i< list.length; i++){\r\n if(name === list[i].name){\r\n return list[i].code\r\n }\r\n }\r\n\r\n return ''\r\n }\r\n //数字转中文\r\n export const toChinesNum = (num: number): string => {\r\n let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];\r\n let unit = [\"\", \"十\", \"百\", \"千\", \"万\"];\r\n let getWan = (temp: number | string) => {\r\n let strArr: string[] = temp.toString().split(\"\").reverse();\r\n let newNum = \"\";\r\n for (let i = 0; i < strArr.length; i++) {\r\n var keyValue = parseInt(strArr[i]);\r\n var oKeyValue = parseInt(strArr[i - 1]);\r\n newNum = (i === 0 && keyValue === 0 ? \"\" : (i > 0 && keyValue === 0 && oKeyValue === 0 ? \"\" : changeNum[keyValue] + (keyValue === 0 ? unit[0] : unit[i]))) + newNum;\r\n }\r\n return newNum;\r\n }\r\n let overWan: number = Math.floor(num / 10000);\r\n let noWan: string | number = num % 10000;\r\n if (noWan.toString().length < 4) {\r\n noWan = \"0\" + noWan;\r\n };\r\n return overWan ? getWan(overWan) + \"万\" + getWan(noWan) : getWan(num);\r\n };\r\n\r\n\r\n //数组去重\r\n export const simpleUnique = (array: any, type: string) => {\r\n var result: any[] = [];\r\n var hash: any = {};\r\n for (var i = 0; i < array.length; i++) {\r\n var key: string = (typeof array[i][type]) + array[i][type].trim();\r\n if (!hash[key]) {\r\n result.push(array[i]);\r\n hash[key] = true;\r\n }\r\n }\r\n return result;\r\n }\r\n //\r\n export const arrayComparedDelSame = (arr1: any, arr2: any) => {\r\n let arr3 = [];\r\n for (var i = 0; i < arr1.length; i++) {\r\n for (var j = 0; j < arr2.length; j++) {\r\n if (arr1[i].label == arr2[j]) {\r\n arr1[i] = \"\";\r\n break;\r\n }\r\n }\r\n }\r\n for (var i = 0; i < arr1.length; i++) {\r\n if (arr1[i] != \"\") {\r\n arr3.push(arr1[i])\r\n }\r\n }\r\n return arr3;\r\n }\r\n export const changeTimeToUse = (times: number, type = 'YYMMDDHHMMSS'): string => {\r\n const date = new Date(times);\r\n let years: number = date.getFullYear();\r\n let month: number = date.getMonth() + 1;\r\n let day: number = date.getDate();\r\n let hour: number = date.getHours();\r\n let minute: number = date.getMinutes();\r\n let seconds: number = date.getSeconds();\r\n let res = '';\r\n switch(type) {\r\n case 'YYMMDDHHMMSS':\r\n res = `${[years, month, day].map(formatNumber).join('-')} ${[hour, minute, seconds].map(formatNumber).join(':')}`\r\n break;\r\n }\r\n return res\r\n }\r\n const formatNumber = (n: number) => {\r\n const str = n.toString()\r\n return str[1] ? str : `0${n}`\r\n }\r\n\r\n // 根据半径和角度,获取坐标\r\n export const getLocation =function(r:any,deg:any){\r\n var x =Math.round(r*Math.sin(deg));\r\n var y =Math.round(r*Math.cos(deg));\r\n return{left:x,top:y};\r\n }\r\n\r\n // 生成指定范围随机数 [start, end)\r\n export const getRandomInt = (start:number, end:number) => {\r\n if(end <= start ){\r\n return start\r\n }\r\n\r\n let differ = end - start\r\n let random = Math.random()\r\n return Math.floor(start + differ * random)\r\n }\r\n\r\n\r\n // 根据时间戳生成固定格式 2022年03月01日\r\n\texport const renderTime = (data: number) =>{\r\n\t\tconst t = new Date(data);\r\n\t\tlet y = t.getFullYear().toString()\r\n\t\tlet m = t.getMonth() + 1\r\n\t\tlet d = t.getDate() \r\n\t\treturn y+'年'+m + '月' + d + '日'\r\n\t}\r\n\r\n\r\n //堆排序\r\n\tconst shif = (arr:any[], low:number, high:number, orderKey:string) => {\r\n\t\tlet i = low\r\n\t\tlet j = low*2+1\r\n\t\tlet tmp = arr[low]\r\n\t\twhile(j <= high){\r\n\t\t\tif( j+1 <= high && arr[j+1][orderKey] > arr[j][orderKey]){\r\n\t\t\t\tj = j+1\r\n\t\t\t}\r\n\t\t\tif (arr[j][orderKey] > tmp[orderKey]) {\r\n\t\t\t\tarr[i] = arr[j]\r\n\t\t\t\ti = j\r\n\t\t\t\tj = i * 2 + 1\r\n\t\t\t\tcontinue\r\n\t\t\t} else {\r\n\t\t\t\tarr[i] = tmp\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarr[i] = tmp\r\n\t}\r\n\texport const lee_sort = (arr:any[], orderKey:string)=>{\r\n\t\t// arr 需要排序的数组\r\n\t\t// orderKey 针对哪个属性进行排序\r\n\r\n\t\tlet len = arr.length;\r\n\t\tfor(let i=Math.floor((len - 1 - 1) /2); i >=0; i--){\r\n\t\t\tshif(arr, i, len-1, orderKey)\r\n\t\t}\r\n\t\tfor(let i = len-1; i>=0; i--){\r\n\t\t\tlet tem = arr[0]\r\n\t\t\tarr[0] = arr[i]\r\n\t\t\tarr[i] = tem\r\n\t\t\tshif(arr, 0, i - 1, orderKey)\r\n\t\t}\r\n\t}\r\n\t//魔改的堆排序结束\r\n\r\n\r\n // 生成一个独一无二的ID \r\n export const getID = (t:string='l') => {\r\n var timestamp=new Date().getTime()\r\n timestamp %= 10000000\r\n var randomNum = getRandomInt(1, 999999);\r\n var randomNum2 = getRandomInt(1, 999999);\r\n var recipeId = t + String(timestamp) + String(randomNum) + String(randomNum2)\r\n\r\n return recipeId;\r\n }\r\n\r\n class TreeNode {\r\n\t\tdata: T | undefined\r\n\t\tchild: TreeNode[] = []\r\n\t\tdeep: number = 0\r\n\t}\r\n\r\n\t/**\r\n\t * 全排列求解器,穷举\r\n\t * 使用方式:\r\n\t * let p = new PermutationSequence();\r\n\t * let result = p.getSolution([1,2],[3,4]);\r\n\t */\r\n\texport class PermutationSequence {\r\n constrator() {\r\n \r\n }\r\n\t\tprivate treeRoot: TreeNode = new TreeNode()\r\n\t\tprivate solution: T[][] = []\r\n\t\tprivate dataArray: T[][] = []\r\n // 生成tree结构\r\n\t\tprivate makeTree(root: TreeNode, deep: number = 0) {\r\n\t\t\tif (deep < this.dataArray.length) {\r\n\t\t\t\tfor (const data of this.dataArray[deep]) {\r\n\t\t\t\t\tconst newNode = new TreeNode()\r\n\t\t\t\t\tnewNode.data = data\r\n\t\t\t\t\tnewNode.deep = deep + 1\r\n\t\t\t\t\troot.child.push(newNode)\r\n\t\t\t\t}\r\n\t\t\t\tfor (const node of root.child) {\r\n\t\t\t\t\tthis.makeTree(node, deep + 1)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 回溯算法:\r\n\t\t * result = []\r\n\t\t * def backtrack(路径, 选择列表):\r\n\t\t * if 满足结束条件:\r\n\t\t * result.add(路径)\r\n\t\t * return\r\n\t\t *\r\n\t\t * for 选择 in 选择列表:\r\n\t\t * backtrack(路径, 选择列表)\r\n\t\t * 撤销选择\r\n\t\t */\r\n\t\tprivate backtrack(sel: T[], node: TreeNode) {\r\n\t\t\tif (node.deep === this.dataArray.length) {\r\n\t\t\t\tthis.solution.push(new Array(...sel))\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tfor (const child of node.child) {\r\n\t\t\t\tif (child.data) {\r\n\t\t\t\t\tsel.push(child.data)\r\n\t\t\t\t}\r\n\t\t\t\tthis.backtrack(sel, child)\r\n\t\t\t\tsel.pop()\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * 根据设置的数组获取全排列结果\r\n\t\t * @param dataArray 需要求解的数组\r\n\t\t */\r\n\t\tpublic getSolution(dataArray: T[][]) {\r\n\t\t\tthis.solution = []\r\n\t\t\tthis.dataArray = dataArray\r\n\t\t\tthis.makeTree(this.treeRoot)\r\n\t\t\tthis.backtrack([], this.treeRoot)\r\n\t\t\treturn this.solution\r\n\t\t}\r\n\t}\r\n\r\n\r\n export const getElementPosition = (element:any)=>{\r\n let top = element.offsetTop //这是获取元素距父元素顶部的距离\r\n let left = element.offsetLeft\r\n var current = element.offsetParent //这是获取父元素\r\n while (current !== null) {\r\n //当它上面有元素时就继续执行\r\n top += current.offsetTop //这是获取父元素距它的父元素顶部的距离累加起来\r\n left += current.offsetLeft\r\n current = current.offsetParent //继续找父元素\r\n }\r\n return {\r\n top,\r\n left,\r\n }\r\n }\r\n\r\n // 获取 window 的宽度\r\n export const getWindowWidth = () => {\r\n let windowWidth = 0;\r\n if (typeof(window.innerWidth) == 'number') {\r\n windowWidth = window.innerWidth;\r\n } else {\r\n if (document.documentElement && document.documentElement.clientWidth) {\r\n windowWidth = document.documentElement.clientWidth;\r\n } else {\r\n if (document.body && document.body.clientWidth) {\r\n windowWidth = document.body.clientWidth;\r\n }\r\n }\r\n }\r\n return windowWidth;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77197190\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"CassHome\" }\nconst _hoisted_2 = {\n class: \"brainBox-con\",\n ref: \"brainBoxRef\"\n}\nconst _hoisted_3 = { class: \"contentBox\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_brain = _resolveComponent(\"brain\")!\n const _component_cassHomeCard = _resolveComponent(\"cassHomeCard\")!\n const _component_CassHomeDatanalysis = _resolveComponent(\"CassHomeDatanalysis\")!\n const _component_CassHomePrescriptanslysis = _resolveComponent(\"CassHomePrescriptanslysis\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"brainBox\",\n style: _normalizeStyle({ width: _ctx.width })\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.isShowBrain)\n ? (_openBlock(), _createBlock(_component_brain, {\n key: 0,\n brainName: 'brain2',\n navList: _ctx.navList,\n pointList: _ctx.pointList,\n onBrainClick: _ctx.brainClick\n }, null, 8, [\"navList\", \"pointList\", \"onBrainClick\"]))\n : _createCommentVNode(\"\", true)\n ], 512)\n ], 4),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_cassHomeCard, {\n personCount: _ctx.personCount,\n zzCount: _ctx.zzCount\n }, null, 8, [\"personCount\", \"zzCount\"]),\n (_ctx.isShowDatanalysis)\n ? (_openBlock(), _createBlock(_component_CassHomeDatanalysis, {\n key: 0,\n bafx: _ctx.bafx\n }, null, 8, [\"bafx\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.isShowPrescriptanslysis)\n ? (_openBlock(), _createBlock(_component_CassHomePrescriptanslysis, {\n key: 1,\n cffx: _ctx.cffx\n }, null, 8, [\"cffx\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-29a4fb4d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"CassHomeCard\" }\nconst _hoisted_2 = { class: \"item\" }\nconst _hoisted_3 = { class: \"top\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_title\" }, \"个人模型\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_detail mainColor\" }, \"详情 >\", -1))\nconst _hoisted_6 = { class: \"mainColor content\" }\nconst _hoisted_7 = { class: \"count\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"个\", -1))\nconst _hoisted_9 = { class: \"item\" }\nconst _hoisted_10 = { class: \"top\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_title\" }, \"种子模型\", -1))\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_detail mainColor\" }, \"详情 >\", -1))\nconst _hoisted_13 = { class: \"mainColor content\" }\nconst _hoisted_14 = { class: \"count\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"个\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_component_router_link, { to: { name: 'PersonalTemplate' } }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.props.personCount), 1),\n _hoisted_8\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_router_link, { to: { name: 'templateImport' } }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.props.zzCount), 1),\n _hoisted_15\n ])\n ])\n ]))\n}","\r\nimport { number } from 'echarts/core';\r\nimport { defineComponent, toRefs } 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: \"CassHomeCard\",\r\n components: {},\r\n props: {\r\n zzCount:{\r\n type: Number,\r\n default:0\r\n },\r\n personCount:{\r\n type: Number,\r\n default:0\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const { zzCount, personCount } = toRefs(props)\r\n\r\n\r\n\r\n return {\r\n props\r\n }\r\n },\r\n})\r\n","import { render } from \"./CassHomeCard.vue?vue&type=template&id=29a4fb4d&scoped=true&ts=true\"\nimport script from \"./CassHomeCard.vue?vue&type=script&lang=ts\"\nexport * from \"./CassHomeCard.vue?vue&type=script&lang=ts\"\n\nimport \"./CassHomeCard.vue?vue&type=style&index=0&id=29a4fb4d&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-29a4fb4d\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-79012547\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"CassHomeDatanalysis\" }\nconst _hoisted_2 = { class: \"top\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_title\" }, \"模型分析\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_detail mainColor\" }, \"更多 >\", -1))\nconst _hoisted_5 = {\n key: 0,\n class: \"content\"\n}\nconst _hoisted_6 = {\n key: 1,\n style: {\"padding\":\"15px\",\"text-align\":\"center\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_dataStatistics = _resolveComponent(\"dataStatistics\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_router_link, { to: { name: 'datanalysis' } }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n (_ctx.bafx.dxName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_component_dataStatistics, { data: _ctx.bafx }, null, 8, [\"data\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"暂无模型分析,或正在加载中\"))\n ]))\n}","\r\nimport { defineComponent, toRef, toRefs } from 'vue';\r\n// 引入第三方工具\r\n\r\n// 引入第三方组件\r\n\r\n// 引入公共组件\r\nimport dataStatistics from '@c/public/dataStatistics/dataStatistics.vue'\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: \"CassHomeDatanalysis\",\r\n components:{\r\n dataStatistics\r\n },\r\n props:{\r\n bafx:{\r\n type: Object,\r\n default:{}\r\n }\r\n },\r\n setup(props){\r\n const {bafx} = toRefs(props)\r\n\r\n return {\r\n bafx\r\n }\r\n },\r\n})\r\n","import { render } from \"./CassHomeDatanalysis.vue?vue&type=template&id=79012547&scoped=true&ts=true\"\nimport script from \"./CassHomeDatanalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./CassHomeDatanalysis.vue?vue&type=script&lang=ts\"\n\nimport \"./CassHomeDatanalysis.vue?vue&type=style&index=0&id=79012547&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-79012547\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-946ac340\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"CassHomePrescriptanslysis\" }\nconst _hoisted_2 = { class: \"top\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_title\" }, \"处方分析\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"top_detail mainColor\" }, \"更多 >\", -1))\nconst _hoisted_5 = {\n key: 0,\n class: \"content\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"thead\", null, [\n /*#__PURE__*/_createElementVNode(\"tr\", null, [\n /*#__PURE__*/_createElementVNode(\"td\", null, \"处方名\"),\n /*#__PURE__*/_createElementVNode(\"td\", { clas: \"text-center w90\" }, \"使用次数\"),\n /*#__PURE__*/_createElementVNode(\"td\", { clas: \"text-center w90\" }, \"平均疗效\")\n ])\n], -1))\nconst _hoisted_7 = { class: \"fontWeight\" }\nconst _hoisted_8 = { class: \"text-center color w90\" }\nconst _hoisted_9 = { class: \"text-center color w90\" }\nconst _hoisted_10 = {\n key: 1,\n style: {\"padding\":\"15px\",\"text-align\":\"center\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_router_link, { to: { name: 'prescriptanslysis' } }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n (_ctx.cffx.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"table\", null, [\n _hoisted_6,\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.cffx, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_7, _toDisplayString(item.fjName), 1),\n _createElementVNode(\"td\", _hoisted_8, _toDisplayString(item.useCount), 1),\n _createElementVNode(\"td\", _hoisted_9, _toDisplayString(_ctx.getAvgEff(item.avgEff)), 1)\n ]))\n }), 256))\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, \"暂无处方分析,或正在加载中\"))\n ]))\n}","\r\nimport { defineComponent, toRefs, computed } 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: \"CassHomePrescriptanslysis\",\r\n components: {},\r\n props: {\r\n cffx: {\r\n type: Array,\r\n default: []\r\n }\r\n },\r\n setup(props) {\r\n const { cffx } = toRefs(props)\r\n\r\n const getAvgEff = (avgEff:number)=>{\r\n if(avgEff === -1){\r\n return '--'\r\n }else{\r\n return avgEff + '%'\r\n }\r\n }\r\n\r\n return {\r\n cffx,\r\n getAvgEff,\r\n }\r\n },\r\n})\r\n","import { render } from \"./CassHomePrescriptanslysis.vue?vue&type=template&id=946ac340&scoped=true&ts=true\"\nimport script from \"./CassHomePrescriptanslysis.vue?vue&type=script&lang=ts\"\nexport * from \"./CassHomePrescriptanslysis.vue?vue&type=script&lang=ts\"\n\nimport \"./CassHomePrescriptanslysis.vue?vue&type=style&index=0&id=946ac340&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-946ac340\"]])\n\nexport default __exports__","\r\nimport { defineComponent, nextTick, reactive, ref, watch } from 'vue';\r\nimport { useRouter } from 'vue-router';\r\nimport { useStore } from 'vuex';\r\n\r\n// 引入第三方工具\r\n\r\n// 引入第三方组件\r\n\r\n// 引入公共组件\r\nimport brain from '@c/public/brain/brain.vue'\r\n// 引入路由独有组件\r\nimport CassHomeCard from './components/CassHomeCard.vue'\r\nimport CassHomeDatanalysis from './components/CassHomeDatanalysis.vue'\r\nimport CassHomePrescriptanslysis from './components/CassHomePrescriptanslysis.vue'\r\n// 引入接口函数\r\nimport { getAnalysisDetail, getAnalysisSummary } from '@r/api/xingling'\r\n// 引入公共函数\r\n\r\n// 引入常量\r\n\r\n// 引入变量\r\n\r\nexport default defineComponent({\r\n name: \"CassHome\",\r\n components: {\r\n brain,\r\n CassHomeCard, CassHomePrescriptanslysis, CassHomeDatanalysis\r\n },\r\n props: {\r\n\r\n },\r\n setup() {\r\n const router = useRouter();\r\n const store = useStore();\r\n\r\n //导航\r\n const navList = reactive([\r\n {\r\n img: '/images/brain/b1.png',\r\n text: '个人模型',\r\n isActive: true,\r\n info: [\r\n {\r\n text: '启用中',\r\n count: '0',\r\n unit: '个'\r\n },\r\n {\r\n text: '禁用',\r\n count: '0',\r\n unit: '个'\r\n },\r\n ],\r\n type:'nav',\r\n to:'PersonalTemplate',\r\n },\r\n {\r\n img: '/images/brain/b2.png',\r\n text: '模型分析',\r\n isActive: false,\r\n count: '0',\r\n unit: '个',\r\n to:'datanalysis',\r\n type:'nav',\r\n info:[],\r\n },\r\n {\r\n img: '/images/brain/b3.png',\r\n text: '处方分析',\r\n isActive: false,\r\n count: '0',\r\n unit: '个',\r\n to:'prescriptanslysis',\r\n type:'nav',\r\n info:[],\r\n },\r\n {\r\n img: '/images/brain/b4.png',\r\n text: '个人模型',\r\n isActive: false,\r\n count: '0',\r\n unit: '个',\r\n to:'PersonalTemplate',\r\n type:'nav',\r\n info:[],\r\n },\r\n {\r\n img: '/images/brain/b5.png',\r\n text: '种子模型',\r\n isActive: false,\r\n count: '0',\r\n unit: '个',\r\n to:'templateImport',\r\n type:'nav',\r\n info:[],\r\n },\r\n {\r\n img: '/images/brain/b6.png',\r\n text: '模型演练',\r\n isActive: false,\r\n info: [],\r\n to:'modeldrill',\r\n type:'nav',\r\n },\r\n {\r\n img: '/images/brain/b7.png',\r\n text: '病案管理',\r\n isActive: false,\r\n info: [],\r\n to:'MedicalManage',\r\n type:'nav',\r\n },\r\n {\r\n img: '/images/brain/b8.png',\r\n text: '临床研讨',\r\n isActive: false,\r\n info: [],\r\n to:'discuss',\r\n type:'nav',\r\n },\r\n ])\r\n const pointList = reactive([]) //脑中点\r\n const personCount = ref(0) // 个人模板数量\r\n const zzCount = ref(0)// 种子模板数量\r\n const bafx:any = reactive({}) //模型分析\r\n const cffx:any[] = reactive([]) //处方分析\r\n const isShowDatanalysis = ref(false) // 是否显示模型分析\r\n const isShowPrescriptanslysis = ref(false) //是否显示处方分析\r\n const brainBoxRef:any = ref(null)\r\n const isShowBrain = ref(false)\r\n const width = ref('100%')\r\n\r\n getAnalysisDetail({\r\n data: {\r\n emrNum: 1,\r\n rxNum: 9,\r\n _times: new Date().getTime()\r\n }\r\n }).then((data: any) => {\r\n Object.assign(bafx,data.analysisVms[0] )\r\n cffx.splice(0, cffx.length, ...data.rxAnalysisVms )\r\n })\r\n\r\n \r\n getAnalysisSummary({\r\n data: {\r\n num: 10,\r\n _times: new Date().getTime()\r\n }\r\n }).then((data: any) => {\r\n data.dataStatisticsVms.forEach((item: any) => {\r\n if (item.type === 1) {\r\n //个人模型\r\n navList.map((navItem:any)=>{\r\n if(navItem.to==='PersonalTemplate'){\r\n if(navItem.info.length){\r\n navItem.info[0].count = item.quantity\r\n navItem.info[1].count = item.disabledQuantity\r\n }else{\r\n navItem.count = item.quantity + item.disabledQuantity\r\n }\r\n }\r\n })\r\n personCount.value = item.quantity + item.disabledQuantity\r\n } else if (item.type === 2) {\r\n //模型分析\r\n navList.map((navItem:any)=>{\r\n if(navItem.to==='datanalysis'){\r\n navItem.count = item.quantity\r\n }\r\n })\r\n } else if (item.type === 3) {\r\n //处方分析\r\n navList.map((navItem:any)=>{\r\n if(navItem.to==='prescriptanslysis'){\r\n navItem.count = item.quantity\r\n }\r\n })\r\n } else if (item.type === 4) {\r\n //种子模型\r\n navList.map((navItem:any)=>{\r\n if(navItem.to==='templateImport'){\r\n navItem.count = item.quantity\r\n }\r\n })\r\n zzCount.value = item.quantity\r\n }\r\n })\r\n \r\n const temList:any[] = []\r\n data.brainMapVms.forEach((item:any) => {\r\n\r\n let text = item.dxName\r\n if(item.alias){\r\n text = text + '(' + item.alias +')'\r\n }\r\n\r\n const tem = {\r\n bgcolor: item.color, \r\n level: item.rate, \r\n text: text, \r\n isActive: false, \r\n }\r\n temList.push(tem)\r\n })\r\n\r\n\r\n // @ts-ignore\r\n pointList.splice(0, pointList.length, ...temList )\r\n\r\n })\r\n\r\n\r\n const brainClick = (data:any) => {\r\n if(data.type === 'nav'){\r\n router.push({ name: data.to })\r\n }\r\n }\r\n\r\n\r\n watch(()=>{store.state.routeList}, () => {\r\n const temList:any[] = []\r\n navList.forEach((navItem:any) => {\r\n for(let i=0; i{\r\n if(navItem.to ==='datanalysis'){\r\n isShowDatanalysis.value = true\r\n }\r\n if(navItem.to ==='prescriptanslysis'){\r\n isShowPrescriptanslysis.value = true\r\n }\r\n })\r\n\r\n navList.splice(0, navList.length, ...temList)\r\n }, { immediate:true, deep:true })\r\n\r\n nextTick(() => {\r\n if( brainBoxRef.value.offsetWidth > brainBoxRef.value.offsetHeight ){\r\n width.value = brainBoxRef.value.offsetHeight + 50 + 'px'\r\n }\r\n isShowBrain.value = true\r\n })\r\n\r\n return {\r\n brainBoxRef,isShowBrain,\r\n personCount, zzCount,\r\n bafx,isShowDatanalysis,\r\n cffx,isShowPrescriptanslysis,\r\n width,\r\n navList, pointList, brainClick\r\n }\r\n },\r\n})\r\n\r\n\r\n","import { render } from \"./CassHome.vue?vue&type=template&id=77197190&scoped=true&ts=true\"\nimport script from \"./CassHome.vue?vue&type=script&lang=ts\"\nexport * from \"./CassHome.vue?vue&type=script&lang=ts\"\n\nimport \"./CassHome.vue?vue&type=style&index=0&id=77197190&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-77197190\"]])\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 { 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}","let ImgUrlFix :string = location.origin + location.pathname.replace('index.html', '')\r\n\r\nexport {\r\n ImgUrlFix,\r\n}\r\n\r\n//个人模型\r\nexport const header = [\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 const header2 = [\r\n '证型名称',\r\n '辨证要点',\r\n '辨证分析',\r\n '治则治法',\r\n '方药',\r\n '组方',\r\n '特色诊疗',\r\n]\r\n\r\nexport const effcollDateSelect = [\r\n {\r\n value:1,\r\n label:'一天'\r\n },\r\n {\r\n value:2,\r\n label:'二天'\r\n },\r\n {\r\n value:3,\r\n label:'三天'\r\n },\r\n {\r\n value:4,\r\n label:'四天'\r\n },\r\n {\r\n value:5,\r\n label:'五天'\r\n },\r\n {\r\n value:6,\r\n label:'六天'\r\n },\r\n {\r\n value:7,\r\n label:'七天'\r\n },\r\n {\r\n value:8,\r\n label:'八天'\r\n },\r\n {\r\n value:9,\r\n label:'九天'\r\n },\r\n]\r\n\r\nexport const effcollType = [\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\n\r\nexport const directionType = [\r\n {\r\n value:1,\r\n label:'口服'\r\n },\r\n {\r\n value:4,\r\n label:'外用'\r\n },\r\n\r\n]\r\n\r\nexport const defaultMethod = [\r\n {\r\n value:'先煎',\r\n label:'先煎'\r\n },\r\n {\r\n value:'冲服',\r\n label:'冲服'\r\n },\r\n {\r\n value:'包煎',\r\n label:'包煎'\r\n },\r\n {\r\n value:'另煎',\r\n label:'另煎'\r\n },\r\n {\r\n value:'后下',\r\n label:'后下'\r\n },\r\n {\r\n value:'烊化',\r\n label:'烊化'\r\n },\r\n {\r\n value:'焗服',\r\n label:'焗服'\r\n },\r\n]\r\nexport const caseTableHeader = [\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\nexport const charCodeArr: string[] = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ]\r\n\r\nexport const ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \r\n\r\nexport const SEX = [\r\n {\r\n value: -1,\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\n\r\nexport const AGE = [\r\n {\r\n value: '0-0',\r\n label:'不限'\r\n },\r\n {\r\n value: '0-14',\r\n label:'0-14'\r\n },\r\n]\r\n\r\n//标点符号, 不含 + 和 = \r\nexport const markReg = /([。?!,、:;“”()—…《》<>~/【】{}'’‘\"\",&$#@`?{}-])|(\\\\)|(\\[)|(\\])|(\\.)|(\\/)|(\\*)|(\\|)|(\\_)|(\\!)|(\\%)|(\\^)|(\\()|(\\))|(\\¥)/g\r\n\r\n// 药品煎煮法\r\nexport const drugUeWayList = [{\r\n name: '先煎',\r\n id: '001'\r\n},{\r\n name: '后下',\r\n id: '002'\r\n},{\r\n name: '冲服',\r\n id: '003'\r\n},{\r\n name: '包煎',\r\n id: '004'\r\n},{\r\n name: '焗服',\r\n id: '005'\r\n},{\r\n name: '烊化',\r\n id: '006'\r\n},{\r\n name: '另煎',\r\n id: '007'\r\n}]\r\nexport const qidList = [{ title: '每天一次(qd)', value: '11'}, \r\n{ title: '每天二次(bid)', value: '12'}, \r\n{ title: '每天三次(tid)', value: '13'}, \r\n{ title: '每天四次(qid)', value: '14'}, \r\n{ title: '每周一次(qw)', value: '21'}, \r\n{ title: '每周二次(biw)', value: '22' }, \r\n{ title: '每周三次(tiw)', value: '23' }, \r\n{ title: '每小时一次(qh)', value: '31' }, \r\n{ title: '每2小时一次(q2h)', value: '32' }, \r\n{ title: '每4小时一次(q4h)', value: '33' }, \r\n{ title: '每5小时一次(q5h)', value: '34' }, \r\n{ title: '每6小时一次(q6h)', value: '35' }, \r\n{ title: '每8小时一次(q8h)', value: '36' }, \r\n{ title: '每12小时一次(q12h)', value: '37' }, \r\n{ title: '每晚一次(qn)', value: '41' }, \r\n{ title: '隔天一次(qod)', value: '42' }, \r\n{ title: '五天一次(q5d)', value: '43' }, \r\n{ title: '十天一次(q10d)', value: '44' }, \r\n{ title: '12小时维持', value: '51' }, \r\n{ title: '24小时维持', value: '52' }, \r\n{ title: '立即(st)', value: '61' }, \r\n{ title: '必要时使用(prn)', value: '62' }]\r\n\r\n\r\nexport const groupLabelList = [\r\n {\r\n text:'险',\r\n value: '1',\r\n },\r\n {\r\n text:'重',\r\n value: '2',\r\n },\r\n {\r\n text:'针',\r\n value: '3',\r\n },\r\n {\r\n text:'灸',\r\n value: '4',\r\n },\r\n {\r\n text:'推',\r\n value: '5',\r\n },\r\n {\r\n text:'膳',\r\n value: '6',\r\n },\r\n {\r\n text:'试',\r\n value: '7',\r\n },\r\n {\r\n text:'随',\r\n value: '8',\r\n },\r\n {\r\n text:'颗',\r\n value: '9',\r\n },\r\n {\r\n text:'膏',\r\n value: '10',\r\n },\r\n {\r\n text:'贴',\r\n value: '11',\r\n },\r\n {\r\n text:'检',\r\n value: '12',\r\n },\r\n {\r\n text:'影',\r\n value: '13',\r\n },\r\n {\r\n text:'外',\r\n value: '14',\r\n },\r\n]\r\n\r\nexport enum EYE_VALUE {\r\n nameAlias = '病名别名',\r\n groupOfLabel = '证型标签',\r\n syndiffAlias = '证型别名'\r\n}\r\n\r\nexport const EYE_LIST = [\r\n {\r\n label:EYE_VALUE.nameAlias,\r\n },\r\n {\r\n label:EYE_VALUE.groupOfLabel,\r\n },\r\n {\r\n label:EYE_VALUE.syndiffAlias,\r\n },\r\n]\r\n\r\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!./CassHome.vue?vue&type=style&index=0&id=77197190&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 { 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}","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!./CassHomeDatanalysis.vue?vue&type=style&index=0&id=79012547&lang=scss&scoped=true\"","!function(e,_){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=_(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],_):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh_cn=_(e.dayjs)}(this,(function(e){\"use strict\";function _(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=_(e),d={name:\"zh-cn\",weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),ordinal:function(e,_){return\"W\"===_?e+\"周\":e+\"日\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah点mm分\",LLLL:\"YYYY年M月D日ddddAh点mm分\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},meridiem:function(e,_){var t=100*e+_;return t<600?\"凌晨\":t<900?\"早上\":t<1100?\"上午\":t<1300?\"中午\":t<1800?\"下午\":\"晚上\"}};return t.default.locale(d,null,!0),d}));","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4214f81b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"circle\" }\nconst _hoisted_2 = [\"src\", \"poster\"]\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = {\n class: \"pointList\",\n ref: \"pointListRef\"\n}\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = {\n class: \"navBox\",\n ref: \"navBoxRef\"\n}\nconst _hoisted_7 = { class: \"nav\" }\nconst _hoisted_8 = { class: \"navItem\" }\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"activeItemImgBox\" }\nconst _hoisted_11 = [\"src\"]\nconst _hoisted_12 = { class: \"activeItemContent\" }\nconst _hoisted_13 = { class: \"ml-25\" }\nconst _hoisted_14 = { class: \"mainColor\" }\nconst _hoisted_15 = {\n key: 1,\n class: \"ml-25\"\n}\nconst _hoisted_16 = { class: \"mainColor\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = { class: \"commonItemImgBox\" }\nconst _hoisted_19 = [\"src\"]\nconst _hoisted_20 = { class: \"commonItemContent ml-10\" }\nconst _hoisted_21 = { class: \"mainColor\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"brain\", { hasNav: _ctx.brainName === 'brain2' }]),\n style: _normalizeStyle({ width: _ctx.width }),\n ref: \"brainRef\"\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"video\", {\n class: \"brainImg\",\n autoplay: \"\",\n loop: \"\",\n muted: \"\",\n src: _ctx.ImgUrlFix+ 'images/brain/'+ _ctx.brainName +'.mp4',\n poster: _ctx.ImgUrlFix+ 'images/brain/'+ _ctx.brainName +'.gif'\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + 'images/brain/'+ _ctx.brainName +'.jpg'\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.pointList, (poin, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"poin\",\n onClick: ($event: any) => (_ctx.brainClickHandle(poin))\n }, [\n _createVNode(_component_el_tooltip, {\n class: \"box-item\",\n effect: \"dark\",\n content: poin.text,\n placement: \"top-start\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"oneLine\", 'poinItemText' + poin.level])\n }, _toDisplayString(poin.text), 3)\n ]),\n _: 2\n }, 1032, [\"content\"]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([poin.isActive ? 'poinItemActive' : '', 'poinItem' + poin.level])\n }, [\n _createElementVNode(\"div\", {\n class: \"poinItemCircle\",\n style: _normalizeStyle({ backgroundColor: poin.bgcolor })\n }, null, 4)\n ], 2)\n ], 8, _hoisted_5))\n }), 256))\n ], 512),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.navList, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n (item.isActive && item.info.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"activeItem pr-15\",\n onClick: ($event: any) => (_ctx.brainClickHandle(item))\n }, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + item.img\n }, null, 8, _hoisted_11)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"strong\", null, _toDisplayString(item.text), 1),\n (item.info.length > 1)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(item.info, (inner, idx) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", null, _toDisplayString(inner.text), 1),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"span\", null, _toDisplayString(inner.count), 1),\n _createElementVNode(\"span\", null, _toDisplayString(inner.unit), 1)\n ])\n ]))\n }), 256))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, _toDisplayString(item.info[0].text), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", null, _toDisplayString(item.info[0].count), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.info[0].unit), 1)\n ])\n ]))\n ])\n ], 8, _hoisted_9))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"commonItem\",\n onClick: ($event: any) => (_ctx.brainClickHandle(item))\n }, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"img\", {\n src: _ctx.ImgUrlFix + item.img\n }, null, 8, _hoisted_19)\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", null, _toDisplayString(item.text), 1),\n _createElementVNode(\"div\", _hoisted_21, _toDisplayString(item.count) + \" \" + _toDisplayString(item.unit), 1)\n ])\n ], 8, _hoisted_17))\n ]))\n }), 256))\n ])\n ], 512)\n ])\n ], 6))\n}","\r\n\r\n/*\r\n\r\n使用方法\r\n\r\n*/\r\n\r\nimport { defineComponent, toRefs, ref, nextTick, watch } from 'vue';\r\nimport type {PropType} from \"vue\"\r\n\r\n// 引入公共函数\r\nimport { pbFn } from '@u/publicMethod'\r\n\r\n// 引入常量\r\nimport { ImgUrlFix } from '@u/contant'\r\n\r\nimport {IBrainPoint, IBrainNav} from '@u/interface/brain'\r\n\r\n// 引入变量\r\n\r\nconst st = 0.901639; // 比例缩小\r\n\r\n//位置坐标\r\ninterface IPoinStation {\r\n x: number,\r\n y: number,\r\n width?: number,\r\n height?: number,\r\n text?: string,\r\n}\r\n\r\nexport default defineComponent({\r\n name: \"brain\",\r\n components: {},\r\n emits: {\r\n 'brainClick': null\r\n },\r\n props: {\r\n navList: {\r\n //左边导航菜单\r\n type: Array as PropType,\r\n default: []\r\n },\r\n pointList: {\r\n //脑中的点\r\n type: Array as PropType,\r\n default: []\r\n },\r\n brainName:{\r\n type: String,\r\n default: 'brain1'\r\n },\r\n width: {\r\n type: String,\r\n default: '100%'\r\n },\r\n\r\n },\r\n setup(props, { emit }) {\r\n const { navList, pointList, width, brainName } = toRefs(props)\r\n\r\n const brainRef: any = ref(null)\r\n const navBoxRef: any = ref(null)\r\n const pointListRef: any = ref(null)\r\n\r\n let poinSitionList: IPoinStation[] = [];\r\n let poinMaxW = 0; // 脑点的最大宽度\r\n let poinH = 0; //脑点的高度\r\n\r\n\r\n //针对极端随机情况,xy都为0,的时候重设\r\n const reSetPoinStation = () => {\r\n let count = 0;\r\n poinSitionList.forEach((item)=>{\r\n if(item.x === 0){\r\n count++\r\n }\r\n })\r\n if(count >= 2){\r\n randomPoinStation()\r\n }\r\n }\r\n\r\n\r\n // 设置脑中点的位置\r\n const randomPoinStation = () => {\r\n poinSitionList = []\r\n setTimeout(() => {\r\n if (brainRef.value.offsetWidth < 40) {\r\n randomPoinStation()\r\n } else {\r\n if (brainName.value!=='brain1') {\r\n pointListRef.value.style.left = '31%';\r\n pointListRef.value.style.right = '22%';\r\n pointListRef.value.style.top = '20%';\r\n pointListRef.value.style.bottom = '31%';\r\n } else {\r\n pointListRef.value.style.left = '23%';\r\n pointListRef.value.style.right = '23%';\r\n pointListRef.value.style.top = '23%';\r\n pointListRef.value.style.bottom = '24%';\r\n }\r\n\r\n const width = pointListRef.value.offsetWidth - poinMaxW\r\n const height = pointListRef.value.offsetHeight - poinH\r\n const itemList = document.querySelectorAll('.pointList .poin')\r\n\r\n\r\n for (let i = 0; i < itemList.length; i++) {\r\n let poinSition: IPoinStation = {\r\n x: 0,\r\n y: 0,\r\n width: (itemList[i] as any).offsetWidth,\r\n height: (itemList[i] as any).offsetHeight\r\n }\r\n\r\n //限制次数,以免位置不够产生死循环\r\n let count = 0;\r\n\r\n\r\n do {\r\n poinSition.x = pbFn.getRandomInt(0, width);\r\n poinSition.y = pbFn.getRandomInt(0, height);\r\n count++\r\n if (count > 500) {\r\n break;\r\n }\r\n } while (isInArray(poinSition, poinSitionList))\r\n\r\n // poinSition.width = (itemList[i] as any).offsetWidth;\r\n // poinSition.height = (itemList[i] as any).offsetHeight;\r\n poinSitionList.push(poinSition);\r\n\r\n (itemList[i] as any).style.left = poinSition.x + \"px\";\r\n (itemList[i] as any).style.top = poinSition.y + \"px\";\r\n (itemList[i] as any).style.maxWidth = poinMaxW + \"px\";\r\n (itemList[i] as any).style.maxHeight = poinH + \"px\";\r\n }\r\n }\r\n\r\n reSetPoinStation()\r\n\r\n }, 100)\r\n }\r\n\r\n //设置导航位置\r\n const setNavStation = () => {\r\n if (brainRef.value.offsetWidth < 40) {\r\n setNavStation()\r\n } else {\r\n setTimeout(() => {\r\n const brainWidt = parseInt(brainRef.value.offsetWidth)\r\n let degSt = 12;\r\n if(brainWidt > 1200){\r\n degSt = 8;\r\n }else if (brainWidt > 1100){\r\n degSt = 9;\r\n }else if(brainWidt > 1000) {\r\n degSt = 10;\r\n }\r\n navBoxRef.value.style.top = (brainWidt * st) / 2 + 'px'\r\n navBoxRef.value.style.right = (brainWidt * st) / 2 + 'px'\r\n const radius = brainWidt / 2 - 20;\r\n const itemList = document.querySelectorAll('.navBox .navItem')\r\n for (let i = 0; i < itemList.length; i++) {\r\n const deg = i * degSt / 180 * Math.PI;\r\n\r\n if(i === 6){\r\n (itemList[i] as any).style.left = '-' + ((pbFn.getLocation(radius, deg + 0.75).left + getX(i, degSt)) + 15) + \"px\";\r\n\r\n }else if(i === 5) {\r\n (itemList[i] as any).style.left = '-' + ((pbFn.getLocation(radius, deg + 0.75).left + getX(i, degSt)) + 10) + \"px\";\r\n }else{\r\n (itemList[i] as any).style.left = '-' + (pbFn.getLocation(radius, deg + 0.75).left + getX(i, degSt)) + \"px\";\r\n\r\n }\r\n \r\n if(i===0){\r\n (itemList[i] as any).style.top = - (pbFn.getLocation(radius, deg + 0.75).top) + \"px\";\r\n }else{\r\n (itemList[i] as any).style.top = - ((pbFn.getLocation(radius, deg + 0.75).top) - 20) + \"px\";\r\n }\r\n \r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n //万物的开始\r\n const start = () =>{\r\n if (pointList.value.length < 6) {\r\n poinMaxW = 120\r\n poinH = 80\r\n } else {\r\n poinMaxW = 80\r\n poinH = 80\r\n }\r\n\r\n //设置脑中框和点的位置\r\n nextTick(() => {\r\n randomPoinStation();\r\n })\r\n\r\n //设置 导航的位置\r\n if (brainName.value!=='brain1') {\r\n nextTick(() => {\r\n navBoxRef.value.style.display = 'block';\r\n setNavStation();\r\n })\r\n }else{\r\n nextTick(() => {\r\n navBoxRef.value.style.display = 'none';\r\n })\r\n \r\n }\r\n }\r\n\r\n watch(()=>props.pointList, start, { immediate: true, deep: true })\r\n watch(()=>props.navList, start, { immediate: true, deep: true })\r\n\r\n\r\n const brainClickHandle = (item: any) => {\r\n emit('brainClick', item)\r\n }\r\n return {\r\n ImgUrlFix,\r\n brainRef, navBoxRef, pointListRef, brainName,\r\n navList, pointList, width,\r\n brainClickHandle,\r\n }\r\n\r\n\r\n // 获得导航的X坐标\r\n function getX(i: number, degSt:number=12) {\r\n if(degSt === 12){\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i) * 6\r\n }else if(degSt === 8){\r\n return (Math.abs(6 - i) * 4) - 25 - i * 8\r\n }else if(degSt === 9){\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i) * 8\r\n }else if(degSt === 10){\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i) * 8\r\n }else{\r\n return (Math.abs(6 - i) * 4) + 25 + Math.abs(6 - i)\r\n }\r\n }\r\n\r\n // 检查脑点是否已经在坐标内\r\n function isOverlap(rect1: any, rect2: any) {\r\n const l1 = { x: rect1.x, y: rect1.y }\r\n const r1 = { x: rect1.x + rect1.width, y: rect1.y + rect1.height }\r\n const l2 = { x: rect2.x, y: rect2.y }\r\n const r2 = { x: rect2.x + rect2.width, y: rect2.y + rect2.height }\r\n if (\r\n l1.x > r2.x ||\r\n l2.x > r1.x ||\r\n l1.y > r2.y ||\r\n l2.y > r1.y\r\n ) return false\r\n return true\r\n }\r\n\r\n function isInArray(poinSition: IPoinStation, poinSitionList: IPoinStation[]) {\r\n let flag = false;\r\n poinSitionList.forEach((item) => {\r\n if (isOverlap(poinSition, item)) {\r\n flag = true\r\n }\r\n })\r\n return flag;\r\n }\r\n },\r\n})\r\n\r\n\r\n\r\n","import { render } from \"./brain.vue?vue&type=template&id=4214f81b&scoped=true&ts=true\"\nimport script from \"./brain.vue?vue&type=script&lang=ts\"\nexport * from \"./brain.vue?vue&type=script&lang=ts\"\n\nimport \"./brain.vue?vue&type=style&index=0&id=4214f81b&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-4214f81b\"]])\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!./CassHomePrescriptanslysis.vue?vue&type=style&index=0&id=946ac340&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!./dataStatistics.vue?vue&type=style&index=0&id=5b016090&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*/\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}","export class SynDiffDrug{\r\n drugId: string = '' //药品id\r\n drugName: string = '' //药品名称\r\n fjbDrugId:string = '' //方剂宝药品id\r\n fjbDrugName:string = '' //方剂宝药品名称\r\n aliasName:string = '' //药品别名\r\n unit:string = '' //药品单位\r\n specs: string = '' //规格\r\n qty: number = 0 //用量\r\n direction: string = '' //用法\r\n remark: string = '' //注意事项\r\n checkRemind:number = 0 //用药安全检查\r\n factory:string = '' // 厂家\r\n id:string = '' //后端有用,前端目前没用上\r\n drugType:number = 0 // 药品类型\r\n \r\n //前端需要用到,另外增加的属性\r\n drugState?: number // 加药,减药,改药\r\n bingzongIndex?:Number // 病种弹窗的位置\r\n pharmacology?:string //性味归经\r\n major?:string //功效主治\r\n cdyl?:Boolean //超大用量\r\n sbf?:Boolean //18反\r\n sjw?:Boolean //19畏\r\n sbfDrug?:SynDiffDrug|null|SynDiffDrug[] //18反药\r\n sjwDrug?:SynDiffDrug|null|SynDiffDrug[] //19畏药\r\n taboo?:Number //禁忌情况\r\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":""}