u-charts.min.js 190 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573
  1. /*
  2. * uCharts (R)
  3. * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台
  4. * Copyright (C) 2021 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.
  5. * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  6. * 复制使用请保留本段注释,感谢支持开源!
  7. *
  8. * uCharts (R) 官方网站
  9. * https://www.uCharts.cn
  10. *
  11. * 开源地址:
  12. * https://gitee.com/uCharts/uCharts
  13. *
  14. * uni-app插件市场地址:
  15. * http://ext.dcloud.net.cn/plugin?id=271
  16. *
  17. */
  18. "use strict";
  19. var config = {
  20. version: "v2.5.0-20230101",
  21. yAxisWidth: 15,
  22. xAxisHeight: 22,
  23. padding: [10, 10, 10, 10],
  24. rotate: false,
  25. fontSize: 13,
  26. fontColor: "#666666",
  27. dataPointShape: ["circle", "circle", "circle", "circle"],
  28. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"],
  29. linearColor: ["#0EE2F8", "#2BDCA8", "#FA7D8D", "#EB88E2", "#2AE3A0", "#0EE2F8", "#EB88E2", "#6773E3",
  30. "#F78A85"
  31. ],
  32. pieChartLinePadding: 15,
  33. pieChartTextPadding: 5,
  34. titleFontSize: 20,
  35. subtitleFontSize: 15,
  36. radarLabelTextMargin: 13
  37. };
  38. var assign = function(e, ...t) {
  39. if (e == null) {
  40. throw new TypeError("[uCharts] Cannot convert undefined or null to object")
  41. }
  42. if (!t || t.length <= 0) {
  43. return e
  44. }
  45. function i(e, a) {
  46. for (let t in a) {
  47. e[t] = e[t] && e[t].toString() === "[object Object]" ? i(e[t], a[t]) : e[t] = a[t]
  48. }
  49. return e
  50. }
  51. t.forEach(t => {
  52. e = i(e, t)
  53. });
  54. return e
  55. };
  56. var util = {
  57. toFixed: function t(e, a) {
  58. a = a || 2;
  59. if (this.isFloat(e)) {
  60. e = e.toFixed(a)
  61. }
  62. return e
  63. },
  64. isFloat: function t(e) {
  65. return e % 1 !== 0
  66. },
  67. approximatelyEqual: function t(e, a) {
  68. return Math.abs(e - a) < 1e-10
  69. },
  70. isSameSign: function t(e, a) {
  71. return Math.abs(e) === e && Math.abs(a) === a || Math.abs(e) !== e && Math.abs(a) !== a
  72. },
  73. isSameXCoordinateArea: function t(e, a) {
  74. return this.isSameSign(e.x, a.x)
  75. },
  76. isCollision: function t(e, a) {
  77. e.end = {};
  78. e.end.x = e.start.x + e.width;
  79. e.end.y = e.start.y - e.height;
  80. a.end = {};
  81. a.end.x = a.start.x + a.width;
  82. a.end.y = a.start.y - a.height;
  83. var i = a.start.x > e.end.x || a.end.x < e.start.x || a.end.y > e.start.y || a.start.y < e.end.y;
  84. return !i
  85. }
  86. };
  87. function getH5Offset(t) {
  88. t.mp = {
  89. changedTouches: []
  90. };
  91. t.mp.changedTouches.push({
  92. x: t.offsetX,
  93. y: t.offsetY
  94. });
  95. return t
  96. }
  97. function hexToRgb(t, e) {
  98. var a = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  99. var i = t.replace(a, function(t, e, a, i) {
  100. return e + e + a + a + i + i
  101. });
  102. var r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);
  103. var o = parseInt(r[1], 16);
  104. var n = parseInt(r[2], 16);
  105. var l = parseInt(r[3], 16);
  106. return "rgba(" + o + "," + n + "," + l + "," + e + ")"
  107. }
  108. function findRange(t, e, a) {
  109. if (isNaN(t)) {
  110. throw new Error("[uCharts] series数据需为Number格式")
  111. }
  112. a = a || 10;
  113. e = e ? e : "upper";
  114. var i = 1;
  115. while (a < 1) {
  116. a *= 10;
  117. i *= 10
  118. }
  119. if (e === "upper") {
  120. t = Math.ceil(t * i)
  121. } else {
  122. t = Math.floor(t * i)
  123. }
  124. while (t % a !== 0) {
  125. if (e === "upper") {
  126. if (t == t + 1) {
  127. break
  128. }
  129. t++
  130. } else {
  131. t--
  132. }
  133. }
  134. return t / i
  135. }
  136. function calCandleMA(o, t, e, n) {
  137. let a = [];
  138. for (let r = 0; r < o.length; r++) {
  139. let i = {
  140. data: [],
  141. name: t[r],
  142. color: e[r]
  143. };
  144. for (let a = 0, t = n.length; a < t; a++) {
  145. if (a < o[r]) {
  146. i.data.push(null);
  147. continue
  148. }
  149. let e = 0;
  150. for (let t = 0; t < o[r]; t++) {
  151. e += n[a - t][1]
  152. }
  153. i.data.push(+(e / o[r]).toFixed(3))
  154. }
  155. a.push(i)
  156. }
  157. return a
  158. }
  159. function calValidDistance(t, e, a, i, r) {
  160. var o = r.width - r.area[1] - r.area[3];
  161. var n = a.eachSpacing * (r.chartData.xAxisData.xAxisPoints.length - 1);
  162. if (r.type == "mount" && r.extra && r.extra.mount && r.extra.mount.widthRatio && r.extra.mount.widthRatio > 1) {
  163. if (r.extra.mount.widthRatio > 2) r.extra.mount.widthRatio = 2;
  164. n += (r.extra.mount.widthRatio - 1) * a.eachSpacing
  165. }
  166. var l = e;
  167. if (e >= 0) {
  168. l = 0;
  169. t.uevent.trigger("scrollLeft");
  170. t.scrollOption.position = "left";
  171. r.xAxis.scrollPosition = "left"
  172. } else if (Math.abs(e) >= n - o) {
  173. l = o - n;
  174. t.uevent.trigger("scrollRight");
  175. t.scrollOption.position = "right";
  176. r.xAxis.scrollPosition = "right"
  177. } else {
  178. t.scrollOption.position = e;
  179. r.xAxis.scrollPosition = e
  180. }
  181. return l
  182. }
  183. function isInAngleRange(t, e, a) {
  184. function i(t) {
  185. while (t < 0) {
  186. t += 2 * Math.PI
  187. }
  188. while (t > 2 * Math.PI) {
  189. t -= 2 * Math.PI
  190. }
  191. return t
  192. }
  193. t = i(t);
  194. e = i(e);
  195. a = i(a);
  196. if (e > a) {
  197. a += 2 * Math.PI;
  198. if (t < e) {
  199. t += 2 * Math.PI
  200. }
  201. }
  202. return t >= e && t <= a
  203. }
  204. function createCurveControlPoints(t, e) {
  205. function a(t, e) {
  206. if (t[e - 1] && t[e + 1]) {
  207. return t[e].y >= Math.max(t[e - 1].y, t[e + 1].y) || t[e].y <= Math.min(t[e - 1].y, t[e + 1].y)
  208. } else {
  209. return false
  210. }
  211. }
  212. function c(t, e) {
  213. if (t[e - 1] && t[e + 1]) {
  214. return t[e].x >= Math.max(t[e - 1].x, t[e + 1].x) || t[e].x <= Math.min(t[e - 1].x, t[e + 1].x)
  215. } else {
  216. return false
  217. }
  218. }
  219. var i = .2;
  220. var r = .2;
  221. var o = null;
  222. var n = null;
  223. var l = null;
  224. var s = null;
  225. if (e < 1) {
  226. o = t[0].x + (t[1].x - t[0].x) * i;
  227. n = t[0].y + (t[1].y - t[0].y) * i
  228. } else {
  229. o = t[e].x + (t[e + 1].x - t[e - 1].x) * i;
  230. n = t[e].y + (t[e + 1].y - t[e - 1].y) * i
  231. }
  232. if (e > t.length - 3) {
  233. var h = t.length - 1;
  234. l = t[h].x - (t[h].x - t[h - 1].x) * r;
  235. s = t[h].y - (t[h].y - t[h - 1].y) * r
  236. } else {
  237. l = t[e + 1].x - (t[e + 2].x - t[e].x) * r;
  238. s = t[e + 1].y - (t[e + 2].y - t[e].y) * r
  239. }
  240. if (a(t, e + 1)) {
  241. s = t[e + 1].y
  242. }
  243. if (a(t, e)) {
  244. n = t[e].y
  245. }
  246. if (c(t, e + 1)) {
  247. l = t[e + 1].x
  248. }
  249. if (c(t, e)) {
  250. o = t[e].x
  251. }
  252. if (n >= Math.max(t[e].y, t[e + 1].y) || n <= Math.min(t[e].y, t[e + 1].y)) {
  253. n = t[e].y
  254. }
  255. if (s >= Math.max(t[e].y, t[e + 1].y) || s <= Math.min(t[e].y, t[e + 1].y)) {
  256. s = t[e + 1].y
  257. }
  258. if (o >= Math.max(t[e].x, t[e + 1].x) || o <= Math.min(t[e].x, t[e + 1].x)) {
  259. o = t[e].x
  260. }
  261. if (l >= Math.max(t[e].x, t[e + 1].x) || l <= Math.min(t[e].x, t[e + 1].x)) {
  262. l = t[e + 1].x
  263. }
  264. return {
  265. ctrA: {
  266. x: o,
  267. y: n
  268. },
  269. ctrB: {
  270. x: l,
  271. y: s
  272. }
  273. }
  274. }
  275. function convertCoordinateOrigin(t, e, a) {
  276. return {
  277. x: a.x + t,
  278. y: a.y - e
  279. }
  280. }
  281. function avoidCollision(t, e) {
  282. if (e) {
  283. while (util.isCollision(t, e)) {
  284. if (t.start.x > 0) {
  285. t.start.y--
  286. } else if (t.start.x < 0) {
  287. t.start.y++
  288. } else {
  289. if (t.start.y > 0) {
  290. t.start.y++
  291. } else {
  292. t.start.y--
  293. }
  294. }
  295. }
  296. }
  297. return t
  298. }
  299. function fixPieSeries(e, a, t) {
  300. let i = [];
  301. if (e.length > 0 && e[0].data.constructor.toString().indexOf("Array") > -1) {
  302. a._pieSeries_ = e;
  303. let t = e[0].data;
  304. for (var r = 0; r < t.length; r++) {
  305. t[r].formatter = e[0].formatter;
  306. t[r].data = t[r].value;
  307. i.push(t[r])
  308. }
  309. a.series = i
  310. } else {
  311. i = e
  312. }
  313. return i
  314. }
  315. function fillSeries(e, a, i) {
  316. var r = 0;
  317. for (var o = 0; o < e.length; o++) {
  318. let t = e[o];
  319. if (!t.color) {
  320. t.color = i.color[r];
  321. r = (r + 1) % i.color.length
  322. }
  323. if (!t.linearIndex) {
  324. t.linearIndex = o
  325. }
  326. if (!t.index) {
  327. t.index = 0
  328. }
  329. if (!t.type) {
  330. t.type = a.type
  331. }
  332. if (typeof t.show == "undefined") {
  333. t.show = true
  334. }
  335. if (!t.type) {
  336. t.type = a.type
  337. }
  338. if (!t.pointShape) {
  339. t.pointShape = "circle"
  340. }
  341. if (!t.legendShape) {
  342. switch (t.type) {
  343. case "line":
  344. t.legendShape = "line";
  345. break;
  346. case "column":
  347. case "bar":
  348. t.legendShape = "rect";
  349. break;
  350. case "area":
  351. case "mount":
  352. t.legendShape = "triangle";
  353. break;
  354. default:
  355. t.legendShape = "circle"
  356. }
  357. }
  358. }
  359. return e
  360. }
  361. function fillCustomColor(t, e, a, i) {
  362. var r = e || [];
  363. if (t == "custom" && r.length == 0) {
  364. r = i.linearColor
  365. }
  366. if (t == "custom" && r.length < a.length) {
  367. let t = a.length - r.length;
  368. for (var o = 0; o < t; o++) {
  369. r.push(i.linearColor[(o + 1) % i.linearColor.length])
  370. }
  371. }
  372. return r
  373. }
  374. function getDataRange(t, e) {
  375. var a = 0;
  376. var i = e - t;
  377. if (i >= 1e4) {
  378. a = 1e3
  379. } else if (i >= 1e3) {
  380. a = 100
  381. } else if (i >= 100) {
  382. a = 10
  383. } else if (i >= 10) {
  384. a = 5
  385. } else if (i >= 1) {
  386. a = 1
  387. } else if (i >= .1) {
  388. a = .1
  389. } else if (i >= .01) {
  390. a = .01
  391. } else if (i >= .001) {
  392. a = .001
  393. } else if (i >= 1e-4) {
  394. a = 1e-4
  395. } else if (i >= 1e-5) {
  396. a = 1e-5
  397. } else {
  398. a = 1e-6
  399. }
  400. return {
  401. minRange: findRange(t, "lower", a),
  402. maxRange: findRange(e, "upper", a)
  403. }
  404. }
  405. function measureText(a, t, e) {
  406. var i = 0;
  407. a = String(a);
  408. e = false;
  409. if (e !== false && e !== undefined && e.setFontSize && e.measureText) {
  410. e.setFontSize(t);
  411. return e.measureText(a).width
  412. } else {
  413. var a = a.split("");
  414. for (let e = 0; e < a.length; e++) {
  415. let t = a[e];
  416. if (/[a-zA-Z]/.test(t)) {
  417. i += 7
  418. } else if (/[0-9]/.test(t)) {
  419. i += 5.5
  420. } else if (/\./.test(t)) {
  421. i += 2.7
  422. } else if (/-/.test(t)) {
  423. i += 3.25
  424. } else if (/:/.test(t)) {
  425. i += 2.5
  426. } else if (/[\u4e00-\u9fa5]/.test(t)) {
  427. i += 10
  428. } else if (/\(|\)/.test(t)) {
  429. i += 3.73
  430. } else if (/\s/.test(t)) {
  431. i += 2.5
  432. } else if (/%/.test(t)) {
  433. i += 8
  434. } else {
  435. i += 10
  436. }
  437. }
  438. return i * t / 10
  439. }
  440. }
  441. function dataCombine(t) {
  442. return t.reduce(function(t, e) {
  443. return (t.data ? t.data : t).concat(e.data)
  444. }, [])
  445. }
  446. function dataCombineStack(t, e) {
  447. var a = new Array(e);
  448. for (var i = 0; i < a.length; i++) {
  449. a[i] = 0
  450. }
  451. for (var r = 0; r < t.length; r++) {
  452. for (var i = 0; i < a.length; i++) {
  453. a[i] += t[r].data[i]
  454. }
  455. }
  456. return t.reduce(function(t, e) {
  457. return (t.data ? t.data : t).concat(e.data).concat(a)
  458. }, [])
  459. }
  460. function getTouches(t, e, a) {
  461. let i, r;
  462. if (t.clientX) {
  463. if (e.rotate) {
  464. r = e.height - t.clientX * e.pix;
  465. i = (t.pageY - a.currentTarget.offsetTop - e.height / e.pix / 2 * (e.pix - 1)) * e.pix
  466. } else {
  467. i = t.clientX * e.pix;
  468. r = (t.pageY - a.currentTarget.offsetTop - e.height / e.pix / 2 * (e.pix - 1)) * e.pix
  469. }
  470. } else {
  471. if (e.rotate) {
  472. r = e.height - t.x * e.pix;
  473. i = t.y * e.pix
  474. } else {
  475. i = t.x * e.pix;
  476. r = t.y * e.pix
  477. }
  478. }
  479. return {
  480. x: i,
  481. y: r
  482. }
  483. }
  484. function getSeriesDataItem(e, i, a) {
  485. var r = [];
  486. var o = [];
  487. var n = i.constructor.toString().indexOf("Array") > -1;
  488. if (n) {
  489. let t = filterSeries(e);
  490. for (var l = 0; l < a.length; l++) {
  491. o.push(t[a[l]])
  492. }
  493. } else {
  494. o = e
  495. }
  496. for (let t = 0; t < o.length; t++) {
  497. let e = o[t];
  498. let a = -1;
  499. if (n) {
  500. a = i[t]
  501. } else {
  502. a = i
  503. }
  504. if (e.data[a] !== null && typeof e.data[a] !== "undefined" && e.show) {
  505. let t = {};
  506. t.color = e.color;
  507. t.type = e.type;
  508. t.style = e.style;
  509. t.pointShape = e.pointShape;
  510. t.disableLegend = e.disableLegend;
  511. t.legendShape = e.legendShape;
  512. t.name = e.name;
  513. t.show = e.show;
  514. t.data = e.formatter ? e.formatter(e.data[a]) : e.data[a];
  515. r.push(t)
  516. }
  517. }
  518. return r
  519. }
  520. function getMaxTextListLength(t, e, a) {
  521. var i = t.map(function(t) {
  522. return measureText(t, e, a)
  523. });
  524. return Math.max.apply(null, i)
  525. }
  526. function getRadarCoordinateSeries(t) {
  527. var e = 2 * Math.PI / t;
  528. var a = [];
  529. for (var i = 0; i < t; i++) {
  530. a.push(e * i)
  531. }
  532. return a.map(function(t) {
  533. return -1 * t + Math.PI / 2
  534. })
  535. }
  536. function getToolTipData(t, a, i, r, o) {
  537. var n = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
  538. var l = a.chartData.calPoints ? a.chartData.calPoints : [];
  539. let s = {};
  540. if (r.length > 0) {
  541. let e = [];
  542. for (let t = 0; t < r.length; t++) {
  543. e.push(l[r[t]])
  544. }
  545. s = e[0][i[0]]
  546. } else {
  547. for (let t = 0; t < l.length; t++) {
  548. if (l[t][i]) {
  549. s = l[t][i];
  550. break
  551. }
  552. }
  553. }
  554. var e = t.map(function(t) {
  555. let e = null;
  556. if (a.categories && a.categories.length > 0) {
  557. e = o[i]
  558. }
  559. return {
  560. text: n.formatter ? n.formatter(t, e, i, a) : t.name + ": " + t.data,
  561. color: t.color,
  562. legendShape: a.extra.tooltip.legendShape == "auto" ? t.legendShape : a.extra.tooltip.legendShape
  563. }
  564. });
  565. var h = {
  566. x: Math.round(s.x),
  567. y: Math.round(s.y)
  568. };
  569. return {
  570. textList: e,
  571. offset: h
  572. }
  573. }
  574. function getMixToolTipData(t, e, a, i) {
  575. var r = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
  576. var o = e.chartData.xAxisPoints[a] + e.chartData.eachSpacing / 2;
  577. var n = t.map(function(t) {
  578. return {
  579. text: r.formatter ? r.formatter(t, i[a], a, e) : t.name + ": " + t.data,
  580. color: t.color,
  581. disableLegend: t.disableLegend ? true : false,
  582. legendShape: e.extra.tooltip.legendShape == "auto" ? t.legendShape : e.extra.tooltip.legendShape
  583. }
  584. });
  585. n = n.filter(function(t) {
  586. if (t.disableLegend !== true) {
  587. return t
  588. }
  589. });
  590. var l = {
  591. x: Math.round(o),
  592. y: 0
  593. };
  594. return {
  595. textList: n,
  596. offset: l
  597. }
  598. }
  599. function getCandleToolTipData(o, e, n, l, i, t) {
  600. var r = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
  601. var a = n.chartData.calPoints;
  602. let s = t.color.upFill;
  603. let h = t.color.downFill;
  604. let c = [s, s, h, s];
  605. var d = [];
  606. e.map(function(t) {
  607. if (l == 0) {
  608. if (t.data[1] - t.data[0] < 0) {
  609. c[1] = h
  610. } else {
  611. c[1] = s
  612. }
  613. } else {
  614. if (t.data[0] < o[l - 1][1]) {
  615. c[0] = h
  616. }
  617. if (t.data[1] < t.data[0]) {
  618. c[1] = h
  619. }
  620. if (t.data[2] > o[l - 1][1]) {
  621. c[2] = s
  622. }
  623. if (t.data[3] < o[l - 1][1]) {
  624. c[3] = h
  625. }
  626. }
  627. let e = {
  628. text: "开盘:" + t.data[0],
  629. color: c[0],
  630. legendShape: n.extra.tooltip.legendShape == "auto" ? t.legendShape : n.extra.tooltip.legendShape
  631. };
  632. let a = {
  633. text: "收盘:" + t.data[1],
  634. color: c[1],
  635. legendShape: n.extra.tooltip.legendShape == "auto" ? t.legendShape : n.extra.tooltip.legendShape
  636. };
  637. let i = {
  638. text: "最低:" + t.data[2],
  639. color: c[2],
  640. legendShape: n.extra.tooltip.legendShape == "auto" ? t.legendShape : n.extra.tooltip.legendShape
  641. };
  642. let r = {
  643. text: "最高:" + t.data[3],
  644. color: c[3],
  645. legendShape: n.extra.tooltip.legendShape == "auto" ? t.legendShape : n.extra.tooltip.legendShape
  646. };
  647. d.push(e, a, i, r)
  648. });
  649. var x = [];
  650. var f = {
  651. x: 0,
  652. y: 0
  653. };
  654. for (let e = 0; e < a.length; e++) {
  655. let t = a[e];
  656. if (typeof t[l] !== "undefined" && t[l] !== null) {
  657. x.push(t[l])
  658. }
  659. }
  660. f.x = Math.round(x[0][0].x);
  661. return {
  662. textList: d,
  663. offset: f
  664. }
  665. }
  666. function filterSeries(e) {
  667. let a = [];
  668. for (let t = 0; t < e.length; t++) {
  669. if (e[t].show == true) {
  670. a.push(e[t])
  671. }
  672. }
  673. return a
  674. }
  675. function findCurrentIndex(o, n, e, t) {
  676. var a = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
  677. var l = {
  678. index: -1,
  679. group: []
  680. };
  681. var i = e.chartData.eachSpacing / 2;
  682. let r = [];
  683. if (n && n.length > 0) {
  684. if (!e.categories) {
  685. i = 0
  686. } else {
  687. for (let t = 1; t < e.chartData.xAxisPoints.length; t++) {
  688. r.push(e.chartData.xAxisPoints[t] - i)
  689. }
  690. if ((e.type == "line" || e.type == "area") && e.xAxis.boundaryGap == "justify") {
  691. r = e.chartData.xAxisPoints
  692. }
  693. }
  694. if (isInExactChartArea(o, e, t)) {
  695. if (!e.categories) {
  696. let a = Array(n.length);
  697. for (let e = 0; e < n.length; e++) {
  698. a[e] = Array(n[e].length);
  699. for (let t = 0; t < n[e].length; t++) {
  700. a[e][t] = Math.abs(n[e][t].x - o.x)
  701. }
  702. }
  703. let e = Array(a.length);
  704. let i = Array(a.length);
  705. for (let t = 0; t < a.length; t++) {
  706. e[t] = Math.min.apply(null, a[t]);
  707. i[t] = a[t].indexOf(e[t])
  708. }
  709. let r = Math.min.apply(null, e);
  710. l.index = [];
  711. for (let t = 0; t < e.length; t++) {
  712. if (e[t] == r) {
  713. l.group.push(t);
  714. l.index.push(i[t])
  715. }
  716. }
  717. } else {
  718. r.forEach(function(t, e) {
  719. if (o.x + a + i > t) {
  720. l.index = e
  721. }
  722. })
  723. }
  724. }
  725. }
  726. return l
  727. }
  728. function findBarChartCurrentIndex(a, t, e, i) {
  729. var r = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
  730. var o = {
  731. index: -1,
  732. group: []
  733. };
  734. var n = e.chartData.eachSpacing / 2;
  735. let l = e.chartData.yAxisPoints;
  736. if (t && t.length > 0) {
  737. if (isInExactChartArea(a, e, i)) {
  738. l.forEach(function(t, e) {
  739. if (a.y + r + n > t) {
  740. o.index = e
  741. }
  742. })
  743. }
  744. }
  745. return o
  746. }
  747. function findLegendIndex(o, t, e) {
  748. let n = -1;
  749. let l = 0;
  750. if (isInExactLegendArea(o, t.area)) {
  751. let i = t.points;
  752. let r = -1;
  753. for (let t = 0, e = i.length; t < e; t++) {
  754. let a = i[t];
  755. for (let e = 0; e < a.length; e++) {
  756. r += 1;
  757. let t = a[e]["area"];
  758. if (t && o.x > t[0] - l && o.x < t[2] + l && o.y > t[1] - l && o.y < t[3] + l) {
  759. n = r;
  760. break
  761. }
  762. }
  763. }
  764. return n
  765. }
  766. return n
  767. }
  768. function isInExactLegendArea(t, e) {
  769. return t.x > e.start.x && t.x < e.end.x && t.y > e.start.y && t.y < e.end.y
  770. }
  771. function isInExactChartArea(t, e, a) {
  772. return t.x <= e.width - e.area[1] + 10 && t.x >= e.area[3] - 10 && t.y >= e.area[0] && t.y <= e.height - e.area[2]
  773. }
  774. function findRadarChartCurrentIndex(t, e, a) {
  775. var r = 2 * Math.PI / a;
  776. var o = -1;
  777. if (isInExactPieChartArea(t, e.center, e.radius)) {
  778. var n = function t(e) {
  779. if (e < 0) {
  780. e += 2 * Math.PI
  781. }
  782. if (e > 2 * Math.PI) {
  783. e -= 2 * Math.PI
  784. }
  785. return e
  786. };
  787. var l = Math.atan2(e.center.y - t.y, t.x - e.center.x);
  788. l = -1 * l;
  789. if (l < 0) {
  790. l += 2 * Math.PI
  791. }
  792. var i = e.angleList.map(function(t) {
  793. t = n(-1 * t);
  794. return t
  795. });
  796. i.forEach(function(t, e) {
  797. var a = n(t - r / 2);
  798. var i = n(t + r / 2);
  799. if (i < a) {
  800. i += 2 * Math.PI
  801. }
  802. if (l >= a && l <= i || l + 2 * Math.PI >= a && l + 2 * Math.PI <= i) {
  803. o = e
  804. }
  805. })
  806. }
  807. return o
  808. }
  809. function findFunnelChartCurrentIndex(t, e) {
  810. var a = -1;
  811. for (var i = 0, r = e.series.length; i < r; i++) {
  812. var o = e.series[i];
  813. if (t.x > o.funnelArea[0] && t.x < o.funnelArea[2] && t.y > o.funnelArea[1] && t.y < o.funnelArea[3]) {
  814. a = i;
  815. break
  816. }
  817. }
  818. return a
  819. }
  820. function findWordChartCurrentIndex(t, e) {
  821. var a = -1;
  822. for (var i = 0, r = e.length; i < r; i++) {
  823. var o = e[i];
  824. if (t.x > o.area[0] && t.x < o.area[2] && t.y > o.area[1] && t.y < o.area[3]) {
  825. a = i;
  826. break
  827. }
  828. }
  829. return a
  830. }
  831. function findMapChartCurrentIndex(t, e) {
  832. var a = -1;
  833. var i = e.chartData.mapData;
  834. var r = e.series;
  835. var o = pointToCoordinate(t.y, t.x, i.bounds, i.scale, i.xoffset, i.yoffset);
  836. var n = [o.x, o.y];
  837. for (var l = 0, s = r.length; l < s; l++) {
  838. var h = r[l].geometry.coordinates;
  839. if (isPoiWithinPoly(n, h, e.chartData.mapData.mercator)) {
  840. a = l;
  841. break
  842. }
  843. }
  844. return a
  845. }
  846. function findRoseChartCurrentIndex(t, e, a) {
  847. var i = -1;
  848. var r = getRoseDataPoints(a._series_, a.extra.rose.type, e.radius, e.radius);
  849. if (e && e.center && isInExactPieChartArea(t, e.center, e.radius)) {
  850. var o = Math.atan2(e.center.y - t.y, t.x - e.center.x);
  851. o = -o;
  852. if (a.extra.rose && a.extra.rose.offsetAngle) {
  853. o = o - a.extra.rose.offsetAngle * Math.PI / 180
  854. }
  855. for (var n = 0, l = r.length; n < l; n++) {
  856. if (isInAngleRange(o, r[n]._start_, r[n]._start_ + r[n]._rose_proportion_ * 2 * Math.PI)) {
  857. i = n;
  858. break
  859. }
  860. }
  861. }
  862. return i
  863. }
  864. function findPieChartCurrentIndex(t, e, a) {
  865. var i = -1;
  866. var r = getPieDataPoints(e.series);
  867. if (e && e.center && isInExactPieChartArea(t, e.center, e.radius)) {
  868. var o = Math.atan2(e.center.y - t.y, t.x - e.center.x);
  869. o = -o;
  870. if (a.extra.pie && a.extra.pie.offsetAngle) {
  871. o = o - a.extra.pie.offsetAngle * Math.PI / 180
  872. }
  873. if (a.extra.ring && a.extra.ring.offsetAngle) {
  874. o = o - a.extra.ring.offsetAngle * Math.PI / 180
  875. }
  876. for (var n = 0, l = r.length; n < l; n++) {
  877. if (isInAngleRange(o, r[n]._start_, r[n]._start_ + r[n]._proportion_ * 2 * Math.PI)) {
  878. i = n;
  879. break
  880. }
  881. }
  882. }
  883. return i
  884. }
  885. function isInExactPieChartArea(t, e, a) {
  886. return Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2) <= Math.pow(a, 2)
  887. }
  888. function splitPoints(t, a) {
  889. var i = [];
  890. var r = [];
  891. t.forEach(function(t, e) {
  892. if (a.connectNulls) {
  893. if (t !== null) {
  894. r.push(t)
  895. }
  896. } else {
  897. if (t !== null) {
  898. r.push(t)
  899. } else {
  900. if (r.length) {
  901. i.push(r)
  902. }
  903. r = []
  904. }
  905. }
  906. });
  907. if (r.length) {
  908. i.push(r)
  909. }
  910. return i
  911. }
  912. function calLegendData(l, s, e, t, h) {
  913. let c = {
  914. area: {
  915. start: {
  916. x: 0,
  917. y: 0
  918. },
  919. end: {
  920. x: 0,
  921. y: 0
  922. },
  923. width: 0,
  924. height: 0,
  925. wholeWidth: 0,
  926. wholeHeight: 0
  927. },
  928. points: [],
  929. widthArr: [],
  930. heightArr: []
  931. };
  932. if (s.legend.show === false) {
  933. t.legendData = c;
  934. return c
  935. }
  936. let d = s.legend.padding * s.pix;
  937. let x = s.legend.margin * s.pix;
  938. let f = s.legend.fontSize ? s.legend.fontSize * s.pix : e.fontSize;
  939. let p = 15 * s.pix;
  940. let g = 5 * s.pix;
  941. let u = Math.max(s.legend.lineHeight * s.pix, f);
  942. if (s.legend.position == "top" || s.legend.position == "bottom") {
  943. let i = [];
  944. let r = 0;
  945. let o = [];
  946. let n = [];
  947. for (let a = 0; a < l.length; a++) {
  948. let t = l[a];
  949. const y = t.legendText ? t.legendText : t.name;
  950. let e = p + g + measureText(y || "undefined", f, h) + s.legend.itemGap * s.pix;
  951. if (r + e > s.width - s.area[1] - s.area[3]) {
  952. i.push(n);
  953. o.push(r - s.legend.itemGap * s.pix);
  954. r = e;
  955. n = [t]
  956. } else {
  957. r += e;
  958. n.push(t)
  959. }
  960. }
  961. if (n.length) {
  962. i.push(n);
  963. o.push(r - s.legend.itemGap * s.pix);
  964. c.widthArr = o;
  965. let t = Math.max.apply(null, o);
  966. switch (s.legend.float) {
  967. case "left":
  968. c.area.start.x = s.area[3];
  969. c.area.end.x = s.area[3] + t + 2 * d;
  970. break;
  971. case "right":
  972. c.area.start.x = s.width - s.area[1] - t - 2 * d;
  973. c.area.end.x = s.width - s.area[1];
  974. break;
  975. default:
  976. c.area.start.x = (s.width - t) / 2 - d;
  977. c.area.end.x = (s.width + t) / 2 + d
  978. }
  979. c.area.width = t + 2 * d;
  980. c.area.wholeWidth = t + 2 * d;
  981. c.area.height = i.length * u + 2 * d;
  982. c.area.wholeHeight = i.length * u + 2 * d + 2 * x;
  983. c.points = i
  984. }
  985. } else {
  986. let t = l.length;
  987. let e = s.height - s.area[0] - s.area[2] - 2 * x - 2 * d;
  988. let a = Math.min(Math.floor(e / u), t);
  989. c.area.height = a * u + d * 2;
  990. c.area.wholeHeight = a * u + d * 2;
  991. switch (s.legend.float) {
  992. case "top":
  993. c.area.start.y = s.area[0] + x;
  994. c.area.end.y = s.area[0] + x + c.area.height;
  995. break;
  996. case "bottom":
  997. c.area.start.y = s.height - s.area[2] - x - c.area.height;
  998. c.area.end.y = s.height - s.area[2] - x;
  999. break;
  1000. default:
  1001. c.area.start.y = (s.height - c.area.height) / 2;
  1002. c.area.end.y = (s.height + c.area.height) / 2
  1003. }
  1004. let i = t % a === 0 ? t / a : Math.floor(t / a + 1);
  1005. let r = [];
  1006. for (let e = 0; e < i; e++) {
  1007. let t = l.slice(e * a, e * a + a);
  1008. r.push(t)
  1009. }
  1010. c.points = r;
  1011. if (r.length) {
  1012. for (let t = 0; t < r.length; t++) {
  1013. let a = r[t];
  1014. let i = 0;
  1015. for (let e = 0; e < a.length; e++) {
  1016. let t = p + g + measureText(a[e].name || "undefined", f, h) + s.legend.itemGap * s.pix;
  1017. if (t > i) {
  1018. i = t
  1019. }
  1020. }
  1021. c.widthArr.push(i);
  1022. c.heightArr.push(a.length * u + d * 2)
  1023. }
  1024. let e = 0;
  1025. for (let t = 0; t < c.widthArr.length; t++) {
  1026. e += c.widthArr[t]
  1027. }
  1028. c.area.width = e - s.legend.itemGap * s.pix + 2 * d;
  1029. c.area.wholeWidth = c.area.width + d
  1030. }
  1031. }
  1032. switch (s.legend.position) {
  1033. case "top":
  1034. c.area.start.y = s.area[0] + x;
  1035. c.area.end.y = s.area[0] + x + c.area.height;
  1036. break;
  1037. case "bottom":
  1038. c.area.start.y = s.height - s.area[2] - c.area.height - x;
  1039. c.area.end.y = s.height - s.area[2] - x;
  1040. break;
  1041. case "left":
  1042. c.area.start.x = s.area[3];
  1043. c.area.end.x = s.area[3] + c.area.width;
  1044. break;
  1045. case "right":
  1046. c.area.start.x = s.width - s.area[1] - c.area.width;
  1047. c.area.end.x = s.width - s.area[1];
  1048. break
  1049. }
  1050. t.legendData = c;
  1051. return c
  1052. }
  1053. function calCategoriesData(t, i, e, a, r) {
  1054. var o = {
  1055. angle: 0,
  1056. xAxisHeight: i.xAxis.lineHeight * i.pix + i.xAxis.marginTop * i.pix
  1057. };
  1058. var n = i.xAxis.fontSize * i.pix;
  1059. var l = t.map(function(t, e) {
  1060. var a = i.xAxis.formatter ? i.xAxis.formatter(t, e, i) : t;
  1061. return measureText(String(a), n, r)
  1062. });
  1063. var s = Math.max.apply(this, l);
  1064. if (i.xAxis.rotateLabel == true) {
  1065. o.angle = i.xAxis.rotateAngle * Math.PI / 180;
  1066. let t = i.xAxis.marginTop * i.pix * 2 + Math.abs(s * Math.sin(o.angle));
  1067. t = t < n + i.xAxis.marginTop * i.pix * 2 ? t + i.xAxis.marginTop * i.pix * 2 : t;
  1068. o.xAxisHeight = t
  1069. }
  1070. if (i.enableScroll && i.xAxis.scrollShow) {
  1071. o.xAxisHeight += 6 * i.pix
  1072. }
  1073. if (i.xAxis.disabled) {
  1074. o.xAxisHeight = 0
  1075. }
  1076. return o
  1077. }
  1078. function getXAxisTextList(t, e, h, c) {
  1079. var a = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
  1080. var i;
  1081. if (c == "stack") {
  1082. i = dataCombineStack(t, e.categories.length)
  1083. } else {
  1084. i = dataCombine(t)
  1085. }
  1086. var r = [];
  1087. i = i.filter(function(t) {
  1088. if (typeof t === "object" && t !== null) {
  1089. if (t.constructor.toString().indexOf("Array") > -1) {
  1090. return t !== null
  1091. } else {
  1092. return t.value !== null
  1093. }
  1094. } else {
  1095. return t !== null
  1096. }
  1097. });
  1098. i.map(function(t) {
  1099. if (typeof t === "object") {
  1100. if (t.constructor.toString().indexOf("Array") > -1) {
  1101. if (e.type == "candle") {
  1102. t.map(function(t) {
  1103. r.push(t)
  1104. })
  1105. } else {
  1106. r.push(t[0])
  1107. }
  1108. } else {
  1109. r.push(t.value)
  1110. }
  1111. } else {
  1112. r.push(t)
  1113. }
  1114. });
  1115. var o = 0;
  1116. var n = 0;
  1117. if (r.length > 0) {
  1118. o = Math.min.apply(this, r);
  1119. n = Math.max.apply(this, r)
  1120. }
  1121. if (a > -1) {
  1122. if (typeof e.xAxis.data[a].min === "number") {
  1123. o = Math.min(e.xAxis.data[a].min, o)
  1124. }
  1125. if (typeof e.xAxis.data[a].max === "number") {
  1126. n = Math.max(e.xAxis.data[a].max, n)
  1127. }
  1128. } else {
  1129. if (typeof e.xAxis.min === "number") {
  1130. o = Math.min(e.xAxis.min, o)
  1131. }
  1132. if (typeof e.xAxis.max === "number") {
  1133. n = Math.max(e.xAxis.max, n)
  1134. }
  1135. }
  1136. if (o === n) {
  1137. var d = n || 10;
  1138. n += d
  1139. }
  1140. var l = o;
  1141. var x = n;
  1142. var f = [];
  1143. var p = (x - l) / e.xAxis.splitNumber;
  1144. for (var s = 0; s <= e.xAxis.splitNumber; s++) {
  1145. f.push(l + p * s)
  1146. }
  1147. return f
  1148. }
  1149. function calXAxisData(t, e, a, i) {
  1150. var r = assign({}, {
  1151. type: ""
  1152. }, e.extra.bar);
  1153. var o = {
  1154. angle: 0,
  1155. xAxisHeight: e.xAxis.lineHeight * e.pix + e.xAxis.marginTop * e.pix
  1156. };
  1157. o.ranges = getXAxisTextList(t, e, a, r.type);
  1158. o.rangesFormat = o.ranges.map(function(t) {
  1159. t = util.toFixed(t, 2);
  1160. return t
  1161. });
  1162. var n = o.ranges.map(function(t) {
  1163. t = util.toFixed(t, 2);
  1164. return t
  1165. });
  1166. o = Object.assign(o, getXAxisPoints(n, e, a));
  1167. var l = o.eachSpacing;
  1168. var s = n.map(function(t) {
  1169. return measureText(t, e.xAxis.fontSize * e.pix, i)
  1170. });
  1171. if (e.xAxis.disabled === true) {
  1172. o.xAxisHeight = 0
  1173. }
  1174. return o
  1175. }
  1176. function getRadarDataPoints(r, o, n, a, t) {
  1177. var l = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  1178. var e = t.extra.radar || {};
  1179. e.max = e.max || 0;
  1180. var s = Math.max(e.max, Math.max.apply(null, dataCombine(a)));
  1181. var h = [];
  1182. for (let e = 0; e < a.length; e++) {
  1183. let t = a[e];
  1184. let i = {};
  1185. i.color = t.color;
  1186. i.legendShape = t.legendShape;
  1187. i.pointShape = t.pointShape;
  1188. i.data = [];
  1189. t.data.forEach(function(t, e) {
  1190. let a = {};
  1191. a.angle = r[e];
  1192. a.proportion = t / s;
  1193. a.value = t;
  1194. a.position = convertCoordinateOrigin(n * a.proportion * l * Math.cos(a.angle), n * a.proportion *
  1195. l * Math.sin(a.angle), o);
  1196. i.data.push(a)
  1197. });
  1198. h.push(i)
  1199. }
  1200. return h
  1201. }
  1202. function getPieDataPoints(a, i) {
  1203. var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  1204. var o = 0;
  1205. var n = 0;
  1206. for (let e = 0; e < a.length; e++) {
  1207. let t = a[e];
  1208. t.data = t.data === null ? 0 : t.data;
  1209. o += t.data
  1210. }
  1211. for (let e = 0; e < a.length; e++) {
  1212. let t = a[e];
  1213. t.data = t.data === null ? 0 : t.data;
  1214. if (o === 0) {
  1215. t._proportion_ = 1 / a.length * r
  1216. } else {
  1217. t._proportion_ = t.data / o * r
  1218. }
  1219. t._radius_ = i
  1220. }
  1221. for (let e = 0; e < a.length; e++) {
  1222. let t = a[e];
  1223. t._start_ = n;
  1224. n += 2 * t._proportion_ * Math.PI
  1225. }
  1226. return a
  1227. }
  1228. function getFunnelDataPoints(e, a, i, r) {
  1229. var o = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  1230. for (let t = 0; t < e.length; t++) {
  1231. if (i.type == "funnel") {
  1232. e[t].radius = e[t].data / e[0].data * a * o
  1233. } else {
  1234. e[t].radius = r * (e.length - t) / (r * e.length) * a * o
  1235. }
  1236. e[t]._proportion_ = e[t].data / e[0].data
  1237. }
  1238. return e
  1239. }
  1240. function getRoseDataPoints(a, i, r, o) {
  1241. var n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  1242. var l = 0;
  1243. var s = 0;
  1244. var h = [];
  1245. for (let e = 0; e < a.length; e++) {
  1246. let t = a[e];
  1247. t.data = t.data === null ? 0 : t.data;
  1248. l += t.data;
  1249. h.push(t.data)
  1250. }
  1251. var c = Math.min.apply(null, h);
  1252. var d = Math.max.apply(null, h);
  1253. var x = o - r;
  1254. for (let e = 0; e < a.length; e++) {
  1255. let t = a[e];
  1256. t.data = t.data === null ? 0 : t.data;
  1257. if (l === 0) {
  1258. t._proportion_ = 1 / a.length * n;
  1259. t._rose_proportion_ = 1 / a.length * n
  1260. } else {
  1261. t._proportion_ = t.data / l * n;
  1262. if (i == "area") {
  1263. t._rose_proportion_ = 1 / a.length * n
  1264. } else {
  1265. t._rose_proportion_ = t.data / l * n
  1266. }
  1267. }
  1268. t._radius_ = r + x * ((t.data - c) / (d - c)) || o
  1269. }
  1270. for (let e = 0; e < a.length; e++) {
  1271. let t = a[e];
  1272. t._start_ = s;
  1273. s += 2 * t._rose_proportion_ * Math.PI
  1274. }
  1275. return a
  1276. }
  1277. function getArcbarDataPoints(i, r) {
  1278. var o = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  1279. if (o == 1) {
  1280. o = .999999
  1281. }
  1282. for (let a = 0; a < i.length; a++) {
  1283. let t = i[a];
  1284. t.data = t.data === null ? 0 : t.data;
  1285. let e;
  1286. if (r.type == "circle") {
  1287. e = 2
  1288. } else {
  1289. if (r.direction == "ccw") {
  1290. if (r.startAngle < r.endAngle) {
  1291. e = 2 + r.startAngle - r.endAngle
  1292. } else {
  1293. e = r.startAngle - r.endAngle
  1294. }
  1295. } else {
  1296. if (r.endAngle < r.startAngle) {
  1297. e = 2 + r.endAngle - r.startAngle
  1298. } else {
  1299. e = r.startAngle - r.endAngle
  1300. }
  1301. }
  1302. }
  1303. t._proportion_ = e * t.data * o + r.startAngle;
  1304. if (r.direction == "ccw") {
  1305. t._proportion_ = r.startAngle - e * t.data * o
  1306. }
  1307. if (t._proportion_ >= 2) {
  1308. t._proportion_ = t._proportion_ % 2
  1309. }
  1310. }
  1311. return i
  1312. }
  1313. function getGaugeArcbarDataPoints(i, r) {
  1314. var o = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  1315. if (o == 1) {
  1316. o = .999999
  1317. }
  1318. for (let a = 0; a < i.length; a++) {
  1319. let t = i[a];
  1320. t.data = t.data === null ? 0 : t.data;
  1321. let e;
  1322. if (r.type == "circle") {
  1323. e = 2
  1324. } else {
  1325. if (r.endAngle < r.startAngle) {
  1326. e = 2 + r.endAngle - r.startAngle
  1327. } else {
  1328. e = r.startAngle - r.endAngle
  1329. }
  1330. }
  1331. t._proportion_ = e * t.data * o + r.startAngle;
  1332. if (t._proportion_ >= 2) {
  1333. t._proportion_ = t._proportion_ % 2
  1334. }
  1335. }
  1336. return i
  1337. }
  1338. function getGaugeAxisPoints(e, a, t) {
  1339. let i;
  1340. if (t < a) {
  1341. i = 2 + t - a
  1342. } else {
  1343. i = a - t
  1344. }
  1345. let r = a;
  1346. for (let t = 0; t < e.length; t++) {
  1347. e[t].value = e[t].value === null ? 0 : e[t].value;
  1348. e[t]._startAngle_ = r;
  1349. e[t]._endAngle_ = i * e[t].value + a;
  1350. if (e[t]._endAngle_ >= 2) {
  1351. e[t]._endAngle_ = e[t]._endAngle_ % 2
  1352. }
  1353. r = e[t]._endAngle_
  1354. }
  1355. return e
  1356. }
  1357. function getGaugeDataPoints(i, r, o) {
  1358. let n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
  1359. for (let a = 0; a < i.length; a++) {
  1360. let e = i[a];
  1361. e.data = e.data === null ? 0 : e.data;
  1362. if (o.pointer.color == "auto") {
  1363. for (let t = 0; t < r.length; t++) {
  1364. if (e.data <= r[t].value) {
  1365. e.color = r[t].color;
  1366. break
  1367. }
  1368. }
  1369. } else {
  1370. e.color = o.pointer.color
  1371. }
  1372. let t;
  1373. if (o.endAngle < o.startAngle) {
  1374. t = 2 + o.endAngle - o.startAngle
  1375. } else {
  1376. t = o.startAngle - o.endAngle
  1377. }
  1378. e._endAngle_ = t * e.data + o.startAngle;
  1379. e._oldAngle_ = o.oldAngle;
  1380. if (o.oldAngle < o.endAngle) {
  1381. e._oldAngle_ += 2
  1382. }
  1383. if (e.data >= o.oldData) {
  1384. e._proportion_ = (e._endAngle_ - e._oldAngle_) * n + o.oldAngle
  1385. } else {
  1386. e._proportion_ = e._oldAngle_ - (e._oldAngle_ - e._endAngle_) * n
  1387. }
  1388. if (e._proportion_ >= 2) {
  1389. e._proportion_ = e._proportion_ % 2
  1390. }
  1391. }
  1392. return i
  1393. }
  1394. function getPieTextMaxLength(i, r, o, n) {
  1395. i = getPieDataPoints(i);
  1396. let l = 0;
  1397. for (let a = 0; a < i.length; a++) {
  1398. let t = i[a];
  1399. let e = t.formatter ? t.formatter(+t._proportion_.toFixed(2)) : util.toFixed(t._proportion_ * 100) + "%";
  1400. l = Math.max(l, measureText(e, t.textSize * n.pix || r.fontSize, o))
  1401. }
  1402. return l
  1403. }
  1404. function fixColumeData(t, i, r, o, e, n) {
  1405. return t.map(function(t) {
  1406. if (t === null) {
  1407. return null
  1408. }
  1409. var e = 0;
  1410. var a = 0;
  1411. if (n.type == "mix") {
  1412. e = n.extra.mix.column.seriesGap * n.pix || 0;
  1413. a = n.extra.mix.column.categoryGap * n.pix || 0
  1414. } else {
  1415. e = n.extra.column.seriesGap * n.pix || 0;
  1416. a = n.extra.column.categoryGap * n.pix || 0
  1417. }
  1418. e = Math.min(e, i / r);
  1419. a = Math.min(a, i / r);
  1420. t.width = Math.ceil((i - 2 * a - e * (r - 1)) / r);
  1421. if (n.extra.mix && n.extra.mix.column.width && +n.extra.mix.column.width > 0) {
  1422. t.width = Math.min(t.width, +n.extra.mix.column.width * n.pix)
  1423. }
  1424. if (n.extra.column && n.extra.column.width && +n.extra.column.width > 0) {
  1425. t.width = Math.min(t.width, +n.extra.column.width * n.pix)
  1426. }
  1427. if (t.width <= 0) {
  1428. t.width = 1
  1429. }
  1430. t.x += (o + .5 - r / 2) * (t.width + e);
  1431. return t
  1432. })
  1433. }
  1434. function fixBarData(t, i, r, o, e, n) {
  1435. return t.map(function(t) {
  1436. if (t === null) {
  1437. return null
  1438. }
  1439. var e = 0;
  1440. var a = 0;
  1441. e = n.extra.bar.seriesGap * n.pix || 0;
  1442. a = n.extra.bar.categoryGap * n.pix || 0;
  1443. e = Math.min(e, i / r);
  1444. a = Math.min(a, i / r);
  1445. t.width = Math.ceil((i - 2 * a - e * (r - 1)) / r);
  1446. if (n.extra.bar && n.extra.bar.width && +n.extra.bar.width > 0) {
  1447. t.width = Math.min(t.width, +n.extra.bar.width * n.pix)
  1448. }
  1449. if (t.width <= 0) {
  1450. t.width = 1
  1451. }
  1452. t.y += (o + .5 - r / 2) * (t.width + e);
  1453. return t
  1454. })
  1455. }
  1456. function fixColumeMeterData(t, e, a, i, r, o, n) {
  1457. var l = o.extra.column.categoryGap * o.pix || 0;
  1458. return t.map(function(t) {
  1459. if (t === null) {
  1460. return null
  1461. }
  1462. t.width = e - 2 * l;
  1463. if (o.extra.column && o.extra.column.width && +o.extra.column.width > 0) {
  1464. t.width = Math.min(t.width, +o.extra.column.width * o.pix)
  1465. }
  1466. if (i > 0) {
  1467. t.width -= n
  1468. }
  1469. return t
  1470. })
  1471. }
  1472. function fixColumeStackData(t, a, e, i, r, o, n) {
  1473. var l = o.extra.column.categoryGap * o.pix || 0;
  1474. return t.map(function(t, e) {
  1475. if (t === null) {
  1476. return null
  1477. }
  1478. t.width = Math.ceil(a - 2 * l);
  1479. if (o.extra.column && o.extra.column.width && +o.extra.column.width > 0) {
  1480. t.width = Math.min(t.width, +o.extra.column.width * o.pix)
  1481. }
  1482. if (t.width <= 0) {
  1483. t.width = 1
  1484. }
  1485. return t
  1486. })
  1487. }
  1488. function fixBarStackData(t, a, e, i, r, o, n) {
  1489. var l = o.extra.bar.categoryGap * o.pix || 0;
  1490. return t.map(function(t, e) {
  1491. if (t === null) {
  1492. return null
  1493. }
  1494. t.width = Math.ceil(a - 2 * l);
  1495. if (o.extra.bar && o.extra.bar.width && +o.extra.bar.width > 0) {
  1496. t.width = Math.min(t.width, +o.extra.bar.width * o.pix)
  1497. }
  1498. if (t.width <= 0) {
  1499. t.width = 1
  1500. }
  1501. return t
  1502. })
  1503. }
  1504. function getXAxisPoints(t, e, h) {
  1505. var a = e.width - e.area[1] - e.area[3];
  1506. var i = e.enableScroll ? Math.min(e.xAxis.itemCount, t.length) : t.length;
  1507. if ((e.type == "line" || e.type == "area" || e.type == "scatter" || e.type == "bubble" || e.type == "bar") && i >
  1508. 1 && e.xAxis.boundaryGap == "justify") {
  1509. i -= 1
  1510. }
  1511. var r = 0;
  1512. if (e.type == "mount" && e.extra && e.extra.mount && e.extra.mount.widthRatio && e.extra.mount.widthRatio > 1) {
  1513. if (e.extra.mount.widthRatio > 2) e.extra.mount.widthRatio = 2;
  1514. r = e.extra.mount.widthRatio - 1;
  1515. i += r
  1516. }
  1517. var o = a / i;
  1518. var n = [];
  1519. var l = e.area[3];
  1520. var s = e.width - e.area[1];
  1521. t.forEach(function(t, e) {
  1522. n.push(l + r / 2 * o + e * o)
  1523. });
  1524. if (e.xAxis.boundaryGap !== "justify") {
  1525. if (e.enableScroll === true) {
  1526. n.push(l + r * o + t.length * o)
  1527. } else {
  1528. n.push(s)
  1529. }
  1530. }
  1531. return {
  1532. xAxisPoints: n,
  1533. startX: l,
  1534. endX: s,
  1535. eachSpacing: o
  1536. }
  1537. }
  1538. function getCandleDataPoints(t, l, s, h, c, d, a) {
  1539. var x = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  1540. var e = [];
  1541. var f = d.height - d.area[0] - d.area[2];
  1542. t.forEach(function(t, o) {
  1543. if (t === null) {
  1544. e.push(null)
  1545. } else {
  1546. var n = [];
  1547. t.forEach(function(t, e) {
  1548. var a = {};
  1549. a.x = h[o] + Math.round(c / 2);
  1550. var i = t.value || t;
  1551. var r = f * (i - l) / (s - l);
  1552. r *= x;
  1553. a.y = d.height - Math.round(r) - d.area[2];
  1554. n.push(a)
  1555. });
  1556. e.push(n)
  1557. }
  1558. });
  1559. return e
  1560. }
  1561. function getDataPoints(t, a, n, l, s, h, e) {
  1562. var c = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  1563. var d = "center";
  1564. if (h.type == "line" || h.type == "area" || h.type == "scatter" || h.type == "bubble") {
  1565. d = h.xAxis.boundaryGap
  1566. }
  1567. var x = [];
  1568. var f = h.height - h.area[0] - h.area[2];
  1569. var p = h.width - h.area[1] - h.area[3];
  1570. t.forEach(function(i, t) {
  1571. if (i === null) {
  1572. x.push(null)
  1573. } else {
  1574. var r = {};
  1575. r.color = i.color;
  1576. r.x = l[t];
  1577. var o = i;
  1578. if (typeof i === "object" && i !== null) {
  1579. if (i.constructor.toString().indexOf("Array") > -1) {
  1580. let t, e, a;
  1581. t = [].concat(h.chartData.xAxisData.ranges);
  1582. e = t.shift();
  1583. a = t.pop();
  1584. o = i[1];
  1585. r.x = h.area[3] + p * (i[0] - e) / (a - e);
  1586. if (h.type == "bubble") {
  1587. r.r = i[2];
  1588. r.t = i[3]
  1589. }
  1590. } else {
  1591. o = i.value
  1592. }
  1593. }
  1594. if (d == "center") {
  1595. r.x += s / 2
  1596. }
  1597. var e = f * (o - a) / (n - a);
  1598. e *= c;
  1599. r.y = h.height - e - h.area[2];
  1600. x.push(r)
  1601. }
  1602. });
  1603. return x
  1604. }
  1605. function getLineDataPoints(t, a, n, l, s, h, e, p, c) {
  1606. var c = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
  1607. var d = h.xAxis.boundaryGap;
  1608. var x = [];
  1609. var f = h.height - h.area[0] - h.area[2];
  1610. var u = h.width - h.area[1] - h.area[3];
  1611. t.forEach(function(i, t) {
  1612. if (i === null) {
  1613. x.push(null)
  1614. } else {
  1615. var r = {};
  1616. r.color = i.color;
  1617. if (p.animation == "vertical") {
  1618. r.x = l[t];
  1619. var o = i;
  1620. if (typeof i === "object" && i !== null) {
  1621. if (i.constructor.toString().indexOf("Array") > -1) {
  1622. let t, e, a;
  1623. t = [].concat(h.chartData.xAxisData.ranges);
  1624. e = t.shift();
  1625. a = t.pop();
  1626. o = i[1];
  1627. r.x = h.area[3] + u * (i[0] - e) / (a - e)
  1628. } else {
  1629. o = i.value
  1630. }
  1631. }
  1632. if (d == "center") {
  1633. r.x += s / 2
  1634. }
  1635. var e = f * (o - a) / (n - a);
  1636. e *= c;
  1637. r.y = h.height - e - h.area[2];
  1638. x.push(r)
  1639. } else {
  1640. r.x = l[0] + s * t * c;
  1641. var o = i;
  1642. if (d == "center") {
  1643. r.x += s / 2
  1644. }
  1645. var e = f * (o - a) / (n - a);
  1646. r.y = h.height - e - h.area[2];
  1647. x.push(r)
  1648. }
  1649. }
  1650. });
  1651. return x
  1652. }
  1653. function getColumnDataPoints(t, a, n, l, s, h, e, i, c) {
  1654. var c = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
  1655. var d = [];
  1656. var x = h.height - h.area[0] - h.area[2];
  1657. var f = h.width - h.area[1] - h.area[3];
  1658. t.forEach(function(i, t) {
  1659. if (i === null) {
  1660. d.push(null)
  1661. } else {
  1662. var r = {};
  1663. r.color = i.color;
  1664. r.x = l[t];
  1665. var o = i;
  1666. if (typeof i === "object" && i !== null) {
  1667. if (i.constructor.toString().indexOf("Array") > -1) {
  1668. let t, e, a;
  1669. t = [].concat(h.chartData.xAxisData.ranges);
  1670. e = t.shift();
  1671. a = t.pop();
  1672. o = i[1];
  1673. r.x = h.area[3] + f * (i[0] - e) / (a - e)
  1674. } else {
  1675. o = i.value
  1676. }
  1677. }
  1678. r.x += s / 2;
  1679. var e = x * (o * c - a) / (n - a);
  1680. r.y = h.height - e - h.area[2];
  1681. d.push(r)
  1682. }
  1683. });
  1684. return d
  1685. }
  1686. function getMountDataPoints(t, o, n, l, s, h, e, a) {
  1687. var c = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
  1688. var d = [];
  1689. var x = h.height - h.area[0] - h.area[2];
  1690. var i = h.width - h.area[1] - h.area[3];
  1691. var f = s * e.widthRatio;
  1692. t.forEach(function(t, e) {
  1693. if (t === null) {
  1694. d.push(null)
  1695. } else {
  1696. var a = {};
  1697. a.color = t.color;
  1698. a.x = l[e];
  1699. a.x += s / 2;
  1700. var i = t.data;
  1701. var r = x * (i * c - o) / (n - o);
  1702. a.y = h.height - r - h.area[2];
  1703. a.value = i;
  1704. a.width = f;
  1705. d.push(a)
  1706. }
  1707. });
  1708. return d
  1709. }
  1710. function getBarDataPoints(t, o, n, l, e, s, a) {
  1711. var h = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  1712. var c = [];
  1713. var i = s.height - s.area[0] - s.area[2];
  1714. var d = s.width - s.area[1] - s.area[3];
  1715. t.forEach(function(t, e) {
  1716. if (t === null) {
  1717. c.push(null)
  1718. } else {
  1719. var a = {};
  1720. a.color = t.color;
  1721. a.y = l[e];
  1722. var i = t;
  1723. if (typeof t === "object" && t !== null) {
  1724. i = t.value
  1725. }
  1726. var r = d * (i - o) / (n - o);
  1727. r *= h;
  1728. a.height = r;
  1729. a.value = i;
  1730. a.x = r + s.area[3];
  1731. c.push(a)
  1732. }
  1733. });
  1734. return c
  1735. }
  1736. function getStackDataPoints(t, s, h, c, g, d, e, x, y) {
  1737. var f = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
  1738. var p = [];
  1739. var u = d.height - d.area[0] - d.area[2];
  1740. t.forEach(function(t, e) {
  1741. if (t === null) {
  1742. p.push(null)
  1743. } else {
  1744. var a = {};
  1745. a.color = t.color;
  1746. a.x = c[e] + Math.round(g / 2);
  1747. if (x > 0) {
  1748. var i = 0;
  1749. for (let t = 0; t <= x; t++) {
  1750. i += y[t].data[e]
  1751. }
  1752. var r = i - t;
  1753. var o = u * (i - s) / (h - s);
  1754. var n = u * (r - s) / (h - s)
  1755. } else {
  1756. var i = t;
  1757. if (typeof t === "object" && t !== null) {
  1758. i = t.value
  1759. }
  1760. var o = u * (i - s) / (h - s);
  1761. var n = 0
  1762. }
  1763. var l = n;
  1764. o *= f;
  1765. l *= f;
  1766. a.y = d.height - Math.round(o) - d.area[2];
  1767. a.y0 = d.height - Math.round(l) - d.area[2];
  1768. p.push(a)
  1769. }
  1770. });
  1771. return p
  1772. }
  1773. function getBarStackDataPoints(t, s, h, c, e, d, a, x, g) {
  1774. var f = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
  1775. var p = [];
  1776. var u = d.width - d.area[1] - d.area[3];
  1777. t.forEach(function(t, e) {
  1778. if (t === null) {
  1779. p.push(null)
  1780. } else {
  1781. var a = {};
  1782. a.color = t.color;
  1783. a.y = c[e];
  1784. if (x > 0) {
  1785. var i = 0;
  1786. for (let t = 0; t <= x; t++) {
  1787. i += g[t].data[e]
  1788. }
  1789. var r = i - t;
  1790. var o = u * (i - s) / (h - s);
  1791. var n = u * (r - s) / (h - s)
  1792. } else {
  1793. var i = t;
  1794. if (typeof t === "object" && t !== null) {
  1795. i = t.value
  1796. }
  1797. var o = u * (i - s) / (h - s);
  1798. var n = 0
  1799. }
  1800. var l = n;
  1801. o *= f;
  1802. l *= f;
  1803. a.height = o - l;
  1804. a.x = d.area[3] + o;
  1805. a.x0 = d.area[3] + l;
  1806. p.push(a)
  1807. }
  1808. });
  1809. return p
  1810. }
  1811. function getYAxisTextList(t, e, h, c, a) {
  1812. var d = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;
  1813. var i;
  1814. if (c == "stack") {
  1815. i = dataCombineStack(t, e.categories.length)
  1816. } else {
  1817. i = dataCombine(t)
  1818. }
  1819. var r = [];
  1820. i = i.filter(function(t) {
  1821. if (typeof t === "object" && t !== null) {
  1822. if (t.constructor.toString().indexOf("Array") > -1) {
  1823. return t !== null
  1824. } else {
  1825. return t.value !== null
  1826. }
  1827. } else {
  1828. return t !== null
  1829. }
  1830. });
  1831. i.map(function(t) {
  1832. if (typeof t === "object") {
  1833. if (t.constructor.toString().indexOf("Array") > -1) {
  1834. if (e.type == "candle") {
  1835. t.map(function(t) {
  1836. r.push(t)
  1837. })
  1838. } else {
  1839. r.push(t[1])
  1840. }
  1841. } else {
  1842. r.push(t.value)
  1843. }
  1844. } else {
  1845. r.push(t)
  1846. }
  1847. });
  1848. var o = a.min || 0;
  1849. var n = a.max || 0;
  1850. if (r.length > 0) {
  1851. o = Math.min.apply(this, r);
  1852. n = Math.max.apply(this, r)
  1853. }
  1854. if (o === n) {
  1855. if (n == 0) {
  1856. n = 10
  1857. } else {
  1858. o = 0
  1859. }
  1860. }
  1861. var l = getDataRange(o, n);
  1862. var x = a.min === undefined || a.min === null ? l.minRange : a.min;
  1863. var f = a.max === undefined || a.max === null ? l.maxRange : a.max;
  1864. var p = (f - x) / e.yAxis.splitNumber;
  1865. var u = [];
  1866. for (var s = 0; s <= e.yAxis.splitNumber; s++) {
  1867. u.push(x + p * s)
  1868. }
  1869. return u.reverse()
  1870. }
  1871. function calYAxisData(a, o, e, n) {
  1872. var l = assign({}, {
  1873. type: ""
  1874. }, o.extra.column);
  1875. var t = o.yAxis.data.length;
  1876. var s = new Array(t);
  1877. if (t > 0) {
  1878. for (let e = 0; e < t; e++) {
  1879. s[e] = [];
  1880. for (let t = 0; t < a.length; t++) {
  1881. if (a[t].index == e) {
  1882. s[e].push(a[t])
  1883. }
  1884. }
  1885. }
  1886. var h = new Array(t);
  1887. var c = new Array(t);
  1888. var d = new Array(t);
  1889. for (let r = 0; r < t; r++) {
  1890. let i = o.yAxis.data[r];
  1891. if (o.yAxis.disabled == true) {
  1892. i.disabled = true
  1893. }
  1894. if (i.type === "categories") {
  1895. if (!i.formatter) {
  1896. i.formatter = (t, e, a) => {
  1897. return t + (i.unit || "")
  1898. }
  1899. }
  1900. i.categories = i.categories || o.categories;
  1901. h[r] = i.categories
  1902. } else {
  1903. if (!i.formatter) {
  1904. i.formatter = (t, e, a) => {
  1905. return util.toFixed(t, i.tofix || 0) + (i.unit || "")
  1906. }
  1907. }
  1908. h[r] = getYAxisTextList(s[r], o, e, l.type, i, r)
  1909. }
  1910. let a = i.fontSize * o.pix || e.fontSize;
  1911. d[r] = {
  1912. position: i.position ? i.position : "left",
  1913. width: 0
  1914. };
  1915. c[r] = h[r].map(function(t, e) {
  1916. t = i.formatter(t, e, o);
  1917. d[r].width = Math.max(d[r].width, measureText(t, a, n) + 5);
  1918. return t
  1919. });
  1920. let t = i.calibration ? 4 * o.pix : 0;
  1921. d[r].width += t + 3 * o.pix;
  1922. if (i.disabled === true) {
  1923. d[r].width = 0
  1924. }
  1925. }
  1926. } else {
  1927. var h = new Array(1);
  1928. var c = new Array(1);
  1929. var d = new Array(1);
  1930. if (o.type === "bar") {
  1931. h[0] = o.categories;
  1932. if (!o.yAxis.formatter) {
  1933. o.yAxis.formatter = (t, e, a) => {
  1934. return t + (a.yAxis.unit || "")
  1935. }
  1936. }
  1937. } else {
  1938. if (!o.yAxis.formatter) {
  1939. o.yAxis.formatter = (t, e, a) => {
  1940. return t.toFixed(a.yAxis.tofix) + (a.yAxis.unit || "")
  1941. }
  1942. }
  1943. h[0] = getYAxisTextList(a, o, e, l.type, {})
  1944. }
  1945. d[0] = {
  1946. position: "left",
  1947. width: 0
  1948. };
  1949. var i = o.yAxis.fontSize * o.pix || e.fontSize;
  1950. c[0] = h[0].map(function(t, e) {
  1951. t = o.yAxis.formatter(t, e, o);
  1952. d[0].width = Math.max(d[0].width, measureText(t, i, n) + 5);
  1953. return t
  1954. });
  1955. d[0].width += 3 * o.pix;
  1956. if (o.yAxis.disabled === true) {
  1957. d[0] = {
  1958. position: "left",
  1959. width: 0
  1960. };
  1961. o.yAxis.data[0] = {
  1962. disabled: true
  1963. }
  1964. } else {
  1965. o.yAxis.data[0] = {
  1966. disabled: false,
  1967. position: "left",
  1968. max: o.yAxis.max,
  1969. min: o.yAxis.min,
  1970. formatter: o.yAxis.formatter
  1971. };
  1972. if (o.type === "bar") {
  1973. o.yAxis.data[0].categories = o.categories;
  1974. o.yAxis.data[0].type = "categories"
  1975. }
  1976. }
  1977. }
  1978. return {
  1979. rangesFormat: c,
  1980. ranges: h,
  1981. yAxisWidth: d
  1982. }
  1983. }
  1984. function calTooltipYAxisData(r, t, o, e, a) {
  1985. let n = [].concat(o.chartData.yAxisData.ranges);
  1986. let l = o.height - o.area[0] - o.area[2];
  1987. let s = o.area[0];
  1988. let h = [];
  1989. for (let i = 0; i < n.length; i++) {
  1990. let t = Math.max.apply(this, n[i]);
  1991. let e = Math.min.apply(this, n[i]);
  1992. let a = t - (t - e) * (r - s) / l;
  1993. a = o.yAxis.data && o.yAxis.data[i].formatter ? o.yAxis.data[i].formatter(a, i, o) : a.toFixed(0);
  1994. h.push(String(a))
  1995. }
  1996. return h
  1997. }
  1998. function calMarkLineData(i, r) {
  1999. let o, n;
  2000. let l = r.height - r.area[0] - r.area[2];
  2001. for (let a = 0; a < i.length; a++) {
  2002. i[a].yAxisIndex = i[a].yAxisIndex ? i[a].yAxisIndex : 0;
  2003. let t = [].concat(r.chartData.yAxisData.ranges[i[a].yAxisIndex]);
  2004. o = t.pop();
  2005. n = t.shift();
  2006. let e = l * (i[a].value - o) / (n - o);
  2007. i[a].y = r.height - Math.round(e) - r.area[2]
  2008. }
  2009. return i
  2010. }
  2011. function contextRotate(t, e) {
  2012. if (e.rotateLock !== true) {
  2013. t.translate(e.height, 0);
  2014. t.rotate(90 * Math.PI / 180)
  2015. } else if (e._rotate_ !== true) {
  2016. t.translate(e.height, 0);
  2017. t.rotate(90 * Math.PI / 180);
  2018. e._rotate_ = true
  2019. }
  2020. }
  2021. function drawPointShape(t, e, a, i, r) {
  2022. i.beginPath();
  2023. if (r.dataPointShapeType == "hollow") {
  2024. i.setStrokeStyle(e);
  2025. i.setFillStyle(r.background);
  2026. i.setLineWidth(2 * r.pix)
  2027. } else {
  2028. i.setStrokeStyle("#ffffff");
  2029. i.setFillStyle(e);
  2030. i.setLineWidth(1 * r.pix)
  2031. }
  2032. if (a === "diamond") {
  2033. t.forEach(function(t, e) {
  2034. if (t !== null) {
  2035. i.moveTo(t.x, t.y - 4.5);
  2036. i.lineTo(t.x - 4.5, t.y);
  2037. i.lineTo(t.x, t.y + 4.5);
  2038. i.lineTo(t.x + 4.5, t.y);
  2039. i.lineTo(t.x, t.y - 4.5)
  2040. }
  2041. })
  2042. } else if (a === "circle") {
  2043. t.forEach(function(t, e) {
  2044. if (t !== null) {
  2045. i.moveTo(t.x + 2.5 * r.pix, t.y);
  2046. i.arc(t.x, t.y, 3 * r.pix, 0, 2 * Math.PI, false)
  2047. }
  2048. })
  2049. } else if (a === "square") {
  2050. t.forEach(function(t, e) {
  2051. if (t !== null) {
  2052. i.moveTo(t.x - 3.5, t.y - 3.5);
  2053. i.rect(t.x - 3.5, t.y - 3.5, 7, 7)
  2054. }
  2055. })
  2056. } else if (a === "triangle") {
  2057. t.forEach(function(t, e) {
  2058. if (t !== null) {
  2059. i.moveTo(t.x, t.y - 4.5);
  2060. i.lineTo(t.x - 4.5, t.y + 4.5);
  2061. i.lineTo(t.x + 4.5, t.y + 4.5);
  2062. i.lineTo(t.x, t.y - 4.5)
  2063. }
  2064. })
  2065. } else if (a === "none") {
  2066. return
  2067. }
  2068. i.closePath();
  2069. i.fill();
  2070. i.stroke()
  2071. }
  2072. function drawActivePoint(t, e, a, i, r, o, n) {
  2073. if (!r.tooltip) {
  2074. return
  2075. }
  2076. if (r.tooltip.group.length > 0 && r.tooltip.group.includes(n) == false) {
  2077. return
  2078. }
  2079. var l = typeof r.tooltip.index === "number" ? r.tooltip.index : r.tooltip.index[r.tooltip.group.indexOf(n)];
  2080. i.beginPath();
  2081. if (o.activeType == "hollow") {
  2082. i.setStrokeStyle(e);
  2083. i.setFillStyle(r.background);
  2084. i.setLineWidth(2 * r.pix)
  2085. } else {
  2086. i.setStrokeStyle("#ffffff");
  2087. i.setFillStyle(e);
  2088. i.setLineWidth(1 * r.pix)
  2089. }
  2090. if (a === "diamond") {
  2091. t.forEach(function(t, e) {
  2092. if (t !== null && l == e) {
  2093. i.moveTo(t.x, t.y - 4.5);
  2094. i.lineTo(t.x - 4.5, t.y);
  2095. i.lineTo(t.x, t.y + 4.5);
  2096. i.lineTo(t.x + 4.5, t.y);
  2097. i.lineTo(t.x, t.y - 4.5)
  2098. }
  2099. })
  2100. } else if (a === "circle") {
  2101. t.forEach(function(t, e) {
  2102. if (t !== null && l == e) {
  2103. i.moveTo(t.x + 2.5 * r.pix, t.y);
  2104. i.arc(t.x, t.y, 3 * r.pix, 0, 2 * Math.PI, false)
  2105. }
  2106. })
  2107. } else if (a === "square") {
  2108. t.forEach(function(t, e) {
  2109. if (t !== null && l == e) {
  2110. i.moveTo(t.x - 3.5, t.y - 3.5);
  2111. i.rect(t.x - 3.5, t.y - 3.5, 7, 7)
  2112. }
  2113. })
  2114. } else if (a === "triangle") {
  2115. t.forEach(function(t, e) {
  2116. if (t !== null && l == e) {
  2117. i.moveTo(t.x, t.y - 4.5);
  2118. i.lineTo(t.x - 4.5, t.y + 4.5);
  2119. i.lineTo(t.x + 4.5, t.y + 4.5);
  2120. i.lineTo(t.x, t.y - 4.5)
  2121. }
  2122. })
  2123. } else if (a === "none") {
  2124. return
  2125. }
  2126. i.closePath();
  2127. i.fill();
  2128. i.stroke()
  2129. }
  2130. function drawRingTitle(t, e, a, i) {
  2131. var r = t.title.fontSize || e.titleFontSize;
  2132. var o = t.subtitle.fontSize || e.subtitleFontSize;
  2133. var n = t.title.name || "";
  2134. var l = t.subtitle.name || "";
  2135. var c = t.title.color || t.fontColor;
  2136. var d = t.subtitle.color || t.fontColor;
  2137. var x = n ? r : 0;
  2138. var f = l ? o : 0;
  2139. var s = 5;
  2140. if (l) {
  2141. var p = measureText(l, o * t.pix, a);
  2142. var u = i.x - p / 2 + (t.subtitle.offsetX || 0) * t.pix;
  2143. var h = i.y + o * t.pix / 2 + (t.subtitle.offsetY || 0) * t.pix;
  2144. if (n) {
  2145. h += (x * t.pix + s) / 2
  2146. }
  2147. a.beginPath();
  2148. a.setFontSize(o * t.pix);
  2149. a.setFillStyle(d);
  2150. a.fillText(l, u, h);
  2151. a.closePath();
  2152. a.stroke()
  2153. }
  2154. if (n) {
  2155. var g = measureText(n, r * t.pix, a);
  2156. var y = i.x - g / 2 + (t.title.offsetX || 0);
  2157. var v = i.y + r * t.pix / 2 + (t.title.offsetY || 0) * t.pix;
  2158. if (l) {
  2159. v -= (f * t.pix + s) / 2
  2160. }
  2161. a.beginPath();
  2162. a.setFontSize(r * t.pix);
  2163. a.setFillStyle(c);
  2164. a.fillText(n, y, v);
  2165. a.closePath();
  2166. a.stroke()
  2167. }
  2168. }
  2169. function drawPointText(t, o, n, l, s) {
  2170. var h = o.data;
  2171. var c = o.textOffset ? o.textOffset : 0;
  2172. t.forEach(function(t, e) {
  2173. if (t !== null) {
  2174. l.beginPath();
  2175. var a = o.textSize ? o.textSize * s.pix : n.fontSize;
  2176. l.setFontSize(a);
  2177. l.setFillStyle(o.textColor || s.fontColor);
  2178. var i = h[e];
  2179. if (typeof h[e] === "object" && h[e] !== null) {
  2180. if (h[e].constructor.toString().indexOf("Array") > -1) {
  2181. i = h[e][1]
  2182. } else {
  2183. i = h[e].value
  2184. }
  2185. }
  2186. var r = o.formatter ? o.formatter(i, e, o, s) : i;
  2187. l.setTextAlign("center");
  2188. l.fillText(String(r), t.x, t.y - 4 + c * s.pix);
  2189. l.closePath();
  2190. l.stroke();
  2191. l.setTextAlign("left")
  2192. }
  2193. })
  2194. }
  2195. function drawColumePointText(t, n, l, s, h) {
  2196. var c = n.data;
  2197. var d = n.textOffset ? n.textOffset : 0;
  2198. var x = h.extra.column.labelPosition;
  2199. t.forEach(function(t, e) {
  2200. if (t !== null) {
  2201. s.beginPath();
  2202. var a = n.textSize ? n.textSize * h.pix : l.fontSize;
  2203. s.setFontSize(a);
  2204. s.setFillStyle(n.textColor || h.fontColor);
  2205. var i = c[e];
  2206. if (typeof c[e] === "object" && c[e] !== null) {
  2207. if (c[e].constructor.toString().indexOf("Array") > -1) {
  2208. i = c[e][1]
  2209. } else {
  2210. i = c[e].value
  2211. }
  2212. }
  2213. var r = n.formatter ? n.formatter(i, e, n, h) : i;
  2214. s.setTextAlign("center");
  2215. var o = t.y - 4 * h.pix + d * h.pix;
  2216. if (t.y > n.zeroPoints) {
  2217. o = t.y + d * h.pix + a
  2218. }
  2219. if (x == "insideTop") {
  2220. o = t.y + a + d * h.pix;
  2221. if (t.y > n.zeroPoints) {
  2222. o = t.y - d * h.pix - 4 * h.pix
  2223. }
  2224. }
  2225. if (x == "center") {
  2226. o = t.y + d * h.pix + (h.height - h.area[2] - t.y + a) / 2;
  2227. if (n.zeroPoints < h.height - h.area[2]) {
  2228. o = t.y + d * h.pix + (n.zeroPoints - t.y + a) / 2
  2229. }
  2230. if (t.y > n.zeroPoints) {
  2231. o = t.y - d * h.pix - (t.y - n.zeroPoints - a) / 2
  2232. }
  2233. if (h.extra.column.type == "stack") {
  2234. o = t.y + d * h.pix + (t.y0 - t.y + a) / 2
  2235. }
  2236. }
  2237. if (x == "bottom") {
  2238. o = h.height - h.area[2] + d * h.pix - 4 * h.pix;
  2239. if (n.zeroPoints < h.height - h.area[2]) {
  2240. o = n.zeroPoints + d * h.pix - 4 * h.pix
  2241. }
  2242. if (t.y > n.zeroPoints) {
  2243. o = n.zeroPoints - d * h.pix + a + 2 * h.pix
  2244. }
  2245. if (h.extra.column.type == "stack") {
  2246. o = t.y0 + d * h.pix - 4 * h.pix
  2247. }
  2248. }
  2249. s.fillText(String(r), t.x, o);
  2250. s.closePath();
  2251. s.stroke();
  2252. s.setTextAlign("left")
  2253. }
  2254. })
  2255. }
  2256. function drawMountPointText(t, n, l, s, h, c) {
  2257. var e = n.data;
  2258. var d = n.textOffset ? n.textOffset : 0;
  2259. var a = h.extra.mount.labelPosition;
  2260. t.forEach(function(t, e) {
  2261. if (t !== null) {
  2262. s.beginPath();
  2263. var a = n[e].textSize ? n[e].textSize * h.pix : l.fontSize;
  2264. s.setFontSize(a);
  2265. s.setFillStyle(n[e].textColor || h.fontColor);
  2266. var i = t.value;
  2267. var r = n[e].formatter ? n[e].formatter(i, e, n, h) : i;
  2268. s.setTextAlign("center");
  2269. var o = t.y - 4 * h.pix + d * h.pix;
  2270. if (t.y > c) {
  2271. o = t.y + d * h.pix + a
  2272. }
  2273. s.fillText(String(r), t.x, o);
  2274. s.closePath();
  2275. s.stroke();
  2276. s.setTextAlign("left")
  2277. }
  2278. })
  2279. }
  2280. function drawBarPointText(t, o, n, l, s) {
  2281. var h = o.data;
  2282. var e = o.textOffset ? o.textOffset : 0;
  2283. t.forEach(function(t, e) {
  2284. if (t !== null) {
  2285. l.beginPath();
  2286. var a = o.textSize ? o.textSize * s.pix : n.fontSize;
  2287. l.setFontSize(a);
  2288. l.setFillStyle(o.textColor || s.fontColor);
  2289. var i = h[e];
  2290. if (typeof h[e] === "object" && h[e] !== null) {
  2291. i = h[e].value
  2292. }
  2293. var r = o.formatter ? o.formatter(i, e, o, s) : i;
  2294. l.setTextAlign("left");
  2295. l.fillText(String(r), t.x + 4 * s.pix, t.y + a / 2 - 3);
  2296. l.closePath();
  2297. l.stroke()
  2298. }
  2299. })
  2300. }
  2301. function drawGaugeLabel(e, a, i, r, o, n) {
  2302. a -= e.width / 2 + e.labelOffset * r.pix;
  2303. a = a < 10 ? 10 : a;
  2304. let t;
  2305. if (e.endAngle < e.startAngle) {
  2306. t = 2 + e.endAngle - e.startAngle
  2307. } else {
  2308. t = e.startAngle - e.endAngle
  2309. }
  2310. let c = t / e.splitLine.splitNumber;
  2311. let d = e.endNumber - e.startNumber;
  2312. let x = d / e.splitLine.splitNumber;
  2313. let l = e.startAngle;
  2314. let s = e.startNumber;
  2315. for (let t = 0; t < e.splitLine.splitNumber + 1; t++) {
  2316. var h = {
  2317. x: a * Math.cos(l * Math.PI),
  2318. y: a * Math.sin(l * Math.PI)
  2319. };
  2320. var f = e.formatter ? e.formatter(s, t, r) : s;
  2321. h.x += i.x - measureText(f, o.fontSize, n) / 2;
  2322. h.y += i.y;
  2323. var p = h.x;
  2324. var u = h.y;
  2325. n.beginPath();
  2326. n.setFontSize(o.fontSize);
  2327. n.setFillStyle(e.labelColor || r.fontColor);
  2328. n.fillText(f, p, u + o.fontSize / 2);
  2329. n.closePath();
  2330. n.stroke();
  2331. l += c;
  2332. if (l >= 2) {
  2333. l = l % 2
  2334. }
  2335. s += x
  2336. }
  2337. }
  2338. function drawRadarLabel(t, s, h, c, d, x) {
  2339. var f = c.extra.radar || {};
  2340. t.forEach(function(t, e) {
  2341. if (f.labelPointShow === true && c.categories[e] !== "") {
  2342. var a = {
  2343. x: s * Math.cos(t),
  2344. y: s * Math.sin(t)
  2345. };
  2346. var i = convertCoordinateOrigin(a.x, a.y, h);
  2347. x.setFillStyle(f.labelPointColor);
  2348. x.beginPath();
  2349. x.arc(i.x, i.y, f.labelPointRadius * c.pix, 0, 2 * Math.PI, false);
  2350. x.closePath();
  2351. x.fill()
  2352. }
  2353. if (f.labelShow === true) {
  2354. var r = {
  2355. x: (s + d.radarLabelTextMargin * c.pix) * Math.cos(t),
  2356. y: (s + d.radarLabelTextMargin * c.pix) * Math.sin(t)
  2357. };
  2358. var o = convertCoordinateOrigin(r.x, r.y, h);
  2359. var n = o.x;
  2360. var l = o.y;
  2361. if (util.approximatelyEqual(r.x, 0)) {
  2362. n -= measureText(c.categories[e] || "", d.fontSize, x) / 2
  2363. } else if (r.x < 0) {
  2364. n -= measureText(c.categories[e] || "", d.fontSize, x)
  2365. }
  2366. x.beginPath();
  2367. x.setFontSize(d.fontSize);
  2368. x.setFillStyle(f.labelColor || c.fontColor);
  2369. x.fillText(c.categories[e] || "", n, l + d.fontSize / 2);
  2370. x.closePath();
  2371. x.stroke()
  2372. }
  2373. })
  2374. }
  2375. function drawPieText(n, d, x, f, t, l) {
  2376. var p = x.pieChartLinePadding;
  2377. var u = [];
  2378. var g = null;
  2379. var y = n.map(function(t, e) {
  2380. var a = t.formatter ? t.formatter(t, e, n, d) : util.toFixed(t._proportion_.toFixed(4) * 100) + "%";
  2381. a = t.labelText ? t.labelText : a;
  2382. var i = 2 * Math.PI - (t._start_ + 2 * Math.PI * t._proportion_ / 2);
  2383. if (t._rose_proportion_) {
  2384. i = 2 * Math.PI - (t._start_ + 2 * Math.PI * t._rose_proportion_ / 2)
  2385. }
  2386. var r = t.color;
  2387. var o = t._radius_;
  2388. return {
  2389. arc: i,
  2390. text: a,
  2391. color: r,
  2392. radius: o,
  2393. textColor: t.textColor,
  2394. textSize: t.textSize,
  2395. labelShow: t.labelShow
  2396. }
  2397. });
  2398. for (let c = 0; c < y.length; c++) {
  2399. let t = y[c];
  2400. let e = Math.cos(t.arc) * (t.radius + p);
  2401. let a = Math.sin(t.arc) * (t.radius + p);
  2402. let i = Math.cos(t.arc) * t.radius;
  2403. let r = Math.sin(t.arc) * t.radius;
  2404. let o = e >= 0 ? e + x.pieChartTextPadding : e - x.pieChartTextPadding;
  2405. let n = a;
  2406. let l = measureText(t.text, t.textSize * d.pix || x.fontSize, f);
  2407. let s = n;
  2408. if (g && util.isSameXCoordinateArea(g.start, {
  2409. x: o
  2410. })) {
  2411. if (o > 0) {
  2412. s = Math.min(n, g.start.y)
  2413. } else if (e < 0) {
  2414. s = Math.max(n, g.start.y)
  2415. } else {
  2416. if (n > 0) {
  2417. s = Math.max(n, g.start.y)
  2418. } else {
  2419. s = Math.min(n, g.start.y)
  2420. }
  2421. }
  2422. }
  2423. if (o < 0) {
  2424. o -= l
  2425. }
  2426. let h = {
  2427. lineStart: {
  2428. x: i,
  2429. y: r
  2430. },
  2431. lineEnd: {
  2432. x: e,
  2433. y: a
  2434. },
  2435. start: {
  2436. x: o,
  2437. y: s
  2438. },
  2439. width: l,
  2440. height: x.fontSize,
  2441. text: t.text,
  2442. color: t.color,
  2443. textColor: t.textColor,
  2444. textSize: t.textSize
  2445. };
  2446. g = avoidCollision(h, g);
  2447. u.push(g)
  2448. }
  2449. for (let n = 0; n < u.length; n++) {
  2450. if (y[n].labelShow === false) {
  2451. continue
  2452. }
  2453. let t = u[n];
  2454. let e = convertCoordinateOrigin(t.lineStart.x, t.lineStart.y, l);
  2455. let a = convertCoordinateOrigin(t.lineEnd.x, t.lineEnd.y, l);
  2456. let i = convertCoordinateOrigin(t.start.x, t.start.y, l);
  2457. f.setLineWidth(1 * d.pix);
  2458. f.setFontSize(t.textSize * d.pix || x.fontSize);
  2459. f.beginPath();
  2460. f.setStrokeStyle(t.color);
  2461. f.setFillStyle(t.color);
  2462. f.moveTo(e.x, e.y);
  2463. let r = t.start.x < 0 ? i.x + t.width : i.x;
  2464. let o = t.start.x < 0 ? i.x - 5 : i.x + 5;
  2465. f.quadraticCurveTo(a.x, a.y, r, i.y);
  2466. f.moveTo(e.x, e.y);
  2467. f.stroke();
  2468. f.closePath();
  2469. f.beginPath();
  2470. f.moveTo(i.x + t.width, i.y);
  2471. f.arc(r, i.y, 2 * d.pix, 0, 2 * Math.PI);
  2472. f.closePath();
  2473. f.fill();
  2474. f.beginPath();
  2475. f.setFontSize(t.textSize * d.pix || x.fontSize);
  2476. f.setFillStyle(t.textColor || d.fontColor);
  2477. f.fillText(t.text, o, i.y + 3);
  2478. f.closePath();
  2479. f.stroke();
  2480. f.closePath()
  2481. }
  2482. }
  2483. function drawToolTipSplitLine(r, o, n, l) {
  2484. var s = o.extra.tooltip || {};
  2485. s.gridType = s.gridType == undefined ? "solid" : s.gridType;
  2486. s.dashLength = s.dashLength == undefined ? 4 : s.dashLength;
  2487. var t = o.area[0];
  2488. var h = o.height - o.area[2];
  2489. if (s.gridType == "dash") {
  2490. l.setLineDash([s.dashLength, s.dashLength])
  2491. }
  2492. l.setStrokeStyle(s.gridColor || "#cccccc");
  2493. l.setLineWidth(1 * o.pix);
  2494. l.beginPath();
  2495. l.moveTo(r, t);
  2496. l.lineTo(r, h);
  2497. l.stroke();
  2498. l.setLineDash([]);
  2499. if (s.xAxisLabel) {
  2500. let t = o.categories[o.tooltip.index];
  2501. l.setFontSize(n.fontSize);
  2502. let e = measureText(t, n.fontSize, l);
  2503. let a = r - .5 * e;
  2504. let i = h + 2 * o.pix;
  2505. l.beginPath();
  2506. l.setFillStyle(hexToRgb(s.labelBgColor || n.toolTipBackground, s.labelBgOpacity || n.toolTipOpacity));
  2507. l.setStrokeStyle(s.labelBgColor || n.toolTipBackground);
  2508. l.setLineWidth(1 * o.pix);
  2509. l.rect(a - s.boxPadding * o.pix, i, e + 2 * s.boxPadding * o.pix, n.fontSize + 2 * s.boxPadding * o.pix);
  2510. l.closePath();
  2511. l.stroke();
  2512. l.fill();
  2513. l.beginPath();
  2514. l.setFontSize(n.fontSize);
  2515. l.setFillStyle(s.labelFontColor || o.fontColor);
  2516. l.fillText(String(t), a, i + s.boxPadding * o.pix + n.fontSize);
  2517. l.closePath();
  2518. l.stroke()
  2519. }
  2520. }
  2521. function drawMarkLine(h, t, c) {
  2522. let e = assign({}, {
  2523. type: "solid",
  2524. dashLength: 4,
  2525. data: []
  2526. }, h.extra.markLine);
  2527. let a = h.area[3];
  2528. let i = h.width - h.area[1];
  2529. let r = calMarkLineData(e.data, h);
  2530. for (let t = 0; t < r.length; t++) {
  2531. let s = assign({}, {
  2532. lineColor: "#DE4A42",
  2533. showLabel: false,
  2534. labelFontSize: 13,
  2535. labelPadding: 6,
  2536. labelFontColor: "#666666",
  2537. labelBgColor: "#DFE8FF",
  2538. labelBgOpacity: .8,
  2539. labelAlign: "left",
  2540. labelOffsetX: 0,
  2541. labelOffsetY: 0
  2542. }, r[t]);
  2543. if (e.type == "dash") {
  2544. c.setLineDash([e.dashLength, e.dashLength])
  2545. }
  2546. c.setStrokeStyle(s.lineColor);
  2547. c.setLineWidth(1 * h.pix);
  2548. c.beginPath();
  2549. c.moveTo(a, s.y);
  2550. c.lineTo(i, s.y);
  2551. c.stroke();
  2552. c.setLineDash([]);
  2553. if (s.showLabel) {
  2554. let t = s.labelFontSize * h.pix;
  2555. let e = s.labelText ? s.labelText : s.value;
  2556. c.setFontSize(t);
  2557. let a = measureText(e, t, c);
  2558. let i = a + s.labelPadding * h.pix * 2;
  2559. let r = s.labelAlign == "left" ? h.area[3] - i : h.width - h.area[1];
  2560. r += s.labelOffsetX;
  2561. let o = s.y - .5 * t - s.labelPadding * h.pix;
  2562. o += s.labelOffsetY;
  2563. let n = r + s.labelPadding * h.pix;
  2564. let l = s.y;
  2565. c.setFillStyle(hexToRgb(s.labelBgColor, s.labelBgOpacity));
  2566. c.setStrokeStyle(s.labelBgColor);
  2567. c.setLineWidth(1 * h.pix);
  2568. c.beginPath();
  2569. c.rect(r, o, i, t + 2 * s.labelPadding * h.pix);
  2570. c.closePath();
  2571. c.stroke();
  2572. c.fill();
  2573. c.setFontSize(t);
  2574. c.setTextAlign("left");
  2575. c.setFillStyle(s.labelFontColor);
  2576. c.fillText(String(e), n, o + t + s.labelPadding * h.pix / 2);
  2577. c.stroke();
  2578. c.setTextAlign("left")
  2579. }
  2580. }
  2581. }
  2582. function drawToolTipHorizentalLine(x, f, p, t, e) {
  2583. var u = assign({}, {
  2584. gridType: "solid",
  2585. dashLength: 4
  2586. }, x.extra.tooltip);
  2587. var a = x.area[3];
  2588. var i = x.width - x.area[1];
  2589. if (u.gridType == "dash") {
  2590. p.setLineDash([u.dashLength, u.dashLength])
  2591. }
  2592. p.setStrokeStyle(u.gridColor || "#cccccc");
  2593. p.setLineWidth(1 * x.pix);
  2594. p.beginPath();
  2595. p.moveTo(a, x.tooltip.offset.y);
  2596. p.lineTo(i, x.tooltip.offset.y);
  2597. p.stroke();
  2598. p.setLineDash([]);
  2599. if (u.yAxisLabel) {
  2600. let l = u.boxPadding * x.pix;
  2601. let s = calTooltipYAxisData(x.tooltip.offset.y, x.series, x, f, t);
  2602. let h = x.chartData.yAxisData.yAxisWidth;
  2603. let c = x.area[3];
  2604. let d = x.width - x.area[1];
  2605. for (let n = 0; n < s.length; n++) {
  2606. p.setFontSize(u.fontSize * x.pix);
  2607. let t = measureText(s[n], u.fontSize * x.pix, p);
  2608. let e, a, i;
  2609. if (h[n].position == "left") {
  2610. e = c - (t + l * 2) - 2 * x.pix;
  2611. a = Math.max(e, e + t + l * 2)
  2612. } else {
  2613. e = d + 2 * x.pix;
  2614. a = Math.max(e + h[n].width, e + t + l * 2)
  2615. }
  2616. i = a - e;
  2617. let r = e + (i - t) / 2;
  2618. let o = x.tooltip.offset.y;
  2619. p.beginPath();
  2620. p.setFillStyle(hexToRgb(u.labelBgColor || f.toolTipBackground, u.labelBgOpacity || f.toolTipOpacity));
  2621. p.setStrokeStyle(u.labelBgColor || f.toolTipBackground);
  2622. p.setLineWidth(1 * x.pix);
  2623. p.rect(e, o - .5 * f.fontSize - l, i, f.fontSize + 2 * l);
  2624. p.closePath();
  2625. p.stroke();
  2626. p.fill();
  2627. p.beginPath();
  2628. p.setFontSize(f.fontSize);
  2629. p.setFillStyle(u.labelFontColor || x.fontColor);
  2630. p.fillText(s[n], r, o + .5 * f.fontSize);
  2631. p.closePath();
  2632. p.stroke();
  2633. if (h[n].position == "left") {
  2634. c -= h[n].width + x.yAxis.padding * x.pix
  2635. } else {
  2636. d += h[n].width + x.yAxis.padding * x.pix
  2637. }
  2638. }
  2639. }
  2640. }
  2641. function drawToolTipSplitArea(t, e, a, i, r) {
  2642. var o = assign({}, {
  2643. activeBgColor: "#000000",
  2644. activeBgOpacity: .08,
  2645. activeWidth: r
  2646. }, e.extra.column);
  2647. o.activeWidth = o.activeWidth > r ? r : o.activeWidth;
  2648. var n = e.area[0];
  2649. var l = e.height - e.area[2];
  2650. i.beginPath();
  2651. i.setFillStyle(hexToRgb(o.activeBgColor, o.activeBgOpacity));
  2652. i.rect(t - o.activeWidth / 2, n, o.activeWidth, l - n);
  2653. i.closePath();
  2654. i.fill();
  2655. i.setFillStyle("#FFFFFF")
  2656. }
  2657. function drawBarToolTipSplitArea(t, e, a, i, r) {
  2658. var o = assign({}, {
  2659. activeBgColor: "#000000",
  2660. activeBgOpacity: .08
  2661. }, e.extra.bar);
  2662. var n = e.area[3];
  2663. var l = e.width - e.area[1];
  2664. i.beginPath();
  2665. i.setFillStyle(hexToRgb(o.activeBgColor, o.activeBgOpacity));
  2666. i.rect(n, t - r / 2, l - n, r);
  2667. i.closePath();
  2668. i.fill();
  2669. i.setFillStyle("#FFFFFF")
  2670. }
  2671. function drawToolTip(e, r, o, a, n, i, f) {
  2672. var l = assign({}, {
  2673. showBox: true,
  2674. showArrow: true,
  2675. showCategory: false,
  2676. bgColor: "#000000",
  2677. bgOpacity: .7,
  2678. borderColor: "#000000",
  2679. borderWidth: 0,
  2680. borderRadius: 0,
  2681. borderOpacity: .7,
  2682. boxPadding: 3,
  2683. fontColor: "#FFFFFF",
  2684. fontSize: 13,
  2685. lineHeight: 20,
  2686. legendShow: true,
  2687. legendShape: "auto",
  2688. splitLine: true
  2689. }, o.extra.tooltip);
  2690. if (l.showCategory == true && o.categories) {
  2691. e.unshift({
  2692. text: o.categories[o.tooltip.index],
  2693. color: null
  2694. })
  2695. }
  2696. var s = l.fontSize * o.pix;
  2697. var p = l.lineHeight * o.pix;
  2698. var h = l.boxPadding * o.pix;
  2699. var c = s;
  2700. var u = 5 * o.pix;
  2701. if (l.legendShow == false) {
  2702. c = 0;
  2703. u = 0
  2704. }
  2705. var d = l.showArrow ? 8 * o.pix : 0;
  2706. var g = false;
  2707. if (o.type == "line" || o.type == "mount" || o.type == "area" || o.type == "candle" || o.type == "mix") {
  2708. if (l.splitLine == true) {
  2709. drawToolTipSplitLine(o.tooltip.offset.x, o, a, n)
  2710. }
  2711. }
  2712. r = assign({
  2713. x: 0,
  2714. y: 0
  2715. }, r);
  2716. r.y -= 8 * o.pix;
  2717. var y = e.map(function(t) {
  2718. return measureText(t.text, s, n)
  2719. });
  2720. var x = c + u + 4 * h + Math.max.apply(null, y);
  2721. var v = 2 * h + e.length * p;
  2722. if (l.showBox == false) {
  2723. return
  2724. }
  2725. if (r.x - Math.abs(o._scrollDistance_ || 0) + d + x > o.width) {
  2726. g = true
  2727. }
  2728. if (v + r.y > o.height) {
  2729. r.y = o.height - v
  2730. }
  2731. n.beginPath();
  2732. n.setFillStyle(hexToRgb(l.bgColor, l.bgOpacity));
  2733. n.setLineWidth(l.borderWidth * o.pix);
  2734. n.setStrokeStyle(hexToRgb(l.borderColor, l.borderOpacity));
  2735. var t = l.borderRadius;
  2736. if (g) {
  2737. if (x + d > o.width) {
  2738. r.x = o.width + Math.abs(o._scrollDistance_ || 0) + d + (x - o.width)
  2739. }
  2740. if (x > r.x) {
  2741. r.x = o.width + Math.abs(o._scrollDistance_ || 0) + d + (x - o.width)
  2742. }
  2743. if (l.showArrow) {
  2744. n.moveTo(r.x, r.y + 10 * o.pix);
  2745. n.lineTo(r.x - d, r.y + 10 * o.pix + 5 * o.pix)
  2746. }
  2747. n.arc(r.x - d - t, r.y + v - t, t, 0, Math.PI / 2, false);
  2748. n.arc(r.x - d - Math.round(x) + t, r.y + v - t, t, Math.PI / 2, Math.PI, false);
  2749. n.arc(r.x - d - Math.round(x) + t, r.y + t, t, -Math.PI, -Math.PI / 2, false);
  2750. n.arc(r.x - d - t, r.y + t, t, -Math.PI / 2, 0, false);
  2751. if (l.showArrow) {
  2752. n.lineTo(r.x - d, r.y + 10 * o.pix - 5 * o.pix);
  2753. n.lineTo(r.x, r.y + 10 * o.pix)
  2754. }
  2755. } else {
  2756. if (l.showArrow) {
  2757. n.moveTo(r.x, r.y + 10 * o.pix);
  2758. n.lineTo(r.x + d, r.y + 10 * o.pix - 5 * o.pix)
  2759. }
  2760. n.arc(r.x + d + t, r.y + t, t, -Math.PI, -Math.PI / 2, false);
  2761. n.arc(r.x + d + Math.round(x) - t, r.y + t, t, -Math.PI / 2, 0, false);
  2762. n.arc(r.x + d + Math.round(x) - t, r.y + v - t, t, 0, Math.PI / 2, false);
  2763. n.arc(r.x + d + t, r.y + v - t, t, Math.PI / 2, Math.PI, false);
  2764. if (l.showArrow) {
  2765. n.lineTo(r.x + d, r.y + 10 * o.pix + 5 * o.pix);
  2766. n.lineTo(r.x, r.y + 10 * o.pix)
  2767. }
  2768. }
  2769. n.closePath();
  2770. n.fill();
  2771. if (l.borderWidth > 0) {
  2772. n.stroke()
  2773. }
  2774. if (l.legendShow) {
  2775. e.forEach(function(t, e) {
  2776. if (t.color !== null) {
  2777. n.beginPath();
  2778. n.setFillStyle(t.color);
  2779. var a = r.x + d + 2 * h;
  2780. var i = r.y + (p - s) / 2 + p * e + h + 1;
  2781. if (g) {
  2782. a = r.x - x - d + 2 * h
  2783. }
  2784. switch (t.legendShape) {
  2785. case "line":
  2786. n.moveTo(a, i + .5 * c - 2 * o.pix);
  2787. n.fillRect(a, i + .5 * c - 2 * o.pix, c, 4 * o.pix);
  2788. break;
  2789. case "triangle":
  2790. n.moveTo(a + 7.5 * o.pix, i + .5 * c - 5 * o.pix);
  2791. n.lineTo(a + 2.5 * o.pix, i + .5 * c + 5 * o.pix);
  2792. n.lineTo(a + 12.5 * o.pix, i + .5 * c + 5 * o.pix);
  2793. n.lineTo(a + 7.5 * o.pix, i + .5 * c - 5 * o.pix);
  2794. break;
  2795. case "diamond":
  2796. n.moveTo(a + 7.5 * o.pix, i + .5 * c - 5 * o.pix);
  2797. n.lineTo(a + 2.5 * o.pix, i + .5 * c);
  2798. n.lineTo(a + 7.5 * o.pix, i + .5 * c + 5 * o.pix);
  2799. n.lineTo(a + 12.5 * o.pix, i + .5 * c);
  2800. n.lineTo(a + 7.5 * o.pix, i + .5 * c - 5 * o.pix);
  2801. break;
  2802. case "circle":
  2803. n.moveTo(a + 7.5 * o.pix, i + .5 * c);
  2804. n.arc(a + 7.5 * o.pix, i + .5 * c, 5 * o.pix, 0, 2 * Math.PI);
  2805. break;
  2806. case "rect":
  2807. n.moveTo(a, i + .5 * c - 5 * o.pix);
  2808. n.fillRect(a, i + .5 * c - 5 * o.pix, 15 * o.pix, 10 * o.pix);
  2809. break;
  2810. case "square":
  2811. n.moveTo(a + 2 * o.pix, i + .5 * c - 5 * o.pix);
  2812. n.fillRect(a + 2 * o.pix, i + .5 * c - 5 * o.pix, 10 * o.pix, 10 * o.pix);
  2813. break;
  2814. default:
  2815. n.moveTo(a, i + .5 * c - 5 * o.pix);
  2816. n.fillRect(a, i + .5 * c - 5 * o.pix, 15 * o.pix, 10 * o.pix)
  2817. }
  2818. n.closePath();
  2819. n.fill()
  2820. }
  2821. })
  2822. }
  2823. e.forEach(function(t, e) {
  2824. var a = r.x + d + 2 * h + c + u;
  2825. if (g) {
  2826. a = r.x - x - d + 2 * h + c + u
  2827. }
  2828. var i = r.y + p * e + (p - s) / 2 - 1 + h + s;
  2829. n.beginPath();
  2830. n.setFontSize(s);
  2831. n.setTextBaseline("normal");
  2832. n.setFillStyle(l.fontColor);
  2833. n.fillText(t.text, a, i);
  2834. n.closePath();
  2835. n.stroke()
  2836. })
  2837. }
  2838. function drawColumnDataPoints(T, b, S, w) {
  2839. let A = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  2840. let t = b.chartData.xAxisData,
  2841. P = t.xAxisPoints,
  2842. C = t.eachSpacing;
  2843. let D = assign({}, {
  2844. type: "group",
  2845. width: C / 2,
  2846. meterBorder: 4,
  2847. meterFillColor: "#FFFFFF",
  2848. barBorderCircle: false,
  2849. barBorderRadius: [],
  2850. seriesGap: 2,
  2851. linearType: "none",
  2852. linearOpacity: 1,
  2853. customColor: [],
  2854. colorStop: 0,
  2855. labelPosition: "outside"
  2856. }, b.extra.column);
  2857. let M = [];
  2858. w.save();
  2859. let L = -2;
  2860. let F = P.length + 2;
  2861. if (b._scrollDistance_ && b._scrollDistance_ !== 0 && b.enableScroll === true) {
  2862. w.translate(b._scrollDistance_, 0);
  2863. L = Math.floor(-b._scrollDistance_ / C) - 2;
  2864. F = L + b.xAxis.itemCount + 4
  2865. }
  2866. if (b.tooltip && b.tooltip.textList && b.tooltip.textList.length && A === 1) {
  2867. drawToolTipSplitArea(b.tooltip.offset.x, b, S, w, C)
  2868. }
  2869. D.customColor = fillCustomColor(D.linearType, D.customColor, T, S);
  2870. T.forEach(function(a, i) {
  2871. let e, t, o;
  2872. e = [].concat(b.chartData.yAxisData.ranges[a.index]);
  2873. t = e.pop();
  2874. o = e.shift();
  2875. let x = b.height - b.area[0] - b.area[2];
  2876. let f = x * (0 - t) / (o - t);
  2877. let n = b.height - Math.round(f) - b.area[2];
  2878. a.zeroPoints = n;
  2879. var p = a.data;
  2880. switch (D.type) {
  2881. case "group":
  2882. var r = getColumnDataPoints(p, t, o, P, C, b, S, n, A);
  2883. var u = getStackDataPoints(p, t, o, P, C, b, S, i, T, A);
  2884. M.push(u);
  2885. r = fixColumeData(r, C, T.length, i, S, b);
  2886. for (let t = 0; t < r.length; t++) {
  2887. let o = r[t];
  2888. if (o !== null && t > L && t < F) {
  2889. var l = o.x - o.width / 2;
  2890. var s = b.height - o.y - b.area[2];
  2891. w.beginPath();
  2892. var g = o.color || a.color;
  2893. var y = o.color || a.color;
  2894. if (D.linearType !== "none") {
  2895. var v = w.createLinearGradient(l, o.y, l, n);
  2896. if (D.linearType == "opacity") {
  2897. v.addColorStop(0, hexToRgb(g, D.linearOpacity));
  2898. v.addColorStop(1, hexToRgb(g, 1))
  2899. } else {
  2900. v.addColorStop(0, hexToRgb(D.customColor[a.linearIndex], D.linearOpacity));
  2901. v.addColorStop(D.colorStop, hexToRgb(D.customColor[a.linearIndex], D
  2902. .linearOpacity));
  2903. v.addColorStop(1, hexToRgb(g, 1))
  2904. }
  2905. g = v
  2906. }
  2907. if (D.barBorderRadius && D.barBorderRadius.length === 4 || D.barBorderCircle === true) {
  2908. const h = l;
  2909. const c = o.y > n ? n : o.y;
  2910. const d = o.width;
  2911. const s = Math.abs(n - o.y);
  2912. if (D.barBorderCircle) {
  2913. D.barBorderRadius = [d / 2, d / 2, 0, 0]
  2914. }
  2915. if (o.y > n) {
  2916. D.barBorderRadius = [0, 0, d / 2, d / 2]
  2917. }
  2918. let [t, e, a, i] = D.barBorderRadius;
  2919. let r = Math.min(d / 2, s / 2);
  2920. t = t > r ? r : t;
  2921. e = e > r ? r : e;
  2922. a = a > r ? r : a;
  2923. i = i > r ? r : i;
  2924. t = t < 0 ? 0 : t;
  2925. e = e < 0 ? 0 : e;
  2926. a = a < 0 ? 0 : a;
  2927. i = i < 0 ? 0 : i;
  2928. w.arc(h + t, c + t, t, -Math.PI, -Math.PI / 2);
  2929. w.arc(h + d - e, c + e, e, -Math.PI / 2, 0);
  2930. w.arc(h + d - a, c + s - a, a, 0, Math.PI / 2);
  2931. w.arc(h + i, c + s - i, i, Math.PI / 2, Math.PI)
  2932. } else {
  2933. w.moveTo(l, o.y);
  2934. w.lineTo(l + o.width, o.y);
  2935. w.lineTo(l + o.width, n);
  2936. w.lineTo(l, n);
  2937. w.lineTo(l, o.y);
  2938. w.setLineWidth(1);
  2939. w.setStrokeStyle(y)
  2940. }
  2941. w.setFillStyle(g);
  2942. w.closePath();
  2943. w.fill()
  2944. }
  2945. };
  2946. break;
  2947. case "stack":
  2948. var r = getStackDataPoints(p, t, o, P, C, b, S, i, T, A);
  2949. M.push(r);
  2950. r = fixColumeStackData(r, C, T.length, i, S, b, T);
  2951. for (let e = 0; e < r.length; e++) {
  2952. let t = r[e];
  2953. if (t !== null && e > L && e < F) {
  2954. w.beginPath();
  2955. var g = t.color || a.color;
  2956. var l = t.x - t.width / 2 + 1;
  2957. var s = b.height - t.y - b.area[2];
  2958. var m = b.height - t.y0 - b.area[2];
  2959. if (i > 0) {
  2960. s -= m
  2961. }
  2962. w.setFillStyle(g);
  2963. w.moveTo(l, t.y);
  2964. w.fillRect(l, t.y, t.width, s);
  2965. w.closePath();
  2966. w.fill()
  2967. }
  2968. };
  2969. break;
  2970. case "meter":
  2971. var r = getDataPoints(p, t, o, P, C, b, S, A);
  2972. M.push(r);
  2973. r = fixColumeMeterData(r, C, T.length, i, S, b, D.meterBorder);
  2974. for (let t = 0; t < r.length; t++) {
  2975. let o = r[t];
  2976. if (o !== null && t > L && t < F) {
  2977. w.beginPath();
  2978. if (i == 0 && D.meterBorder > 0) {
  2979. w.setStrokeStyle(a.color);
  2980. w.setLineWidth(D.meterBorder * b.pix)
  2981. }
  2982. if (i == 0) {
  2983. w.setFillStyle(D.meterFillColor)
  2984. } else {
  2985. w.setFillStyle(o.color || a.color)
  2986. }
  2987. var l = o.x - o.width / 2;
  2988. var s = b.height - o.y - b.area[2];
  2989. if (D.barBorderRadius && D.barBorderRadius.length === 4 || D.barBorderCircle === true) {
  2990. const h = l;
  2991. const c = o.y;
  2992. const d = o.width;
  2993. const s = n - o.y;
  2994. if (D.barBorderCircle) {
  2995. D.barBorderRadius = [d / 2, d / 2, 0, 0]
  2996. }
  2997. let [t, e, a, i] = D.barBorderRadius;
  2998. let r = Math.min(d / 2, s / 2);
  2999. t = t > r ? r : t;
  3000. e = e > r ? r : e;
  3001. a = a > r ? r : a;
  3002. i = i > r ? r : i;
  3003. t = t < 0 ? 0 : t;
  3004. e = e < 0 ? 0 : e;
  3005. a = a < 0 ? 0 : a;
  3006. i = i < 0 ? 0 : i;
  3007. w.arc(h + t, c + t, t, -Math.PI, -Math.PI / 2);
  3008. w.arc(h + d - e, c + e, e, -Math.PI / 2, 0);
  3009. w.arc(h + d - a, c + s - a, a, 0, Math.PI / 2);
  3010. w.arc(h + i, c + s - i, i, Math.PI / 2, Math.PI);
  3011. w.fill()
  3012. } else {
  3013. w.moveTo(l, o.y);
  3014. w.lineTo(l + o.width, o.y);
  3015. w.lineTo(l + o.width, n);
  3016. w.lineTo(l, n);
  3017. w.lineTo(l, o.y);
  3018. w.fill()
  3019. }
  3020. if (i == 0 && D.meterBorder > 0) {
  3021. w.closePath();
  3022. w.stroke()
  3023. }
  3024. }
  3025. }
  3026. break
  3027. }
  3028. });
  3029. if (b.dataLabel !== false && A === 1) {
  3030. T.forEach(function(t, e) {
  3031. let a, i, r;
  3032. a = [].concat(b.chartData.yAxisData.ranges[t.index]);
  3033. i = a.pop();
  3034. r = a.shift();
  3035. var o = t.data;
  3036. switch (D.type) {
  3037. case "group":
  3038. var n = getColumnDataPoints(o, i, r, P, C, b, S, A);
  3039. n = fixColumeData(n, C, T.length, e, S, b);
  3040. drawColumePointText(n, t, S, w, b);
  3041. break;
  3042. case "stack":
  3043. var n = getStackDataPoints(o, i, r, P, C, b, S, e, T, A);
  3044. drawColumePointText(n, t, S, w, b);
  3045. break;
  3046. case "meter":
  3047. var n = getDataPoints(o, i, r, P, C, b, S, A);
  3048. drawColumePointText(n, t, S, w, b);
  3049. break
  3050. }
  3051. })
  3052. }
  3053. w.restore();
  3054. return {
  3055. xAxisPoints: P,
  3056. calPoints: M,
  3057. eachSpacing: C
  3058. }
  3059. }
  3060. function drawMountDataPoints(i, r, o, n) {
  3061. let f = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3062. let t = r.chartData.xAxisData,
  3063. p = t.xAxisPoints,
  3064. l = t.eachSpacing;
  3065. let s = assign({}, {
  3066. type: "mount",
  3067. widthRatio: 1,
  3068. borderWidth: 1,
  3069. barBorderCircle: false,
  3070. barBorderRadius: [],
  3071. linearType: "none",
  3072. linearOpacity: 1,
  3073. customColor: [],
  3074. colorStop: 0
  3075. }, r.extra.mount);
  3076. s.widthRatio = s.widthRatio <= 0 ? 0 : s.widthRatio;
  3077. s.widthRatio = s.widthRatio >= 2 ? 2 : s.widthRatio;
  3078. let e = [];
  3079. n.save();
  3080. let u = -2;
  3081. let g = p.length + 2;
  3082. if (r._scrollDistance_ && r._scrollDistance_ !== 0 && r.enableScroll === true) {
  3083. n.translate(r._scrollDistance_, 0);
  3084. u = Math.floor(-r._scrollDistance_ / l) - 2;
  3085. g = u + r.xAxis.itemCount + 4
  3086. }
  3087. s.customColor = fillCustomColor(s.linearType, s.customColor, i, o);
  3088. let y, v, m;
  3089. y = [].concat(r.chartData.yAxisData.ranges[0]);
  3090. v = y.pop();
  3091. m = y.shift();
  3092. let T = r.height - r.area[0] - r.area[2];
  3093. let b = T * (0 - v) / (m - v);
  3094. let h = r.height - Math.round(b) - r.area[2];
  3095. var c = getMountDataPoints(i, v, m, p, l, r, s, h, f);
  3096. switch (s.type) {
  3097. case "bar":
  3098. for (let t = 0; t < c.length; t++) {
  3099. let o = c[t];
  3100. if (o !== null && t > u && t < g) {
  3101. var d = o.x - l * s.widthRatio / 2;
  3102. var S = r.height - o.y - r.area[2];
  3103. n.beginPath();
  3104. var a = o.color || i[t].color;
  3105. var w = o.color || i[t].color;
  3106. if (s.linearType !== "none") {
  3107. var x = n.createLinearGradient(d, o.y, d, h);
  3108. if (s.linearType == "opacity") {
  3109. x.addColorStop(0, hexToRgb(a, s.linearOpacity));
  3110. x.addColorStop(1, hexToRgb(a, 1))
  3111. } else {
  3112. x.addColorStop(0, hexToRgb(s.customColor[i[t].linearIndex], s.linearOpacity));
  3113. x.addColorStop(s.colorStop, hexToRgb(s.customColor[i[t].linearIndex], s.linearOpacity));
  3114. x.addColorStop(1, hexToRgb(a, 1))
  3115. }
  3116. a = x
  3117. }
  3118. if (s.barBorderRadius && s.barBorderRadius.length === 4 || s.barBorderCircle === true) {
  3119. const A = d;
  3120. const P = o.y > h ? h : o.y;
  3121. const C = o.width;
  3122. const S = Math.abs(h - o.y);
  3123. if (s.barBorderCircle) {
  3124. s.barBorderRadius = [C / 2, C / 2, 0, 0]
  3125. }
  3126. if (o.y > h) {
  3127. s.barBorderRadius = [0, 0, C / 2, C / 2]
  3128. }
  3129. let [t, e, a, i] = s.barBorderRadius;
  3130. let r = Math.min(C / 2, S / 2);
  3131. t = t > r ? r : t;
  3132. e = e > r ? r : e;
  3133. a = a > r ? r : a;
  3134. i = i > r ? r : i;
  3135. t = t < 0 ? 0 : t;
  3136. e = e < 0 ? 0 : e;
  3137. a = a < 0 ? 0 : a;
  3138. i = i < 0 ? 0 : i;
  3139. n.arc(A + t, P + t, t, -Math.PI, -Math.PI / 2);
  3140. n.arc(A + C - e, P + e, e, -Math.PI / 2, 0);
  3141. n.arc(A + C - a, P + S - a, a, 0, Math.PI / 2);
  3142. n.arc(A + i, P + S - i, i, Math.PI / 2, Math.PI)
  3143. } else {
  3144. n.moveTo(d, o.y);
  3145. n.lineTo(d + o.width, o.y);
  3146. n.lineTo(d + o.width, h);
  3147. n.lineTo(d, h);
  3148. n.lineTo(d, o.y)
  3149. }
  3150. n.setStrokeStyle(w);
  3151. n.setFillStyle(a);
  3152. if (s.borderWidth > 0) {
  3153. n.setLineWidth(s.borderWidth * r.pix);
  3154. n.closePath();
  3155. n.stroke()
  3156. }
  3157. n.fill()
  3158. }
  3159. };
  3160. break;
  3161. case "triangle":
  3162. for (let e = 0; e < c.length; e++) {
  3163. let t = c[e];
  3164. if (t !== null && e > u && e < g) {
  3165. var d = t.x - l * s.widthRatio / 2;
  3166. var S = r.height - t.y - r.area[2];
  3167. n.beginPath();
  3168. var a = t.color || i[e].color;
  3169. var w = t.color || i[e].color;
  3170. if (s.linearType !== "none") {
  3171. var x = n.createLinearGradient(d, t.y, d, h);
  3172. if (s.linearType == "opacity") {
  3173. x.addColorStop(0, hexToRgb(a, s.linearOpacity));
  3174. x.addColorStop(1, hexToRgb(a, 1))
  3175. } else {
  3176. x.addColorStop(0, hexToRgb(s.customColor[i[e].linearIndex], s.linearOpacity));
  3177. x.addColorStop(s.colorStop, hexToRgb(s.customColor[i[e].linearIndex], s.linearOpacity));
  3178. x.addColorStop(1, hexToRgb(a, 1))
  3179. }
  3180. a = x
  3181. }
  3182. n.moveTo(d, h);
  3183. n.lineTo(t.x, t.y);
  3184. n.lineTo(d + t.width, h);
  3185. n.setStrokeStyle(w);
  3186. n.setFillStyle(a);
  3187. if (s.borderWidth > 0) {
  3188. n.setLineWidth(s.borderWidth * r.pix);
  3189. n.stroke()
  3190. }
  3191. n.fill()
  3192. }
  3193. };
  3194. break;
  3195. case "mount":
  3196. for (let e = 0; e < c.length; e++) {
  3197. let t = c[e];
  3198. if (t !== null && e > u && e < g) {
  3199. var d = t.x - l * s.widthRatio / 2;
  3200. var S = r.height - t.y - r.area[2];
  3201. n.beginPath();
  3202. var a = t.color || i[e].color;
  3203. var w = t.color || i[e].color;
  3204. if (s.linearType !== "none") {
  3205. var x = n.createLinearGradient(d, t.y, d, h);
  3206. if (s.linearType == "opacity") {
  3207. x.addColorStop(0, hexToRgb(a, s.linearOpacity));
  3208. x.addColorStop(1, hexToRgb(a, 1))
  3209. } else {
  3210. x.addColorStop(0, hexToRgb(s.customColor[i[e].linearIndex], s.linearOpacity));
  3211. x.addColorStop(s.colorStop, hexToRgb(s.customColor[i[e].linearIndex], s.linearOpacity));
  3212. x.addColorStop(1, hexToRgb(a, 1))
  3213. }
  3214. a = x
  3215. }
  3216. n.moveTo(d, h);
  3217. n.bezierCurveTo(t.x - t.width / 4, h, t.x - t.width / 4, t.y, t.x, t.y);
  3218. n.bezierCurveTo(t.x + t.width / 4, t.y, t.x + t.width / 4, h, d + t.width, h);
  3219. n.setStrokeStyle(w);
  3220. n.setFillStyle(a);
  3221. if (s.borderWidth > 0) {
  3222. n.setLineWidth(s.borderWidth * r.pix);
  3223. n.stroke()
  3224. }
  3225. n.fill()
  3226. }
  3227. };
  3228. break;
  3229. case "sharp":
  3230. for (let e = 0; e < c.length; e++) {
  3231. let t = c[e];
  3232. if (t !== null && e > u && e < g) {
  3233. var d = t.x - l * s.widthRatio / 2;
  3234. var S = r.height - t.y - r.area[2];
  3235. n.beginPath();
  3236. var a = t.color || i[e].color;
  3237. var w = t.color || i[e].color;
  3238. if (s.linearType !== "none") {
  3239. var x = n.createLinearGradient(d, t.y, d, h);
  3240. if (s.linearType == "opacity") {
  3241. x.addColorStop(0, hexToRgb(a, s.linearOpacity));
  3242. x.addColorStop(1, hexToRgb(a, 1))
  3243. } else {
  3244. x.addColorStop(0, hexToRgb(s.customColor[i[e].linearIndex], s.linearOpacity));
  3245. x.addColorStop(s.colorStop, hexToRgb(s.customColor[i[e].linearIndex], s.linearOpacity));
  3246. x.addColorStop(1, hexToRgb(a, 1))
  3247. }
  3248. a = x
  3249. }
  3250. n.moveTo(d, h);
  3251. n.quadraticCurveTo(t.x - 0, h - S / 4, t.x, t.y);
  3252. n.quadraticCurveTo(t.x + 0, h - S / 4, d + t.width, h);
  3253. n.setStrokeStyle(w);
  3254. n.setFillStyle(a);
  3255. if (s.borderWidth > 0) {
  3256. n.setLineWidth(s.borderWidth * r.pix);
  3257. n.stroke()
  3258. }
  3259. n.fill()
  3260. }
  3261. };
  3262. break
  3263. }
  3264. if (r.dataLabel !== false && f === 1) {
  3265. let t, e, a;
  3266. t = [].concat(r.chartData.yAxisData.ranges[0]);
  3267. e = t.pop();
  3268. a = t.shift();
  3269. var c = getMountDataPoints(i, e, a, p, l, r, s, h, f);
  3270. drawMountPointText(c, i, o, n, r, h)
  3271. }
  3272. n.restore();
  3273. return {
  3274. xAxisPoints: p,
  3275. calPoints: c,
  3276. eachSpacing: l
  3277. }
  3278. }
  3279. function drawBarDataPoints(y, v, m, T) {
  3280. let b = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3281. let S = [];
  3282. let w = (v.height - v.area[0] - v.area[2]) / v.categories.length;
  3283. for (let t = 0; t < v.categories.length; t++) {
  3284. S.push(v.area[0] + w / 2 + w * t)
  3285. }
  3286. let A = assign({}, {
  3287. type: "group",
  3288. width: w / 2,
  3289. meterBorder: 4,
  3290. meterFillColor: "#FFFFFF",
  3291. barBorderCircle: false,
  3292. barBorderRadius: [],
  3293. seriesGap: 2,
  3294. linearType: "none",
  3295. linearOpacity: 1,
  3296. customColor: [],
  3297. colorStop: 0
  3298. }, v.extra.bar);
  3299. let P = [];
  3300. T.save();
  3301. let C = -2;
  3302. let D = S.length + 2;
  3303. if (v.tooltip && v.tooltip.textList && v.tooltip.textList.length && b === 1) {
  3304. drawBarToolTipSplitArea(v.tooltip.offset.y, v, m, T, w)
  3305. }
  3306. A.customColor = fillCustomColor(A.linearType, A.customColor, y, m);
  3307. y.forEach(function(a, t) {
  3308. let o, e, d;
  3309. o = [].concat(v.chartData.xAxisData.ranges);
  3310. d = o.pop();
  3311. e = o.shift();
  3312. var x = a.data;
  3313. switch (A.type) {
  3314. case "group":
  3315. var i = getBarDataPoints(x, e, d, S, w, v, m, b);
  3316. var f = getBarStackDataPoints(x, e, d, S, w, v, m, t, y, b);
  3317. P.push(f);
  3318. i = fixBarData(i, w, y.length, t, m, v);
  3319. for (let t = 0; t < i.length; t++) {
  3320. let o = i[t];
  3321. if (o !== null && t > C && t < D) {
  3322. var n = v.area[3];
  3323. var r = o.y - o.width / 2;
  3324. var p = o.height;
  3325. T.beginPath();
  3326. var l = o.color || a.color;
  3327. var u = o.color || a.color;
  3328. if (A.linearType !== "none") {
  3329. var s = T.createLinearGradient(n, o.y, o.x, o.y);
  3330. if (A.linearType == "opacity") {
  3331. s.addColorStop(0, hexToRgb(l, A.linearOpacity));
  3332. s.addColorStop(1, hexToRgb(l, 1))
  3333. } else {
  3334. s.addColorStop(0, hexToRgb(A.customColor[a.linearIndex], A.linearOpacity));
  3335. s.addColorStop(A.colorStop, hexToRgb(A.customColor[a.linearIndex], A
  3336. .linearOpacity));
  3337. s.addColorStop(1, hexToRgb(l, 1))
  3338. }
  3339. l = s
  3340. }
  3341. if (A.barBorderRadius && A.barBorderRadius.length === 4 || A.barBorderCircle === true) {
  3342. const g = n;
  3343. const h = o.width;
  3344. const c = o.y - o.width / 2;
  3345. const p = o.height;
  3346. if (A.barBorderCircle) {
  3347. A.barBorderRadius = [h / 2, h / 2, 0, 0]
  3348. }
  3349. let [t, e, a, i] = A.barBorderRadius;
  3350. let r = Math.min(h / 2, p / 2);
  3351. t = t > r ? r : t;
  3352. e = e > r ? r : e;
  3353. a = a > r ? r : a;
  3354. i = i > r ? r : i;
  3355. t = t < 0 ? 0 : t;
  3356. e = e < 0 ? 0 : e;
  3357. a = a < 0 ? 0 : a;
  3358. i = i < 0 ? 0 : i;
  3359. T.arc(g + i, c + i, i, -Math.PI, -Math.PI / 2);
  3360. T.arc(o.x - t, c + t, t, -Math.PI / 2, 0);
  3361. T.arc(o.x - e, c + h - e, e, 0, Math.PI / 2);
  3362. T.arc(g + a, c + h - a, a, Math.PI / 2, Math.PI)
  3363. } else {
  3364. T.moveTo(n, r);
  3365. T.lineTo(o.x, r);
  3366. T.lineTo(o.x, r + o.width);
  3367. T.lineTo(n, r + o.width);
  3368. T.lineTo(n, r);
  3369. T.setLineWidth(1);
  3370. T.setStrokeStyle(u)
  3371. }
  3372. T.setFillStyle(l);
  3373. T.closePath();
  3374. T.fill()
  3375. }
  3376. };
  3377. break;
  3378. case "stack":
  3379. var i = getBarStackDataPoints(x, e, d, S, w, v, m, t, y, b);
  3380. P.push(i);
  3381. i = fixBarStackData(i, w, y.length, t, m, v, y);
  3382. for (let e = 0; e < i.length; e++) {
  3383. let t = i[e];
  3384. if (t !== null && e > C && e < D) {
  3385. T.beginPath();
  3386. var l = t.color || a.color;
  3387. var n = t.x0;
  3388. T.setFillStyle(l);
  3389. T.moveTo(n, t.y - t.width / 2);
  3390. T.fillRect(n, t.y - t.width / 2, t.height, t.width);
  3391. T.closePath();
  3392. T.fill()
  3393. }
  3394. };
  3395. break
  3396. }
  3397. });
  3398. if (v.dataLabel !== false && b === 1) {
  3399. y.forEach(function(t, e) {
  3400. let a, i, r;
  3401. a = [].concat(v.chartData.xAxisData.ranges);
  3402. r = a.pop();
  3403. i = a.shift();
  3404. var o = t.data;
  3405. switch (A.type) {
  3406. case "group":
  3407. var n = getBarDataPoints(o, i, r, S, w, v, m, b);
  3408. n = fixBarData(n, w, y.length, e, m, v);
  3409. drawBarPointText(n, t, m, T, v);
  3410. break;
  3411. case "stack":
  3412. var n = getBarStackDataPoints(o, i, r, S, w, v, m, e, y, b);
  3413. drawBarPointText(n, t, m, T, v);
  3414. break
  3415. }
  3416. })
  3417. }
  3418. return {
  3419. yAxisPoints: S,
  3420. calPoints: P,
  3421. eachSpacing: w
  3422. }
  3423. }
  3424. function drawCandleDataPoints(e, t, h, c, d) {
  3425. var g = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  3426. var s = assign({}, {
  3427. color: {},
  3428. average: {}
  3429. }, h.extra.candle);
  3430. s.color = assign({}, {
  3431. upLine: "#f04864",
  3432. upFill: "#f04864",
  3433. downLine: "#2fc25b",
  3434. downFill: "#2fc25b"
  3435. }, s.color);
  3436. s.average = assign({}, {
  3437. show: false,
  3438. name: [],
  3439. day: [],
  3440. color: c.color
  3441. }, s.average);
  3442. h.extra.candle = s;
  3443. let a = h.chartData.xAxisData,
  3444. x = a.xAxisPoints,
  3445. f = a.eachSpacing;
  3446. let y = [];
  3447. d.save();
  3448. let p = -2;
  3449. let v = x.length + 2;
  3450. let u = 0;
  3451. let m = h.width + f;
  3452. if (h._scrollDistance_ && h._scrollDistance_ !== 0 && h.enableScroll === true) {
  3453. d.translate(h._scrollDistance_, 0);
  3454. p = Math.floor(-h._scrollDistance_ / f) - 2;
  3455. v = p + h.xAxis.itemCount + 4;
  3456. u = -h._scrollDistance_ - f * 2 + h.area[3];
  3457. m = u + (h.xAxis.itemCount + 4) * f
  3458. }
  3459. if (s.average.show || t) {
  3460. t.forEach(function(e, t) {
  3461. let a, i, r;
  3462. a = [].concat(h.chartData.yAxisData.ranges[e.index]);
  3463. i = a.pop();
  3464. r = a.shift();
  3465. var o = e.data;
  3466. var n = getDataPoints(o, i, r, x, f, h, c, g);
  3467. var l = splitPoints(n, e);
  3468. for (let t = 0; t < l.length; t++) {
  3469. let i = l[t];
  3470. d.beginPath();
  3471. d.setStrokeStyle(e.color);
  3472. d.setLineWidth(1);
  3473. if (i.length === 1) {
  3474. d.moveTo(i[0].x, i[0].y);
  3475. d.arc(i[0].x, i[0].y, 1, 0, 2 * Math.PI)
  3476. } else {
  3477. d.moveTo(i[0].x, i[0].y);
  3478. let a = 0;
  3479. for (let e = 0; e < i.length; e++) {
  3480. let t = i[e];
  3481. if (a == 0 && t.x > u) {
  3482. d.moveTo(t.x, t.y);
  3483. a = 1
  3484. }
  3485. if (e > 0 && t.x > u && t.x < m) {
  3486. var s = createCurveControlPoints(i, e - 1);
  3487. d.bezierCurveTo(s.ctrA.x, s.ctrA.y, s.ctrB.x, s.ctrB.y, t.x, t.y)
  3488. }
  3489. }
  3490. d.moveTo(i[0].x, i[0].y)
  3491. }
  3492. d.closePath();
  3493. d.stroke()
  3494. }
  3495. })
  3496. }
  3497. e.forEach(function(t, e) {
  3498. let a, i, r;
  3499. a = [].concat(h.chartData.yAxisData.ranges[t.index]);
  3500. i = a.pop();
  3501. r = a.shift();
  3502. var o = t.data;
  3503. var n = getCandleDataPoints(o, i, r, x, f, h, c, g);
  3504. y.push(n);
  3505. var l = splitPoints(n, t);
  3506. for (let e = 0; e < l[0].length; e++) {
  3507. if (e > p && e < v) {
  3508. let t = l[0][e];
  3509. d.beginPath();
  3510. if (o[e][1] - o[e][0] > 0) {
  3511. d.setStrokeStyle(s.color.upLine);
  3512. d.setFillStyle(s.color.upFill);
  3513. d.setLineWidth(1 * h.pix);
  3514. d.moveTo(t[3].x, t[3].y);
  3515. d.lineTo(t[1].x, t[1].y);
  3516. d.lineTo(t[1].x - f / 4, t[1].y);
  3517. d.lineTo(t[0].x - f / 4, t[0].y);
  3518. d.lineTo(t[0].x, t[0].y);
  3519. d.lineTo(t[2].x, t[2].y);
  3520. d.lineTo(t[0].x, t[0].y);
  3521. d.lineTo(t[0].x + f / 4, t[0].y);
  3522. d.lineTo(t[1].x + f / 4, t[1].y);
  3523. d.lineTo(t[1].x, t[1].y);
  3524. d.moveTo(t[3].x, t[3].y)
  3525. } else {
  3526. d.setStrokeStyle(s.color.downLine);
  3527. d.setFillStyle(s.color.downFill);
  3528. d.setLineWidth(1 * h.pix);
  3529. d.moveTo(t[3].x, t[3].y);
  3530. d.lineTo(t[0].x, t[0].y);
  3531. d.lineTo(t[0].x - f / 4, t[0].y);
  3532. d.lineTo(t[1].x - f / 4, t[1].y);
  3533. d.lineTo(t[1].x, t[1].y);
  3534. d.lineTo(t[2].x, t[2].y);
  3535. d.lineTo(t[1].x, t[1].y);
  3536. d.lineTo(t[1].x + f / 4, t[1].y);
  3537. d.lineTo(t[0].x + f / 4, t[0].y);
  3538. d.lineTo(t[0].x, t[0].y);
  3539. d.moveTo(t[3].x, t[3].y)
  3540. }
  3541. d.closePath();
  3542. d.fill();
  3543. d.stroke()
  3544. }
  3545. }
  3546. });
  3547. d.restore();
  3548. return {
  3549. xAxisPoints: x,
  3550. calPoints: y,
  3551. eachSpacing: f
  3552. }
  3553. }
  3554. function drawAreaDataPoints(t, s, h, c) {
  3555. var d = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3556. var x = assign({}, {
  3557. type: "straight",
  3558. opacity: .2,
  3559. addLine: false,
  3560. width: 2,
  3561. gradient: false,
  3562. activeType: "none"
  3563. }, s.extra.area);
  3564. let e = s.chartData.xAxisData,
  3565. f = e.xAxisPoints,
  3566. p = e.eachSpacing;
  3567. let y = s.height - s.area[2];
  3568. let v = [];
  3569. c.save();
  3570. let u = 0;
  3571. let g = s.width + p;
  3572. if (s._scrollDistance_ && s._scrollDistance_ !== 0 && s.enableScroll === true) {
  3573. c.translate(s._scrollDistance_, 0);
  3574. u = -s._scrollDistance_ - p * 2 + s.area[3];
  3575. g = u + (s.xAxis.itemCount + 4) * p
  3576. }
  3577. t.forEach(function(e, t) {
  3578. let a, i, r;
  3579. a = [].concat(s.chartData.yAxisData.ranges[e.index]);
  3580. i = a.pop();
  3581. r = a.shift();
  3582. let o = e.data;
  3583. let n = getDataPoints(o, i, r, f, p, s, h, d);
  3584. v.push(n);
  3585. let l = splitPoints(n, e);
  3586. for (let t = 0; t < l.length; t++) {
  3587. let r = l[t];
  3588. c.beginPath();
  3589. c.setStrokeStyle(hexToRgb(e.color, x.opacity));
  3590. if (x.gradient) {
  3591. let t = c.createLinearGradient(0, s.area[0], 0, s.height - s.area[2]);
  3592. t.addColorStop("0", hexToRgb(e.color, x.opacity));
  3593. t.addColorStop("1.0", hexToRgb("#FFFFFF", .1));
  3594. c.setFillStyle(t)
  3595. } else {
  3596. c.setFillStyle(hexToRgb(e.color, x.opacity))
  3597. }
  3598. c.setLineWidth(x.width * s.pix);
  3599. if (r.length > 1) {
  3600. let t = r[0];
  3601. let e = r[r.length - 1];
  3602. c.moveTo(t.x, t.y);
  3603. let i = 0;
  3604. if (x.type === "curve") {
  3605. for (let a = 0; a < r.length; a++) {
  3606. let e = r[a];
  3607. if (i == 0 && e.x > u) {
  3608. c.moveTo(e.x, e.y);
  3609. i = 1
  3610. }
  3611. if (a > 0 && e.x > u && e.x < g) {
  3612. let t = createCurveControlPoints(r, a - 1);
  3613. c.bezierCurveTo(t.ctrA.x, t.ctrA.y, t.ctrB.x, t.ctrB.y, e.x, e.y)
  3614. }
  3615. }
  3616. }
  3617. if (x.type === "straight") {
  3618. for (let e = 0; e < r.length; e++) {
  3619. let t = r[e];
  3620. if (i == 0 && t.x > u) {
  3621. c.moveTo(t.x, t.y);
  3622. i = 1
  3623. }
  3624. if (e > 0 && t.x > u && t.x < g) {
  3625. c.lineTo(t.x, t.y)
  3626. }
  3627. }
  3628. }
  3629. if (x.type === "step") {
  3630. for (let e = 0; e < r.length; e++) {
  3631. let t = r[e];
  3632. if (i == 0 && t.x > u) {
  3633. c.moveTo(t.x, t.y);
  3634. i = 1
  3635. }
  3636. if (e > 0 && t.x > u && t.x < g) {
  3637. c.lineTo(t.x, r[e - 1].y);
  3638. c.lineTo(t.x, t.y)
  3639. }
  3640. }
  3641. }
  3642. c.lineTo(e.x, y);
  3643. c.lineTo(t.x, y);
  3644. c.lineTo(t.x, t.y)
  3645. } else {
  3646. let t = r[0];
  3647. c.moveTo(t.x - p / 2, t.y)
  3648. }
  3649. c.closePath();
  3650. c.fill();
  3651. if (x.addLine) {
  3652. if (e.lineType == "dash") {
  3653. let t = e.dashLength ? e.dashLength : 8;
  3654. t *= s.pix;
  3655. c.setLineDash([t, t])
  3656. }
  3657. c.beginPath();
  3658. c.setStrokeStyle(e.color);
  3659. c.setLineWidth(x.width * s.pix);
  3660. if (r.length === 1) {
  3661. c.moveTo(r[0].x, r[0].y)
  3662. } else {
  3663. c.moveTo(r[0].x, r[0].y);
  3664. let i = 0;
  3665. if (x.type === "curve") {
  3666. for (let a = 0; a < r.length; a++) {
  3667. let e = r[a];
  3668. if (i == 0 && e.x > u) {
  3669. c.moveTo(e.x, e.y);
  3670. i = 1
  3671. }
  3672. if (a > 0 && e.x > u && e.x < g) {
  3673. let t = createCurveControlPoints(r, a - 1);
  3674. c.bezierCurveTo(t.ctrA.x, t.ctrA.y, t.ctrB.x, t.ctrB.y, e.x, e.y)
  3675. }
  3676. }
  3677. }
  3678. if (x.type === "straight") {
  3679. for (let e = 0; e < r.length; e++) {
  3680. let t = r[e];
  3681. if (i == 0 && t.x > u) {
  3682. c.moveTo(t.x, t.y);
  3683. i = 1
  3684. }
  3685. if (e > 0 && t.x > u && t.x < g) {
  3686. c.lineTo(t.x, t.y)
  3687. }
  3688. }
  3689. }
  3690. if (x.type === "step") {
  3691. for (let e = 0; e < r.length; e++) {
  3692. let t = r[e];
  3693. if (i == 0 && t.x > u) {
  3694. c.moveTo(t.x, t.y);
  3695. i = 1
  3696. }
  3697. if (e > 0 && t.x > u && t.x < g) {
  3698. c.lineTo(t.x, r[e - 1].y);
  3699. c.lineTo(t.x, t.y)
  3700. }
  3701. }
  3702. }
  3703. c.moveTo(r[0].x, r[0].y)
  3704. }
  3705. c.stroke();
  3706. c.setLineDash([])
  3707. }
  3708. }
  3709. if (s.dataPointShape !== false) {
  3710. drawPointShape(n, e.color, e.pointShape, c, s)
  3711. }
  3712. drawActivePoint(n, e.color, e.pointShape, c, s, x, t)
  3713. });
  3714. if (s.dataLabel !== false && d === 1) {
  3715. t.forEach(function(t, e) {
  3716. let a, i, r;
  3717. a = [].concat(s.chartData.yAxisData.ranges[t.index]);
  3718. i = a.pop();
  3719. r = a.shift();
  3720. var o = t.data;
  3721. var n = getDataPoints(o, i, r, f, p, s, h, d);
  3722. drawPointText(n, t, h, c, s)
  3723. })
  3724. }
  3725. c.restore();
  3726. return {
  3727. xAxisPoints: f,
  3728. calPoints: v,
  3729. eachSpacing: p
  3730. }
  3731. }
  3732. function drawScatterDataPoints(t, s, h, c) {
  3733. var d = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3734. var i = assign({}, {
  3735. type: "circle"
  3736. }, s.extra.scatter);
  3737. let e = s.chartData.xAxisData,
  3738. x = e.xAxisPoints,
  3739. f = e.eachSpacing;
  3740. var r = [];
  3741. c.save();
  3742. let a = 0;
  3743. let o = s.width + f;
  3744. if (s._scrollDistance_ && s._scrollDistance_ !== 0 && s.enableScroll === true) {
  3745. c.translate(s._scrollDistance_, 0);
  3746. a = -s._scrollDistance_ - f * 2 + s.area[3];
  3747. o = a + (s.xAxis.itemCount + 4) * f
  3748. }
  3749. t.forEach(function(t, e) {
  3750. let a, i, r;
  3751. a = [].concat(s.chartData.yAxisData.ranges[t.index]);
  3752. i = a.pop();
  3753. r = a.shift();
  3754. var o = t.data;
  3755. var n = getDataPoints(o, i, r, x, f, s, h, d);
  3756. c.beginPath();
  3757. c.setStrokeStyle(t.color);
  3758. c.setFillStyle(t.color);
  3759. c.setLineWidth(1 * s.pix);
  3760. var l = t.pointShape;
  3761. if (l === "diamond") {
  3762. n.forEach(function(t, e) {
  3763. if (t !== null) {
  3764. c.moveTo(t.x, t.y - 4.5);
  3765. c.lineTo(t.x - 4.5, t.y);
  3766. c.lineTo(t.x, t.y + 4.5);
  3767. c.lineTo(t.x + 4.5, t.y);
  3768. c.lineTo(t.x, t.y - 4.5)
  3769. }
  3770. })
  3771. } else if (l === "circle") {
  3772. n.forEach(function(t, e) {
  3773. if (t !== null) {
  3774. c.moveTo(t.x + 2.5 * s.pix, t.y);
  3775. c.arc(t.x, t.y, 3 * s.pix, 0, 2 * Math.PI, false)
  3776. }
  3777. })
  3778. } else if (l === "square") {
  3779. n.forEach(function(t, e) {
  3780. if (t !== null) {
  3781. c.moveTo(t.x - 3.5, t.y - 3.5);
  3782. c.rect(t.x - 3.5, t.y - 3.5, 7, 7)
  3783. }
  3784. })
  3785. } else if (l === "triangle") {
  3786. n.forEach(function(t, e) {
  3787. if (t !== null) {
  3788. c.moveTo(t.x, t.y - 4.5);
  3789. c.lineTo(t.x - 4.5, t.y + 4.5);
  3790. c.lineTo(t.x + 4.5, t.y + 4.5);
  3791. c.lineTo(t.x, t.y - 4.5)
  3792. }
  3793. })
  3794. } else if (l === "triangle") {
  3795. return
  3796. }
  3797. c.closePath();
  3798. c.fill();
  3799. c.stroke()
  3800. });
  3801. if (s.dataLabel !== false && d === 1) {
  3802. t.forEach(function(t, e) {
  3803. let a, i, r;
  3804. a = [].concat(s.chartData.yAxisData.ranges[t.index]);
  3805. i = a.pop();
  3806. r = a.shift();
  3807. var o = t.data;
  3808. var n = getDataPoints(o, i, r, x, f, s, h, d);
  3809. drawPointText(n, t, h, c, s)
  3810. })
  3811. }
  3812. c.restore();
  3813. return {
  3814. xAxisPoints: x,
  3815. calPoints: r,
  3816. eachSpacing: f
  3817. }
  3818. }
  3819. function drawBubbleDataPoints(a, l, s, h) {
  3820. var c = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3821. var d = assign({}, {
  3822. opacity: 1,
  3823. border: 2
  3824. }, l.extra.bubble);
  3825. let t = l.chartData.xAxisData,
  3826. x = t.xAxisPoints,
  3827. f = t.eachSpacing;
  3828. var i = [];
  3829. h.save();
  3830. let e = 0;
  3831. let r = l.width + f;
  3832. if (l._scrollDistance_ && l._scrollDistance_ !== 0 && l.enableScroll === true) {
  3833. h.translate(l._scrollDistance_, 0);
  3834. e = -l._scrollDistance_ - f * 2 + l.area[3];
  3835. r = e + (l.xAxis.itemCount + 4) * f
  3836. }
  3837. a.forEach(function(i, t) {
  3838. let e, a, r;
  3839. e = [].concat(l.chartData.yAxisData.ranges[i.index]);
  3840. a = e.pop();
  3841. r = e.shift();
  3842. var o = i.data;
  3843. var n = getDataPoints(o, a, r, x, f, l, s, c);
  3844. h.beginPath();
  3845. h.setStrokeStyle(i.color);
  3846. h.setLineWidth(d.border * l.pix);
  3847. h.setFillStyle(hexToRgb(i.color, d.opacity));
  3848. n.forEach(function(t, e) {
  3849. h.moveTo(t.x + t.r, t.y);
  3850. h.arc(t.x, t.y, t.r * l.pix, 0, 2 * Math.PI, false)
  3851. });
  3852. h.closePath();
  3853. h.fill();
  3854. h.stroke();
  3855. if (l.dataLabel !== false && c === 1) {
  3856. n.forEach(function(t, e) {
  3857. h.beginPath();
  3858. var a = i.textSize * l.pix || s.fontSize;
  3859. h.setFontSize(a);
  3860. h.setFillStyle(i.textColor || "#FFFFFF");
  3861. h.setTextAlign("center");
  3862. h.fillText(String(t.t), t.x, t.y + a / 2);
  3863. h.closePath();
  3864. h.stroke();
  3865. h.setTextAlign("left")
  3866. })
  3867. }
  3868. });
  3869. h.restore();
  3870. return {
  3871. xAxisPoints: x,
  3872. calPoints: i,
  3873. eachSpacing: f
  3874. }
  3875. }
  3876. function drawLineDataPoints(t, d, x, f) {
  3877. var p = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3878. var u = assign({}, {
  3879. type: "straight",
  3880. width: 2,
  3881. activeType: "none",
  3882. linearType: "none",
  3883. onShadow: false,
  3884. animation: "vertical"
  3885. }, d.extra.line);
  3886. u.width *= d.pix;
  3887. let e = d.chartData.xAxisData,
  3888. g = e.xAxisPoints,
  3889. y = e.eachSpacing;
  3890. var T = [];
  3891. f.save();
  3892. let v = 0;
  3893. let m = d.width + y;
  3894. if (d._scrollDistance_ && d._scrollDistance_ !== 0 && d.enableScroll === true) {
  3895. f.translate(d._scrollDistance_, 0);
  3896. v = -d._scrollDistance_ - y * 2 + d.area[3];
  3897. m = v + (d.xAxis.itemCount + 4) * y
  3898. }
  3899. t.forEach(function(e, c) {
  3900. f.beginPath();
  3901. f.setStrokeStyle(e.color);
  3902. f.moveTo(-1e4, -1e4);
  3903. f.lineTo(-10001, -10001);
  3904. f.stroke();
  3905. let t, a, i;
  3906. t = [].concat(d.chartData.yAxisData.ranges[e.index]);
  3907. a = t.pop();
  3908. i = t.shift();
  3909. var r = e.data;
  3910. var o = getLineDataPoints(r, a, i, g, y, d, x, u, p);
  3911. T.push(o);
  3912. var n = splitPoints(o, e);
  3913. if (e.lineType == "dash") {
  3914. let t = e.dashLength ? e.dashLength : 8;
  3915. t *= d.pix;
  3916. f.setLineDash([t, t])
  3917. }
  3918. f.beginPath();
  3919. var l = e.color;
  3920. if (u.linearType !== "none" && e.linearColor && e.linearColor.length > 0) {
  3921. var s = f.createLinearGradient(d.chartData.xAxisData.startX, d.height / 2, d.chartData.xAxisData
  3922. .endX, d.height / 2);
  3923. for (var h = 0; h < e.linearColor.length; h++) {
  3924. s.addColorStop(e.linearColor[h][0], hexToRgb(e.linearColor[h][1], 1))
  3925. }
  3926. l = s
  3927. }
  3928. f.setStrokeStyle(l);
  3929. if (u.onShadow == true && e.setShadow && e.setShadow.length > 0) {
  3930. f.setShadow(e.setShadow[0], e.setShadow[1], e.setShadow[2], e.setShadow[3])
  3931. } else {
  3932. f.setShadow(0, 0, 0, "rgba(0,0,0,0)")
  3933. }
  3934. f.setLineWidth(u.width);
  3935. n.forEach(function(i, t) {
  3936. if (i.length === 1) {
  3937. f.moveTo(i[0].x, i[0].y)
  3938. } else {
  3939. f.moveTo(i[0].x, i[0].y);
  3940. let a = 0;
  3941. if (u.type === "curve") {
  3942. for (let e = 0; e < i.length; e++) {
  3943. let t = i[e];
  3944. if (a == 0 && t.x > v) {
  3945. f.moveTo(t.x, t.y);
  3946. a = 1
  3947. }
  3948. if (e > 0 && t.x > v && t.x < m) {
  3949. var r = createCurveControlPoints(i, e - 1);
  3950. f.bezierCurveTo(r.ctrA.x, r.ctrA.y, r.ctrB.x, r.ctrB.y, t.x, t.y)
  3951. }
  3952. }
  3953. }
  3954. if (u.type === "straight") {
  3955. for (let e = 0; e < i.length; e++) {
  3956. let t = i[e];
  3957. if (a == 0 && t.x > v) {
  3958. f.moveTo(t.x, t.y);
  3959. a = 1
  3960. }
  3961. if (e > 0 && t.x > v && t.x < m) {
  3962. f.lineTo(t.x, t.y)
  3963. }
  3964. }
  3965. }
  3966. if (u.type === "step") {
  3967. for (let e = 0; e < i.length; e++) {
  3968. let t = i[e];
  3969. if (a == 0 && t.x > v) {
  3970. f.moveTo(t.x, t.y);
  3971. a = 1
  3972. }
  3973. if (e > 0 && t.x > v && t.x < m) {
  3974. f.lineTo(t.x, i[e - 1].y);
  3975. f.lineTo(t.x, t.y)
  3976. }
  3977. }
  3978. }
  3979. f.moveTo(i[0].x, i[0].y)
  3980. }
  3981. });
  3982. f.stroke();
  3983. f.setLineDash([]);
  3984. if (d.dataPointShape !== false) {
  3985. drawPointShape(o, e.color, e.pointShape, f, d)
  3986. }
  3987. drawActivePoint(o, e.color, e.pointShape, f, d, u)
  3988. });
  3989. if (d.dataLabel !== false && p === 1) {
  3990. t.forEach(function(t, e) {
  3991. let a, i, r;
  3992. a = [].concat(d.chartData.yAxisData.ranges[t.index]);
  3993. i = a.pop();
  3994. r = a.shift();
  3995. var o = t.data;
  3996. var n = getDataPoints(o, i, r, g, y, d, x, p);
  3997. drawPointText(n, t, x, f, d)
  3998. })
  3999. }
  4000. f.restore();
  4001. return {
  4002. xAxisPoints: g,
  4003. calPoints: T,
  4004. eachSpacing: y
  4005. }
  4006. }
  4007. function drawMixDataPoints(t, v, m, T) {
  4008. let D = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4009. let e = v.chartData.xAxisData,
  4010. b = e.xAxisPoints,
  4011. S = e.eachSpacing;
  4012. let w = assign({}, {
  4013. width: S / 2,
  4014. barBorderCircle: false,
  4015. barBorderRadius: [],
  4016. seriesGap: 2,
  4017. linearType: "none",
  4018. linearOpacity: 1,
  4019. customColor: [],
  4020. colorStop: 0
  4021. }, v.extra.mix.column);
  4022. let A = assign({}, {
  4023. opacity: .2,
  4024. gradient: false
  4025. }, v.extra.mix.area);
  4026. let M = assign({}, {
  4027. width: 2
  4028. }, v.extra.mix.line);
  4029. let L = v.height - v.area[2];
  4030. let F = [];
  4031. var _ = 0;
  4032. var k = 0;
  4033. t.forEach(function(t, e) {
  4034. if (t.type == "column") {
  4035. k += 1
  4036. }
  4037. });
  4038. T.save();
  4039. let R = -2;
  4040. let I = b.length + 2;
  4041. let P = 0;
  4042. let C = v.width + S;
  4043. if (v._scrollDistance_ && v._scrollDistance_ !== 0 && v.enableScroll === true) {
  4044. T.translate(v._scrollDistance_, 0);
  4045. R = Math.floor(-v._scrollDistance_ / S) - 2;
  4046. I = R + v.xAxis.itemCount + 4;
  4047. P = -v._scrollDistance_ - S * 2 + v.area[3];
  4048. C = P + (v.xAxis.itemCount + 4) * S
  4049. }
  4050. w.customColor = fillCustomColor(w.linearType, w.customColor, t, m);
  4051. t.forEach(function(n, t) {
  4052. let o, x, f;
  4053. o = [].concat(v.chartData.yAxisData.ranges[n.index]);
  4054. x = o.pop();
  4055. f = o.shift();
  4056. var p = n.data;
  4057. var a = getDataPoints(p, x, f, b, S, v, m, D);
  4058. F.push(a);
  4059. if (n.type == "column") {
  4060. a = fixColumeData(a, S, k, _, m, v);
  4061. for (let t = 0; t < a.length; t++) {
  4062. let o = a[t];
  4063. if (o !== null && t > R && t < I) {
  4064. var l = o.x - o.width / 2;
  4065. var s = v.height - o.y - v.area[2];
  4066. T.beginPath();
  4067. var e = o.color || n.color;
  4068. var u = o.color || n.color;
  4069. if (w.linearType !== "none") {
  4070. var i = T.createLinearGradient(l, o.y, l, v.height - v.area[2]);
  4071. if (w.linearType == "opacity") {
  4072. i.addColorStop(0, hexToRgb(e, w.linearOpacity));
  4073. i.addColorStop(1, hexToRgb(e, 1))
  4074. } else {
  4075. i.addColorStop(0, hexToRgb(w.customColor[n.linearIndex], w.linearOpacity));
  4076. i.addColorStop(w.colorStop, hexToRgb(w.customColor[n.linearIndex], w
  4077. .linearOpacity));
  4078. i.addColorStop(1, hexToRgb(e, 1))
  4079. }
  4080. e = i
  4081. }
  4082. if (w.barBorderRadius && w.barBorderRadius.length === 4 || w.barBorderCircle) {
  4083. const h = l;
  4084. const c = o.y;
  4085. const d = o.width;
  4086. const s = v.height - v.area[2] - o.y;
  4087. if (w.barBorderCircle) {
  4088. w.barBorderRadius = [d / 2, d / 2, 0, 0]
  4089. }
  4090. let [t, e, a, i] = w.barBorderRadius;
  4091. let r = Math.min(d / 2, s / 2);
  4092. t = t > r ? r : t;
  4093. e = e > r ? r : e;
  4094. a = a > r ? r : a;
  4095. i = i > r ? r : i;
  4096. t = t < 0 ? 0 : t;
  4097. e = e < 0 ? 0 : e;
  4098. a = a < 0 ? 0 : a;
  4099. i = i < 0 ? 0 : i;
  4100. T.arc(h + t, c + t, t, -Math.PI, -Math.PI / 2);
  4101. T.arc(h + d - e, c + e, e, -Math.PI / 2, 0);
  4102. T.arc(h + d - a, c + s - a, a, 0, Math.PI / 2);
  4103. T.arc(h + i, c + s - i, i, Math.PI / 2, Math.PI)
  4104. } else {
  4105. T.moveTo(l, o.y);
  4106. T.lineTo(l + o.width, o.y);
  4107. T.lineTo(l + o.width, v.height - v.area[2]);
  4108. T.lineTo(l, v.height - v.area[2]);
  4109. T.lineTo(l, o.y);
  4110. T.setLineWidth(1);
  4111. T.setStrokeStyle(u)
  4112. }
  4113. T.setFillStyle(e);
  4114. T.closePath();
  4115. T.fill()
  4116. }
  4117. }
  4118. _ += 1
  4119. }
  4120. if (n.type == "area") {
  4121. let e = splitPoints(a, n);
  4122. for (let t = 0; t < e.length; t++) {
  4123. let i = e[t];
  4124. T.beginPath();
  4125. T.setStrokeStyle(n.color);
  4126. T.setStrokeStyle(hexToRgb(n.color, A.opacity));
  4127. if (A.gradient) {
  4128. let t = T.createLinearGradient(0, v.area[0], 0, v.height - v.area[2]);
  4129. t.addColorStop("0", hexToRgb(n.color, A.opacity));
  4130. t.addColorStop("1.0", hexToRgb("#FFFFFF", .1));
  4131. T.setFillStyle(t)
  4132. } else {
  4133. T.setFillStyle(hexToRgb(n.color, A.opacity))
  4134. }
  4135. T.setLineWidth(2 * v.pix);
  4136. if (i.length > 1) {
  4137. var r = i[0];
  4138. let t = i[i.length - 1];
  4139. T.moveTo(r.x, r.y);
  4140. let a = 0;
  4141. if (n.style === "curve") {
  4142. for (let e = 0; e < i.length; e++) {
  4143. let t = i[e];
  4144. if (a == 0 && t.x > P) {
  4145. T.moveTo(t.x, t.y);
  4146. a = 1
  4147. }
  4148. if (e > 0 && t.x > P && t.x < C) {
  4149. var g = createCurveControlPoints(i, e - 1);
  4150. T.bezierCurveTo(g.ctrA.x, g.ctrA.y, g.ctrB.x, g.ctrB.y, t.x, t.y)
  4151. }
  4152. }
  4153. } else {
  4154. for (let e = 0; e < i.length; e++) {
  4155. let t = i[e];
  4156. if (a == 0 && t.x > P) {
  4157. T.moveTo(t.x, t.y);
  4158. a = 1
  4159. }
  4160. if (e > 0 && t.x > P && t.x < C) {
  4161. T.lineTo(t.x, t.y)
  4162. }
  4163. }
  4164. }
  4165. T.lineTo(t.x, L);
  4166. T.lineTo(r.x, L);
  4167. T.lineTo(r.x, r.y)
  4168. } else {
  4169. let t = i[0];
  4170. T.moveTo(t.x - S / 2, t.y)
  4171. }
  4172. T.closePath();
  4173. T.fill()
  4174. }
  4175. }
  4176. if (n.type == "line") {
  4177. var y = splitPoints(a, n);
  4178. y.forEach(function(i, t) {
  4179. if (n.lineType == "dash") {
  4180. let t = n.dashLength ? n.dashLength : 8;
  4181. t *= v.pix;
  4182. T.setLineDash([t, t])
  4183. }
  4184. T.beginPath();
  4185. T.setStrokeStyle(n.color);
  4186. T.setLineWidth(M.width * v.pix);
  4187. if (i.length === 1) {
  4188. T.moveTo(i[0].x, i[0].y)
  4189. } else {
  4190. T.moveTo(i[0].x, i[0].y);
  4191. let a = 0;
  4192. if (n.style == "curve") {
  4193. for (let e = 0; e < i.length; e++) {
  4194. let t = i[e];
  4195. if (a == 0 && t.x > P) {
  4196. T.moveTo(t.x, t.y);
  4197. a = 1
  4198. }
  4199. if (e > 0 && t.x > P && t.x < C) {
  4200. var r = createCurveControlPoints(i, e - 1);
  4201. T.bezierCurveTo(r.ctrA.x, r.ctrA.y, r.ctrB.x, r.ctrB.y, t.x, t.y)
  4202. }
  4203. }
  4204. } else {
  4205. for (let e = 0; e < i.length; e++) {
  4206. let t = i[e];
  4207. if (a == 0 && t.x > P) {
  4208. T.moveTo(t.x, t.y);
  4209. a = 1
  4210. }
  4211. if (e > 0 && t.x > P && t.x < C) {
  4212. T.lineTo(t.x, t.y)
  4213. }
  4214. }
  4215. }
  4216. T.moveTo(i[0].x, i[0].y)
  4217. }
  4218. T.stroke();
  4219. T.setLineDash([])
  4220. })
  4221. }
  4222. if (n.type == "point") {
  4223. n.addPoint = true
  4224. }
  4225. if (n.addPoint == true && n.type !== "column") {
  4226. drawPointShape(a, n.color, n.pointShape, T, v)
  4227. }
  4228. });
  4229. if (v.dataLabel !== false && D === 1) {
  4230. var _ = 0;
  4231. t.forEach(function(t, e) {
  4232. let a, i, r;
  4233. a = [].concat(v.chartData.yAxisData.ranges[t.index]);
  4234. i = a.pop();
  4235. r = a.shift();
  4236. var o = t.data;
  4237. var n = getDataPoints(o, i, r, b, S, v, m, D);
  4238. if (t.type !== "column") {
  4239. drawPointText(n, t, m, T, v)
  4240. } else {
  4241. n = fixColumeData(n, S, k, _, m, v);
  4242. drawPointText(n, t, m, T, v);
  4243. _ += 1
  4244. }
  4245. })
  4246. }
  4247. T.restore();
  4248. return {
  4249. xAxisPoints: b,
  4250. calPoints: F,
  4251. eachSpacing: S
  4252. }
  4253. }
  4254. function drawToolTipBridge(t, e, a, i, r, o) {
  4255. var n = t.extra.tooltip || {};
  4256. if (n.horizentalLine && t.tooltip && i === 1 && (t.type == "line" || t.type == "area" || t.type == "column" || t
  4257. .type == "mount" || t.type == "candle" || t.type == "mix")) {
  4258. drawToolTipHorizentalLine(t, e, a, r, o)
  4259. }
  4260. a.save();
  4261. if (t._scrollDistance_ && t._scrollDistance_ !== 0 && t.enableScroll === true) {
  4262. a.translate(t._scrollDistance_, 0)
  4263. }
  4264. if (t.tooltip && t.tooltip.textList && t.tooltip.textList.length && i === 1) {
  4265. drawToolTip(t.tooltip.textList, t.tooltip.offset, t, e, a, r, o)
  4266. }
  4267. a.restore()
  4268. }
  4269. function drawXAxis(r, h, c, d) {
  4270. let e = h.chartData.xAxisData,
  4271. x = e.xAxisPoints,
  4272. t = e.startX,
  4273. a = e.endX,
  4274. f = e.eachSpacing;
  4275. var p = "center";
  4276. if (h.type == "bar" || h.type == "line" || h.type == "area" || h.type == "scatter" || h.type == "bubble") {
  4277. p = h.xAxis.boundaryGap
  4278. }
  4279. var u = h.height - h.area[2];
  4280. var i = h.area[0];
  4281. if (h.enableScroll && h.xAxis.scrollShow) {
  4282. var o = h.height - h.area[2] + c.xAxisHeight;
  4283. var n = a - t;
  4284. var l = f * (x.length - 1);
  4285. if (h.type == "mount" && h.extra && h.extra.mount && h.extra.mount.widthRatio && h.extra.mount.widthRatio > 1) {
  4286. if (h.extra.mount.widthRatio > 2) h.extra.mount.widthRatio = 2;
  4287. l += (h.extra.mount.widthRatio - 1) * f
  4288. }
  4289. var s = n * n / l;
  4290. var y = 0;
  4291. if (h._scrollDistance_) {
  4292. y = -h._scrollDistance_ * n / l
  4293. }
  4294. d.beginPath();
  4295. d.setLineCap("round");
  4296. d.setLineWidth(6 * h.pix);
  4297. d.setStrokeStyle(h.xAxis.scrollBackgroundColor || "#EFEBEF");
  4298. d.moveTo(t, o);
  4299. d.lineTo(a, o);
  4300. d.stroke();
  4301. d.closePath();
  4302. d.beginPath();
  4303. d.setLineCap("round");
  4304. d.setLineWidth(6 * h.pix);
  4305. d.setStrokeStyle(h.xAxis.scrollColor || "#A6A6A6");
  4306. d.moveTo(t + y, o);
  4307. d.lineTo(t + y + s, o);
  4308. d.stroke();
  4309. d.closePath();
  4310. d.setLineCap("butt")
  4311. }
  4312. d.save();
  4313. if (h._scrollDistance_ && h._scrollDistance_ !== 0) {
  4314. d.translate(h._scrollDistance_, 0)
  4315. }
  4316. if (h.xAxis.calibration === true) {
  4317. d.setStrokeStyle(h.xAxis.gridColor || "#cccccc");
  4318. d.setLineCap("butt");
  4319. d.setLineWidth(1 * h.pix);
  4320. x.forEach(function(t, e) {
  4321. if (e > 0) {
  4322. d.beginPath();
  4323. d.moveTo(t - f / 2, u);
  4324. d.lineTo(t - f / 2, u + 3 * h.pix);
  4325. d.closePath();
  4326. d.stroke()
  4327. }
  4328. })
  4329. }
  4330. if (h.xAxis.disableGrid !== true) {
  4331. d.setStrokeStyle(h.xAxis.gridColor || "#cccccc");
  4332. d.setLineCap("butt");
  4333. d.setLineWidth(1 * h.pix);
  4334. if (h.xAxis.gridType == "dash") {
  4335. d.setLineDash([h.xAxis.dashLength * h.pix, h.xAxis.dashLength * h.pix])
  4336. }
  4337. h.xAxis.gridEval = h.xAxis.gridEval || 1;
  4338. x.forEach(function(t, e) {
  4339. if (e % h.xAxis.gridEval == 0) {
  4340. d.beginPath();
  4341. d.moveTo(t, u);
  4342. d.lineTo(t, i);
  4343. d.stroke()
  4344. }
  4345. });
  4346. d.setLineDash([])
  4347. }
  4348. if (h.xAxis.disabled !== true) {
  4349. let t = r.length;
  4350. if (h.xAxis.labelCount) {
  4351. if (h.xAxis.itemCount) {
  4352. t = Math.ceil(r.length / h.xAxis.itemCount * h.xAxis.labelCount)
  4353. } else {
  4354. t = h.xAxis.labelCount
  4355. }
  4356. t -= 1
  4357. }
  4358. let e = Math.ceil(r.length / t);
  4359. let a = [];
  4360. let i = r.length;
  4361. for (let t = 0; t < i; t++) {
  4362. if (t % e !== 0) {
  4363. a.push("")
  4364. } else {
  4365. a.push(r[t])
  4366. }
  4367. }
  4368. a[i - 1] = r[i - 1];
  4369. var g = h.xAxis.fontSize * h.pix || c.fontSize;
  4370. if (c._xAxisTextAngle_ === 0) {
  4371. a.forEach(function(t, e) {
  4372. var a = h.xAxis.formatter ? h.xAxis.formatter(t, e, h) : t;
  4373. var i = -measureText(String(a), g, d) / 2;
  4374. if (p == "center") {
  4375. i += f / 2
  4376. }
  4377. var r = 0;
  4378. if (h.xAxis.scrollShow) {
  4379. r = 6 * h.pix
  4380. }
  4381. var o = h._scrollDistance_ || 0;
  4382. var n = p == "center" ? x[e] + f / 2 : x[e];
  4383. if (n - Math.abs(o) >= h.area[3] - 1 && n - Math.abs(o) <= h.width - h.area[1] + 1) {
  4384. d.beginPath();
  4385. d.setFontSize(g);
  4386. d.setFillStyle(h.xAxis.fontColor || h.fontColor);
  4387. d.fillText(String(a), x[e] + i, u + h.xAxis.marginTop * h.pix + (h.xAxis.lineHeight - h
  4388. .xAxis.fontSize) * h.pix / 2 + h.xAxis.fontSize * h.pix);
  4389. d.closePath();
  4390. d.stroke()
  4391. }
  4392. })
  4393. } else {
  4394. a.forEach(function(t, e) {
  4395. var a = h.xAxis.formatter ? h.xAxis.formatter(t) : t;
  4396. var i = h._scrollDistance_ || 0;
  4397. var r = p == "center" ? x[e] + f / 2 : x[e];
  4398. if (r - Math.abs(i) >= h.area[3] - 1 && r - Math.abs(i) <= h.width - h.area[1] + 1) {
  4399. d.save();
  4400. d.beginPath();
  4401. d.setFontSize(g);
  4402. d.setFillStyle(h.xAxis.fontColor || h.fontColor);
  4403. var o = measureText(String(a), g, d);
  4404. var n = x[e];
  4405. if (p == "center") {
  4406. n = x[e] + f / 2
  4407. }
  4408. var l = 0;
  4409. if (h.xAxis.scrollShow) {
  4410. l = 6 * h.pix
  4411. }
  4412. var s = u + h.xAxis.marginTop * h.pix + g - g * Math.abs(Math.sin(c._xAxisTextAngle_));
  4413. if (h.xAxis.rotateAngle < 0) {
  4414. n -= g / 2;
  4415. o = 0
  4416. } else {
  4417. n += g / 2;
  4418. o = -o
  4419. }
  4420. d.translate(n, s);
  4421. d.rotate(-1 * c._xAxisTextAngle_);
  4422. d.fillText(String(a), o, 0);
  4423. d.closePath();
  4424. d.stroke();
  4425. d.restore()
  4426. }
  4427. })
  4428. }
  4429. }
  4430. d.restore();
  4431. if (h.xAxis.title) {
  4432. d.beginPath();
  4433. d.setFontSize(h.xAxis.titleFontSize * h.pix);
  4434. d.setFillStyle(h.xAxis.titleFontColor);
  4435. d.fillText(String(h.xAxis.title), h.width - h.area[1] + h.xAxis.titleOffsetX * h.pix, h.height - h.area[2] + h
  4436. .xAxis.marginTop * h.pix + (h.xAxis.lineHeight - h.xAxis.titleFontSize) * h.pix / 2 + (h.xAxis
  4437. .titleFontSize + h.xAxis.titleOffsetY) * h.pix);
  4438. d.closePath();
  4439. d.stroke()
  4440. }
  4441. if (h.xAxis.axisLine) {
  4442. d.beginPath();
  4443. d.setStrokeStyle(h.xAxis.axisLineColor);
  4444. d.setLineWidth(1 * h.pix);
  4445. d.moveTo(t, h.height - h.area[2]);
  4446. d.lineTo(a, h.height - h.area[2]);
  4447. d.stroke()
  4448. }
  4449. }
  4450. function drawYAxisGrid(c, e, d, a) {
  4451. if (e.yAxis.disableGrid === true) {
  4452. return
  4453. }
  4454. let t = e.height - e.area[0] - e.area[2];
  4455. let i = t / e.yAxis.splitNumber;
  4456. let r = e.area[3];
  4457. let o = e.chartData.xAxisData.xAxisPoints,
  4458. n = e.chartData.xAxisData.eachSpacing;
  4459. let l = n * (o.length - 1);
  4460. if (e.type == "mount" && e.extra && e.extra.mount && e.extra.mount.widthRatio && e.extra.mount.widthRatio > 1) {
  4461. if (e.extra.mount.widthRatio > 2) e.extra.mount.widthRatio = 2;
  4462. l += (e.extra.mount.widthRatio - 1) * n
  4463. }
  4464. let x = r + l;
  4465. let s = [];
  4466. let h = 1;
  4467. if (e.xAxis.axisLine === false) {
  4468. h = 0
  4469. }
  4470. for (let t = h; t < e.yAxis.splitNumber + 1; t++) {
  4471. s.push(e.height - e.area[2] - i * t)
  4472. }
  4473. a.save();
  4474. if (e._scrollDistance_ && e._scrollDistance_ !== 0) {
  4475. a.translate(e._scrollDistance_, 0)
  4476. }
  4477. if (e.yAxis.gridType == "dash") {
  4478. a.setLineDash([e.yAxis.dashLength * e.pix, e.yAxis.dashLength * e.pix])
  4479. }
  4480. a.setStrokeStyle(e.yAxis.gridColor);
  4481. a.setLineWidth(1 * e.pix);
  4482. s.forEach(function(t, e) {
  4483. a.beginPath();
  4484. a.moveTo(r, t);
  4485. a.lineTo(x, t);
  4486. a.stroke()
  4487. });
  4488. a.setLineDash([]);
  4489. a.restore()
  4490. }
  4491. function drawYAxis(e, h, a, c) {
  4492. if (h.yAxis.disabled === true) {
  4493. return
  4494. }
  4495. var i = h.height - h.area[0] - h.area[2];
  4496. var r = i / h.yAxis.splitNumber;
  4497. var o = h.area[3];
  4498. var n = h.width - h.area[1];
  4499. var t = h.height - h.area[2];
  4500. c.beginPath();
  4501. c.setFillStyle(h.background);
  4502. if (h.enableScroll == true && h.xAxis.scrollPosition && h.xAxis.scrollPosition !== "left") {
  4503. c.fillRect(0, 0, o, t + 2 * h.pix)
  4504. }
  4505. if (h.enableScroll == true && h.xAxis.scrollPosition && h.xAxis.scrollPosition !== "right") {
  4506. c.fillRect(n, 0, h.width, t + 2 * h.pix)
  4507. }
  4508. c.closePath();
  4509. c.stroke();
  4510. let d = h.area[3];
  4511. let x = h.width - h.area[1];
  4512. let f = h.area[3] + (h.width - h.area[1] - h.area[3]) / 2;
  4513. if (h.yAxis.data) {
  4514. for (let e = 0; e < h.yAxis.data.length; e++) {
  4515. let s = h.yAxis.data[e];
  4516. var p = [];
  4517. if (s.type === "categories") {
  4518. for (let t = 0; t <= s.categories.length; t++) {
  4519. p.push(h.area[0] + i / s.categories.length / 2 + i / s.categories.length * t)
  4520. }
  4521. } else {
  4522. for (let t = 0; t <= h.yAxis.splitNumber; t++) {
  4523. p.push(h.area[0] + r * t)
  4524. }
  4525. }
  4526. if (s.disabled !== true) {
  4527. let t = h.chartData.yAxisData.rangesFormat[e];
  4528. let o = s.fontSize ? s.fontSize * h.pix : a.fontSize;
  4529. let n = h.chartData.yAxisData.yAxisWidth[e];
  4530. let l = s.textAlign || "right";
  4531. t.forEach(function(t, e) {
  4532. var a = p[e];
  4533. c.beginPath();
  4534. c.setFontSize(o);
  4535. c.setLineWidth(1 * h.pix);
  4536. c.setStrokeStyle(s.axisLineColor || "#cccccc");
  4537. c.setFillStyle(s.fontColor || h.fontColor);
  4538. let i = 0;
  4539. let r = 4 * h.pix;
  4540. if (n.position == "left") {
  4541. if (s.calibration == true) {
  4542. c.moveTo(d, a);
  4543. c.lineTo(d - 3 * h.pix, a);
  4544. r += 3 * h.pix
  4545. }
  4546. switch (l) {
  4547. case "left":
  4548. c.setTextAlign("left");
  4549. i = d - n.width;
  4550. break;
  4551. case "right":
  4552. c.setTextAlign("right");
  4553. i = d - r;
  4554. break;
  4555. default:
  4556. c.setTextAlign("center");
  4557. i = d - n.width / 2
  4558. }
  4559. c.fillText(String(t), i, a + o / 2 - 3 * h.pix)
  4560. } else if (n.position == "right") {
  4561. if (s.calibration == true) {
  4562. c.moveTo(x, a);
  4563. c.lineTo(x + 3 * h.pix, a);
  4564. r += 3 * h.pix
  4565. }
  4566. switch (l) {
  4567. case "left":
  4568. c.setTextAlign("left");
  4569. i = x + r;
  4570. break;
  4571. case "right":
  4572. c.setTextAlign("right");
  4573. i = x + n.width;
  4574. break;
  4575. default:
  4576. c.setTextAlign("center");
  4577. i = x + n.width / 2
  4578. }
  4579. c.fillText(String(t), i, a + o / 2 - 3 * h.pix)
  4580. } else if (n.position == "center") {
  4581. if (s.calibration == true) {
  4582. c.moveTo(f, a);
  4583. c.lineTo(f - 3 * h.pix, a);
  4584. r += 3 * h.pix
  4585. }
  4586. switch (l) {
  4587. case "left":
  4588. c.setTextAlign("left");
  4589. i = f - n.width;
  4590. break;
  4591. case "right":
  4592. c.setTextAlign("right");
  4593. i = f - r;
  4594. break;
  4595. default:
  4596. c.setTextAlign("center");
  4597. i = f - n.width / 2
  4598. }
  4599. c.fillText(String(t), i, a + o / 2 - 3 * h.pix)
  4600. }
  4601. c.closePath();
  4602. c.stroke();
  4603. c.setTextAlign("left")
  4604. });
  4605. if (s.axisLine !== false) {
  4606. c.beginPath();
  4607. c.setStrokeStyle(s.axisLineColor || "#cccccc");
  4608. c.setLineWidth(1 * h.pix);
  4609. if (n.position == "left") {
  4610. c.moveTo(d, h.height - h.area[2]);
  4611. c.lineTo(d, h.area[0])
  4612. } else if (n.position == "right") {
  4613. c.moveTo(x, h.height - h.area[2]);
  4614. c.lineTo(x, h.area[0])
  4615. } else if (n.position == "center") {
  4616. c.moveTo(f, h.height - h.area[2]);
  4617. c.lineTo(f, h.area[0])
  4618. }
  4619. c.stroke()
  4620. }
  4621. if (h.yAxis.showTitle) {
  4622. let t = s.titleFontSize * h.pix || a.fontSize;
  4623. let e = s.title;
  4624. c.beginPath();
  4625. c.setFontSize(t);
  4626. c.setFillStyle(s.titleFontColor || h.fontColor);
  4627. if (n.position == "left") {
  4628. c.fillText(e, d - measureText(e, t, c) / 2 + (s.titleOffsetX || 0), h.area[0] - (10 - (s
  4629. .titleOffsetY || 0)) * h.pix)
  4630. } else if (n.position == "right") {
  4631. c.fillText(e, x - measureText(e, t, c) / 2 + (s.titleOffsetX || 0), h.area[0] - (10 - (s
  4632. .titleOffsetY || 0)) * h.pix)
  4633. } else if (n.position == "center") {
  4634. c.fillText(e, f - measureText(e, t, c) / 2 + (s.titleOffsetX || 0), h.area[0] - (10 - (s
  4635. .titleOffsetY || 0)) * h.pix)
  4636. }
  4637. c.closePath();
  4638. c.stroke()
  4639. }
  4640. if (n.position == "left") {
  4641. d -= n.width + h.yAxis.padding * h.pix
  4642. } else {
  4643. x += n.width + h.yAxis.padding * h.pix
  4644. }
  4645. }
  4646. }
  4647. }
  4648. }
  4649. function drawLegend(t, l, y, s, e) {
  4650. if (l.legend.show === false) {
  4651. return
  4652. }
  4653. let h = e.legendData;
  4654. let a = h.points;
  4655. let c = h.area;
  4656. let d = l.legend.padding * l.pix;
  4657. let x = l.legend.fontSize * l.pix;
  4658. let f = 15 * l.pix;
  4659. let p = 5 * l.pix;
  4660. let u = l.legend.itemGap * l.pix;
  4661. let g = Math.max(l.legend.lineHeight * l.pix, x);
  4662. s.beginPath();
  4663. s.setLineWidth(l.legend.borderWidth * l.pix);
  4664. s.setStrokeStyle(l.legend.borderColor);
  4665. s.setFillStyle(l.legend.backgroundColor);
  4666. s.moveTo(c.start.x, c.start.y);
  4667. s.rect(c.start.x, c.start.y, c.width, c.height);
  4668. s.closePath();
  4669. s.fill();
  4670. s.stroke();
  4671. a.forEach(function(i, t) {
  4672. let e = 0;
  4673. let a = 0;
  4674. e = h.widthArr[t];
  4675. a = h.heightArr[t];
  4676. let r = 0;
  4677. let o = 0;
  4678. if (l.legend.position == "top" || l.legend.position == "bottom") {
  4679. switch (l.legend.float) {
  4680. case "left":
  4681. r = c.start.x + d;
  4682. break;
  4683. case "right":
  4684. r = c.start.x + c.width - e;
  4685. break;
  4686. default:
  4687. r = c.start.x + (c.width - e) / 2
  4688. }
  4689. o = c.start.y + d + t * g
  4690. } else {
  4691. if (t == 0) {
  4692. e = 0
  4693. } else {
  4694. e = h.widthArr[t - 1]
  4695. }
  4696. r = c.start.x + d + e;
  4697. o = c.start.y + d + (c.height - a) / 2
  4698. }
  4699. s.setFontSize(y.fontSize);
  4700. for (let a = 0; a < i.length; a++) {
  4701. let t = i[a];
  4702. t.area = [0, 0, 0, 0];
  4703. t.area[0] = r;
  4704. t.area[1] = o;
  4705. t.area[3] = o + g;
  4706. s.beginPath();
  4707. s.setLineWidth(1 * l.pix);
  4708. s.setStrokeStyle(t.show ? t.color : l.legend.hiddenColor);
  4709. s.setFillStyle(t.show ? t.color : l.legend.hiddenColor);
  4710. switch (t.legendShape) {
  4711. case "line":
  4712. s.moveTo(r, o + .5 * g - 2 * l.pix);
  4713. s.fillRect(r, o + .5 * g - 2 * l.pix, 15 * l.pix, 4 * l.pix);
  4714. break;
  4715. case "triangle":
  4716. s.moveTo(r + 7.5 * l.pix, o + .5 * g - 5 * l.pix);
  4717. s.lineTo(r + 2.5 * l.pix, o + .5 * g + 5 * l.pix);
  4718. s.lineTo(r + 12.5 * l.pix, o + .5 * g + 5 * l.pix);
  4719. s.lineTo(r + 7.5 * l.pix, o + .5 * g - 5 * l.pix);
  4720. break;
  4721. case "diamond":
  4722. s.moveTo(r + 7.5 * l.pix, o + .5 * g - 5 * l.pix);
  4723. s.lineTo(r + 2.5 * l.pix, o + .5 * g);
  4724. s.lineTo(r + 7.5 * l.pix, o + .5 * g + 5 * l.pix);
  4725. s.lineTo(r + 12.5 * l.pix, o + .5 * g);
  4726. s.lineTo(r + 7.5 * l.pix, o + .5 * g - 5 * l.pix);
  4727. break;
  4728. case "circle":
  4729. s.moveTo(r + 7.5 * l.pix, o + .5 * g);
  4730. s.arc(r + 7.5 * l.pix, o + .5 * g, 5 * l.pix, 0, 2 * Math.PI);
  4731. break;
  4732. case "rect":
  4733. s.moveTo(r, o + .5 * g - 5 * l.pix);
  4734. s.fillRect(r, o + .5 * g - 5 * l.pix, 15 * l.pix, 10 * l.pix);
  4735. break;
  4736. case "square":
  4737. s.moveTo(r + 5 * l.pix, o + .5 * g - 5 * l.pix);
  4738. s.fillRect(r + 5 * l.pix, o + .5 * g - 5 * l.pix, 10 * l.pix, 10 * l.pix);
  4739. break;
  4740. case "none":
  4741. break;
  4742. default:
  4743. s.moveTo(r, o + .5 * g - 5 * l.pix);
  4744. s.fillRect(r, o + .5 * g - 5 * l.pix, 15 * l.pix, 10 * l.pix)
  4745. }
  4746. s.closePath();
  4747. s.fill();
  4748. s.stroke();
  4749. r += f + p;
  4750. let e = .5 * g + .5 * x - 2;
  4751. const n = t.legendText ? t.legendText : t.name;
  4752. s.beginPath();
  4753. s.setFontSize(x);
  4754. s.setFillStyle(t.show ? l.legend.fontColor : l.legend.hiddenColor);
  4755. s.fillText(n, r, o + e);
  4756. s.closePath();
  4757. s.stroke();
  4758. if (l.legend.position == "top" || l.legend.position == "bottom") {
  4759. r += measureText(n, x, s) + u;
  4760. t.area[2] = r
  4761. } else {
  4762. t.area[2] = r + measureText(n, x, s) + u;
  4763. r -= f + p;
  4764. o += g
  4765. }
  4766. }
  4767. })
  4768. }
  4769. function drawPieDataPoints(t, r, e, o) {
  4770. var a = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4771. var n = assign({}, {
  4772. activeOpacity: .5,
  4773. activeRadius: 10,
  4774. offsetAngle: 0,
  4775. labelWidth: 15,
  4776. ringWidth: 30,
  4777. customRadius: 0,
  4778. border: false,
  4779. borderWidth: 2,
  4780. borderColor: "#FFFFFF",
  4781. centerColor: "#FFFFFF",
  4782. linearType: "none",
  4783. customColor: []
  4784. }, r.type == "pie" ? r.extra.pie : r.extra.ring);
  4785. var l = {
  4786. x: r.area[3] + (r.width - r.area[1] - r.area[3]) / 2,
  4787. y: r.area[0] + (r.height - r.area[0] - r.area[2]) / 2
  4788. };
  4789. if (e.pieChartLinePadding == 0) {
  4790. e.pieChartLinePadding = n.activeRadius * r.pix
  4791. }
  4792. var i = Math.min((r.width - r.area[1] - r.area[3]) / 2 - e.pieChartLinePadding - e.pieChartTextPadding - e
  4793. ._pieTextMaxLength_, (r.height - r.area[0] - r.area[2]) / 2 - e.pieChartLinePadding - e.pieChartTextPadding);
  4794. i = i < 10 ? 10 : i;
  4795. if (n.customRadius > 0) {
  4796. i = n.customRadius * r.pix
  4797. }
  4798. t = getPieDataPoints(t, i, a);
  4799. var h = n.activeRadius * r.pix;
  4800. n.customColor = fillCustomColor(n.linearType, n.customColor, t, e);
  4801. t = t.map(function(t) {
  4802. t._start_ += n.offsetAngle * Math.PI / 180;
  4803. return t
  4804. });
  4805. t.forEach(function(t, e) {
  4806. if (r.tooltip) {
  4807. if (r.tooltip.index == e) {
  4808. o.beginPath();
  4809. o.setFillStyle(hexToRgb(t.color, n.activeOpacity || .5));
  4810. o.moveTo(l.x, l.y);
  4811. o.arc(l.x, l.y, t._radius_ + h, t._start_, t._start_ + 2 * t._proportion_ * Math.PI);
  4812. o.closePath();
  4813. o.fill()
  4814. }
  4815. }
  4816. o.beginPath();
  4817. o.setLineWidth(n.borderWidth * r.pix);
  4818. o.lineJoin = "round";
  4819. o.setStrokeStyle(n.borderColor);
  4820. var a = t.color;
  4821. if (n.linearType == "custom") {
  4822. var i;
  4823. if (o.createCircularGradient) {
  4824. i = o.createCircularGradient(l.x, l.y, t._radius_)
  4825. } else {
  4826. i = o.createRadialGradient(l.x, l.y, 0, l.x, l.y, t._radius_)
  4827. }
  4828. i.addColorStop(0, hexToRgb(n.customColor[t.linearIndex], 1));
  4829. i.addColorStop(1, hexToRgb(t.color, 1));
  4830. a = i
  4831. }
  4832. o.setFillStyle(a);
  4833. o.moveTo(l.x, l.y);
  4834. o.arc(l.x, l.y, t._radius_, t._start_, t._start_ + 2 * t._proportion_ * Math.PI);
  4835. o.closePath();
  4836. o.fill();
  4837. if (n.border == true) {
  4838. o.stroke()
  4839. }
  4840. });
  4841. if (r.type === "ring") {
  4842. var s = i * .6;
  4843. if (typeof n.ringWidth === "number" && n.ringWidth > 0) {
  4844. s = Math.max(0, i - n.ringWidth * r.pix)
  4845. }
  4846. o.beginPath();
  4847. o.setFillStyle(n.centerColor);
  4848. o.moveTo(l.x, l.y);
  4849. o.arc(l.x, l.y, s, 0, 2 * Math.PI);
  4850. o.closePath();
  4851. o.fill()
  4852. }
  4853. if (r.dataLabel !== false && a === 1) {
  4854. drawPieText(t, r, e, o, i, l)
  4855. }
  4856. if (a === 1 && r.type === "ring") {
  4857. drawRingTitle(r, e, o, l)
  4858. }
  4859. return {
  4860. center: l,
  4861. radius: i,
  4862. series: t
  4863. }
  4864. }
  4865. function drawRoseDataPoints(t, r, e, o) {
  4866. var a = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4867. var n = assign({}, {
  4868. type: "area",
  4869. activeOpacity: .5,
  4870. activeRadius: 10,
  4871. offsetAngle: 0,
  4872. labelWidth: 15,
  4873. border: false,
  4874. borderWidth: 2,
  4875. borderColor: "#FFFFFF",
  4876. linearType: "none",
  4877. customColor: []
  4878. }, r.extra.rose);
  4879. if (e.pieChartLinePadding == 0) {
  4880. e.pieChartLinePadding = n.activeRadius * r.pix
  4881. }
  4882. var l = {
  4883. x: r.area[3] + (r.width - r.area[1] - r.area[3]) / 2,
  4884. y: r.area[0] + (r.height - r.area[0] - r.area[2]) / 2
  4885. };
  4886. var i = Math.min((r.width - r.area[1] - r.area[3]) / 2 - e.pieChartLinePadding - e.pieChartTextPadding - e
  4887. ._pieTextMaxLength_, (r.height - r.area[0] - r.area[2]) / 2 - e.pieChartLinePadding - e.pieChartTextPadding);
  4888. i = i < 10 ? 10 : i;
  4889. var s = n.minRadius || i * .5;
  4890. if (i < s) {
  4891. i = s + 10
  4892. }
  4893. t = getRoseDataPoints(t, n.type, s, i, a);
  4894. var h = n.activeRadius * r.pix;
  4895. n.customColor = fillCustomColor(n.linearType, n.customColor, t, e);
  4896. t = t.map(function(t) {
  4897. t._start_ += (n.offsetAngle || 0) * Math.PI / 180;
  4898. return t
  4899. });
  4900. t.forEach(function(t, e) {
  4901. if (r.tooltip) {
  4902. if (r.tooltip.index == e) {
  4903. o.beginPath();
  4904. o.setFillStyle(hexToRgb(t.color, n.activeOpacity || .5));
  4905. o.moveTo(l.x, l.y);
  4906. o.arc(l.x, l.y, h + t._radius_, t._start_, t._start_ + 2 * t._rose_proportion_ * Math.PI);
  4907. o.closePath();
  4908. o.fill()
  4909. }
  4910. }
  4911. o.beginPath();
  4912. o.setLineWidth(n.borderWidth * r.pix);
  4913. o.lineJoin = "round";
  4914. o.setStrokeStyle(n.borderColor);
  4915. var a = t.color;
  4916. if (n.linearType == "custom") {
  4917. var i;
  4918. if (o.createCircularGradient) {
  4919. i = o.createCircularGradient(l.x, l.y, t._radius_)
  4920. } else {
  4921. i = o.createRadialGradient(l.x, l.y, 0, l.x, l.y, t._radius_)
  4922. }
  4923. i.addColorStop(0, hexToRgb(n.customColor[t.linearIndex], 1));
  4924. i.addColorStop(1, hexToRgb(t.color, 1));
  4925. a = i
  4926. }
  4927. o.setFillStyle(a);
  4928. o.moveTo(l.x, l.y);
  4929. o.arc(l.x, l.y, t._radius_, t._start_, t._start_ + 2 * t._rose_proportion_ * Math.PI);
  4930. o.closePath();
  4931. o.fill();
  4932. if (n.border == true) {
  4933. o.stroke()
  4934. }
  4935. });
  4936. if (r.dataLabel !== false && a === 1) {
  4937. drawPieText(t, r, e, o, i, l)
  4938. }
  4939. return {
  4940. center: l,
  4941. radius: i,
  4942. series: t
  4943. }
  4944. }
  4945. function drawArcbarDataPoints(a, i, t, r) {
  4946. var e = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4947. var o = assign({}, {
  4948. startAngle: .75,
  4949. endAngle: .25,
  4950. type: "default",
  4951. direction: "cw",
  4952. lineCap: "round",
  4953. width: 12,
  4954. gap: 2,
  4955. linearType: "none",
  4956. customColor: []
  4957. }, i.extra.arcbar);
  4958. a = getArcbarDataPoints(a, o, e);
  4959. var n;
  4960. if (o.centerX || o.centerY) {
  4961. n = {
  4962. x: o.centerX ? o.centerX : i.width / 2,
  4963. y: o.centerY ? o.centerY : i.height / 2
  4964. }
  4965. } else {
  4966. n = {
  4967. x: i.width / 2,
  4968. y: i.height / 2
  4969. }
  4970. }
  4971. var l;
  4972. if (o.radius) {
  4973. l = o.radius
  4974. } else {
  4975. l = Math.min(n.x, n.y);
  4976. l -= 5 * i.pix;
  4977. l -= o.width / 2
  4978. }
  4979. l = l < 10 ? 10 : l;
  4980. o.customColor = fillCustomColor(o.linearType, o.customColor, a, t);
  4981. for (let e = 0; e < a.length; e++) {
  4982. let t = a[e];
  4983. r.setLineWidth(o.width * i.pix);
  4984. r.setStrokeStyle(o.backgroundColor || "#E9E9E9");
  4985. r.setLineCap(o.lineCap);
  4986. r.beginPath();
  4987. if (o.type == "default") {
  4988. r.arc(n.x, n.y, l - (o.width * i.pix + o.gap * i.pix) * e, o.startAngle * Math.PI, o.endAngle * Math.PI, o
  4989. .direction == "ccw")
  4990. } else {
  4991. r.arc(n.x, n.y, l - (o.width * i.pix + o.gap * i.pix) * e, 0, 2 * Math.PI, o.direction == "ccw")
  4992. }
  4993. r.stroke();
  4994. var s = t.color;
  4995. if (o.linearType == "custom") {
  4996. var h = r.createLinearGradient(n.x - l, n.y, n.x + l, n.y);
  4997. h.addColorStop(1, hexToRgb(o.customColor[t.linearIndex], 1));
  4998. h.addColorStop(0, hexToRgb(t.color, 1));
  4999. s = h
  5000. }
  5001. r.setLineWidth(o.width * i.pix);
  5002. r.setStrokeStyle(s);
  5003. r.setLineCap(o.lineCap);
  5004. r.beginPath();
  5005. r.arc(n.x, n.y, l - (o.width * i.pix + o.gap * i.pix) * e, o.startAngle * Math.PI, t._proportion_ * Math.PI, o
  5006. .direction == "ccw");
  5007. r.stroke()
  5008. }
  5009. drawRingTitle(i, t, r, n);
  5010. return {
  5011. center: n,
  5012. radius: l,
  5013. series: a
  5014. }
  5015. }
  5016. function drawGaugeDataPoints(n, h, c, t, d) {
  5017. var x = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  5018. var f = assign({}, {
  5019. type: "default",
  5020. startAngle: .75,
  5021. endAngle: .25,
  5022. width: 15,
  5023. labelOffset: 13,
  5024. splitLine: {
  5025. fixRadius: 0,
  5026. splitNumber: 10,
  5027. width: 15,
  5028. color: "#FFFFFF",
  5029. childNumber: 5,
  5030. childWidth: 5
  5031. },
  5032. pointer: {
  5033. width: 15,
  5034. color: "auto"
  5035. }
  5036. }, c.extra.gauge);
  5037. if (f.oldAngle == undefined) {
  5038. f.oldAngle = f.startAngle
  5039. }
  5040. if (f.oldData == undefined) {
  5041. f.oldData = 0
  5042. }
  5043. n = getGaugeAxisPoints(n, f.startAngle, f.endAngle);
  5044. var p = {
  5045. x: c.width / 2,
  5046. y: c.height / 2
  5047. };
  5048. var u = Math.min(p.x, p.y);
  5049. u -= 5 * c.pix;
  5050. u -= f.width / 2;
  5051. u = u < 10 ? 10 : u;
  5052. var g = u - f.width;
  5053. var y = 0;
  5054. if (f.type == "progress") {
  5055. var v = u - f.width * 3;
  5056. d.beginPath();
  5057. let t = d.createLinearGradient(p.x, p.y - v, p.x, p.y + v);
  5058. t.addColorStop("0", hexToRgb(h[0].color, .3));
  5059. t.addColorStop("1.0", hexToRgb("#FFFFFF", .1));
  5060. d.setFillStyle(t);
  5061. d.arc(p.x, p.y, v, 0, 2 * Math.PI, false);
  5062. d.fill();
  5063. d.setLineWidth(f.width);
  5064. d.setStrokeStyle(hexToRgb(h[0].color, .3));
  5065. d.setLineCap("round");
  5066. d.beginPath();
  5067. d.arc(p.x, p.y, g, f.startAngle * Math.PI, f.endAngle * Math.PI, false);
  5068. d.stroke();
  5069. if (f.endAngle < f.startAngle) {
  5070. y = 2 + f.endAngle - f.startAngle
  5071. } else {
  5072. y = f.startAngle - f.endAngle
  5073. }
  5074. let e = y / f.splitLine.splitNumber;
  5075. let a = y / f.splitLine.splitNumber / f.splitLine.childNumber;
  5076. let i = -u - f.width * .5 - f.splitLine.fixRadius;
  5077. let r = -u - f.width - f.splitLine.fixRadius + f.splitLine.width;
  5078. d.save();
  5079. d.translate(p.x, p.y);
  5080. d.rotate((f.startAngle - 1) * Math.PI);
  5081. let o = f.splitLine.splitNumber * f.splitLine.childNumber + 1;
  5082. let n = h[0].data * x;
  5083. for (let t = 0; t < o; t++) {
  5084. d.beginPath();
  5085. if (n > t / o) {
  5086. d.setStrokeStyle(hexToRgb(h[0].color, 1))
  5087. } else {
  5088. d.setStrokeStyle(hexToRgb(h[0].color, .3))
  5089. }
  5090. d.setLineWidth(3 * c.pix);
  5091. d.moveTo(i, 0);
  5092. d.lineTo(r, 0);
  5093. d.stroke();
  5094. d.rotate(a * Math.PI)
  5095. }
  5096. d.restore();
  5097. h = getGaugeArcbarDataPoints(h, f, x);
  5098. d.setLineWidth(f.width);
  5099. d.setStrokeStyle(h[0].color);
  5100. d.setLineCap("round");
  5101. d.beginPath();
  5102. d.arc(p.x, p.y, g, f.startAngle * Math.PI, h[0]._proportion_ * Math.PI, false);
  5103. d.stroke();
  5104. let l = u - f.width * 2.5;
  5105. d.save();
  5106. d.translate(p.x, p.y);
  5107. d.rotate((h[0]._proportion_ - 1) * Math.PI);
  5108. d.beginPath();
  5109. d.setLineWidth(f.width / 3);
  5110. let s = d.createLinearGradient(0, -l * .6, 0, l * .6);
  5111. s.addColorStop("0", hexToRgb("#FFFFFF", 0));
  5112. s.addColorStop("0.5", hexToRgb(h[0].color, 1));
  5113. s.addColorStop("1.0", hexToRgb("#FFFFFF", 0));
  5114. d.setStrokeStyle(s);
  5115. d.arc(0, 0, l, .85 * Math.PI, 1.15 * Math.PI, false);
  5116. d.stroke();
  5117. d.beginPath();
  5118. d.setLineWidth(1);
  5119. d.setStrokeStyle(h[0].color);
  5120. d.setFillStyle(h[0].color);
  5121. d.moveTo(-l - f.width / 3 / 2, -4);
  5122. d.lineTo(-l - f.width / 3 / 2 - 4, 0);
  5123. d.lineTo(-l - f.width / 3 / 2, 4);
  5124. d.lineTo(-l - f.width / 3 / 2, -4);
  5125. d.stroke();
  5126. d.fill();
  5127. d.restore()
  5128. } else {
  5129. d.setLineWidth(f.width);
  5130. d.setLineCap("butt");
  5131. for (let e = 0; e < n.length; e++) {
  5132. let t = n[e];
  5133. d.beginPath();
  5134. d.setStrokeStyle(t.color);
  5135. d.arc(p.x, p.y, u, t._startAngle_ * Math.PI, t._endAngle_ * Math.PI, false);
  5136. d.stroke()
  5137. }
  5138. d.save();
  5139. if (f.endAngle < f.startAngle) {
  5140. y = 2 + f.endAngle - f.startAngle
  5141. } else {
  5142. y = f.startAngle - f.endAngle
  5143. }
  5144. let e = y / f.splitLine.splitNumber;
  5145. let a = y / f.splitLine.splitNumber / f.splitLine.childNumber;
  5146. let i = -u - f.width * .5 - f.splitLine.fixRadius;
  5147. let r = -u - f.width * .5 - f.splitLine.fixRadius + f.splitLine.width;
  5148. let o = -u - f.width * .5 - f.splitLine.fixRadius + f.splitLine.childWidth;
  5149. d.translate(p.x, p.y);
  5150. d.rotate((f.startAngle - 1) * Math.PI);
  5151. for (let t = 0; t < f.splitLine.splitNumber + 1; t++) {
  5152. d.beginPath();
  5153. d.setStrokeStyle(f.splitLine.color);
  5154. d.setLineWidth(2 * c.pix);
  5155. d.moveTo(i, 0);
  5156. d.lineTo(r, 0);
  5157. d.stroke();
  5158. d.rotate(e * Math.PI)
  5159. }
  5160. d.restore();
  5161. d.save();
  5162. d.translate(p.x, p.y);
  5163. d.rotate((f.startAngle - 1) * Math.PI);
  5164. for (let t = 0; t < f.splitLine.splitNumber * f.splitLine.childNumber + 1; t++) {
  5165. d.beginPath();
  5166. d.setStrokeStyle(f.splitLine.color);
  5167. d.setLineWidth(1 * c.pix);
  5168. d.moveTo(i, 0);
  5169. d.lineTo(o, 0);
  5170. d.stroke();
  5171. d.rotate(a * Math.PI)
  5172. }
  5173. d.restore();
  5174. h = getGaugeDataPoints(h, n, f, x);
  5175. for (let e = 0; e < h.length; e++) {
  5176. let t = h[e];
  5177. d.save();
  5178. d.translate(p.x, p.y);
  5179. d.rotate((t._proportion_ - 1) * Math.PI);
  5180. d.beginPath();
  5181. d.setFillStyle(t.color);
  5182. d.moveTo(f.pointer.width, 0);
  5183. d.lineTo(0, -f.pointer.width / 2);
  5184. d.lineTo(-g, 0);
  5185. d.lineTo(0, f.pointer.width / 2);
  5186. d.lineTo(f.pointer.width, 0);
  5187. d.closePath();
  5188. d.fill();
  5189. d.beginPath();
  5190. d.setFillStyle("#FFFFFF");
  5191. d.arc(0, 0, f.pointer.width / 6, 0, 2 * Math.PI, false);
  5192. d.fill();
  5193. d.restore()
  5194. }
  5195. if (c.dataLabel !== false) {
  5196. drawGaugeLabel(f, u, p, c, t, d)
  5197. }
  5198. }
  5199. drawRingTitle(c, t, d, p);
  5200. if (x === 1 && c.type === "gauge") {
  5201. c.extra.gauge.oldAngle = h[0]._proportion_;
  5202. c.extra.gauge.oldData = h[0].data
  5203. }
  5204. return {
  5205. center: p,
  5206. radius: u,
  5207. innerRadius: g,
  5208. categories: n,
  5209. totalAngle: y
  5210. }
  5211. }
  5212. function drawRadarDataPoints(o, n, i, l) {
  5213. var t = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5214. var s = assign({}, {
  5215. gridColor: "#cccccc",
  5216. gridType: "radar",
  5217. gridEval: 1,
  5218. axisLabel: false,
  5219. axisLabelTofix: 0,
  5220. labelShow: true,
  5221. labelColor: "#666666",
  5222. labelPointShow: false,
  5223. labelPointRadius: 3,
  5224. labelPointColor: "#cccccc",
  5225. opacity: .2,
  5226. gridCount: 3,
  5227. border: false,
  5228. borderWidth: 2,
  5229. linearType: "none",
  5230. customColor: []
  5231. }, n.extra.radar);
  5232. var a = getRadarCoordinateSeries(n.categories.length);
  5233. var h = {
  5234. x: n.area[3] + (n.width - n.area[1] - n.area[3]) / 2,
  5235. y: n.area[0] + (n.height - n.area[0] - n.area[2]) / 2
  5236. };
  5237. var r = (n.width - n.area[1] - n.area[3]) / 2;
  5238. var d = (n.height - n.area[0] - n.area[2]) / 2;
  5239. var c = Math.min(r - (getMaxTextListLength(n.categories, i.fontSize, l) + i.radarLabelTextMargin), d - i
  5240. .radarLabelTextMargin);
  5241. c -= i.radarLabelTextMargin * n.pix;
  5242. c = c < 10 ? 10 : c;
  5243. c = s.radius ? s.radius : c;
  5244. l.beginPath();
  5245. l.setLineWidth(1 * n.pix);
  5246. l.setStrokeStyle(s.gridColor);
  5247. a.forEach(function(t, e) {
  5248. var a = convertCoordinateOrigin(c * Math.cos(t), c * Math.sin(t), h);
  5249. l.moveTo(h.x, h.y);
  5250. if (e % s.gridEval == 0) {
  5251. l.lineTo(a.x, a.y)
  5252. }
  5253. });
  5254. l.stroke();
  5255. l.closePath();
  5256. var x = function t(i) {
  5257. var r = {};
  5258. l.beginPath();
  5259. l.setLineWidth(1 * n.pix);
  5260. l.setStrokeStyle(s.gridColor);
  5261. if (s.gridType == "radar") {
  5262. a.forEach(function(t, e) {
  5263. var a = convertCoordinateOrigin(c / s.gridCount * i * Math.cos(t), c / s.gridCount * i *
  5264. Math.sin(t), h);
  5265. if (e === 0) {
  5266. r = a;
  5267. l.moveTo(a.x, a.y)
  5268. } else {
  5269. l.lineTo(a.x, a.y)
  5270. }
  5271. });
  5272. l.lineTo(r.x, r.y)
  5273. } else {
  5274. var e = convertCoordinateOrigin(c / s.gridCount * i * Math.cos(1.5), c / s.gridCount * i * Math.sin(
  5275. 1.5), h);
  5276. l.arc(h.x, h.y, h.y - e.y, 0, 2 * Math.PI, false)
  5277. }
  5278. l.stroke();
  5279. l.closePath()
  5280. };
  5281. for (var e = 1; e <= s.gridCount; e++) {
  5282. x(e)
  5283. }
  5284. s.customColor = fillCustomColor(s.linearType, s.customColor, o, i);
  5285. var f = getRadarDataPoints(a, h, c, o, n, t);
  5286. f.forEach(function(t, e) {
  5287. l.beginPath();
  5288. l.setLineWidth(s.borderWidth * n.pix);
  5289. l.setStrokeStyle(t.color);
  5290. var a = hexToRgb(t.color, s.opacity);
  5291. if (s.linearType == "custom") {
  5292. var i;
  5293. if (l.createCircularGradient) {
  5294. i = l.createCircularGradient(h.x, h.y, c)
  5295. } else {
  5296. i = l.createRadialGradient(h.x, h.y, 0, h.x, h.y, c)
  5297. }
  5298. i.addColorStop(0, hexToRgb(s.customColor[o[e].linearIndex], s.opacity));
  5299. i.addColorStop(1, hexToRgb(t.color, s.opacity));
  5300. a = i
  5301. }
  5302. l.setFillStyle(a);
  5303. t.data.forEach(function(t, e) {
  5304. if (e === 0) {
  5305. l.moveTo(t.position.x, t.position.y)
  5306. } else {
  5307. l.lineTo(t.position.x, t.position.y)
  5308. }
  5309. });
  5310. l.closePath();
  5311. l.fill();
  5312. if (s.border === true) {
  5313. l.stroke()
  5314. }
  5315. l.closePath();
  5316. if (n.dataPointShape !== false) {
  5317. var r = t.data.map(function(t) {
  5318. return t.position
  5319. });
  5320. drawPointShape(r, t.color, t.pointShape, l, n)
  5321. }
  5322. });
  5323. if (s.axisLabel === true) {
  5324. const p = Math.max(s.max, Math.max.apply(null, dataCombine(o)));
  5325. const u = c / s.gridCount;
  5326. const g = n.fontSize * n.pix;
  5327. l.setFontSize(g);
  5328. l.setFillStyle(n.fontColor);
  5329. l.setTextAlign("left");
  5330. for (var e = 0; e < s.gridCount + 1; e++) {
  5331. let t = e * p / s.gridCount;
  5332. t = t.toFixed(s.axisLabelTofix);
  5333. l.fillText(String(t), h.x + 3 * n.pix, h.y - e * u + g / 2)
  5334. }
  5335. }
  5336. drawRadarLabel(a, c, h, n, i, l);
  5337. if (n.dataLabel !== false && t === 1) {
  5338. f.forEach(function(t, e) {
  5339. l.beginPath();
  5340. var a = t.textSize * n.pix || i.fontSize;
  5341. l.setFontSize(a);
  5342. l.setFillStyle(t.textColor || n.fontColor);
  5343. t.data.forEach(function(t, e) {
  5344. if (Math.abs(t.position.x - h.x) < 2) {
  5345. if (t.position.y < h.y) {
  5346. l.setTextAlign("center");
  5347. l.fillText(t.value, t.position.x, t.position.y - 4)
  5348. } else {
  5349. l.setTextAlign("center");
  5350. l.fillText(t.value, t.position.x, t.position.y + a + 2)
  5351. }
  5352. } else {
  5353. if (t.position.x < h.x) {
  5354. l.setTextAlign("right");
  5355. l.fillText(t.value, t.position.x - 4, t.position.y + a / 2 - 2)
  5356. } else {
  5357. l.setTextAlign("left");
  5358. l.fillText(t.value, t.position.x + 4, t.position.y + a / 2 - 2)
  5359. }
  5360. }
  5361. });
  5362. l.closePath();
  5363. l.stroke()
  5364. });
  5365. l.setTextAlign("left")
  5366. }
  5367. return {
  5368. center: h,
  5369. radius: c,
  5370. angleList: a
  5371. }
  5372. }
  5373. function lonlat2mercator(t, e) {
  5374. var a = Array(2);
  5375. var i = t * 20037508.34 / 180;
  5376. var r = Math.log(Math.tan((90 + e) * Math.PI / 360)) / (Math.PI / 180);
  5377. r = r * 20037508.34 / 180;
  5378. a[0] = i;
  5379. a[1] = r;
  5380. return a
  5381. }
  5382. function mercator2lonlat(t, e) {
  5383. var a = Array(2);
  5384. var i = t / 20037508.34 * 180;
  5385. var r = e / 20037508.34 * 180;
  5386. r = 180 / Math.PI * (2 * Math.atan(Math.exp(r * Math.PI / 180)) - Math.PI / 2);
  5387. a[0] = i;
  5388. a[1] = r;
  5389. return a
  5390. }
  5391. function getBoundingBox(t) {
  5392. var e = {},
  5393. a;
  5394. e.xMin = 180;
  5395. e.xMax = 0;
  5396. e.yMin = 90;
  5397. e.yMax = 0;
  5398. for (var i = 0; i < t.length; i++) {
  5399. var r = t[i].geometry.coordinates;
  5400. for (var o = 0; o < r.length; o++) {
  5401. a = r[o];
  5402. if (a.length == 1) {
  5403. a = a[0]
  5404. }
  5405. for (var n = 0; n < a.length; n++) {
  5406. var l = a[n][0];
  5407. var s = a[n][1];
  5408. var h = {
  5409. x: l,
  5410. y: s
  5411. };
  5412. e.xMin = e.xMin < h.x ? e.xMin : h.x;
  5413. e.xMax = e.xMax > h.x ? e.xMax : h.x;
  5414. e.yMin = e.yMin < h.y ? e.yMin : h.y;
  5415. e.yMax = e.yMax > h.y ? e.yMax : h.y
  5416. }
  5417. }
  5418. }
  5419. return e
  5420. }
  5421. function coordinateToPoint(t, e, a, i, r, o) {
  5422. return {
  5423. x: (e - a.xMin) * i + r,
  5424. y: (a.yMax - t) * i + o
  5425. }
  5426. }
  5427. function pointToCoordinate(t, e, a, i, r, o) {
  5428. return {
  5429. x: (e - r) / i + a.xMin,
  5430. y: a.yMax - (t - o) / i
  5431. }
  5432. }
  5433. function isRayIntersectsSegment(t, e, a) {
  5434. if (e[1] == a[1]) {
  5435. return false
  5436. }
  5437. if (e[1] > t[1] && a[1] > t[1]) {
  5438. return false
  5439. }
  5440. if (e[1] < t[1] && a[1] < t[1]) {
  5441. return false
  5442. }
  5443. if (e[1] == t[1] && a[1] > t[1]) {
  5444. return false
  5445. }
  5446. if (a[1] == t[1] && e[1] > t[1]) {
  5447. return false
  5448. }
  5449. if (e[0] < t[0] && a[1] < t[1]) {
  5450. return false
  5451. }
  5452. let i = a[0] - (a[0] - e[0]) * (a[1] - t[1]) / (a[1] - e[1]);
  5453. if (i < t[0]) {
  5454. return false
  5455. } else {
  5456. return true
  5457. }
  5458. }
  5459. function isPoiWithinPoly(r, e, o) {
  5460. let n = 0;
  5461. for (let t = 0; t < e.length; t++) {
  5462. let i = e[t][0];
  5463. if (e.length == 1) {
  5464. i = e[t][0]
  5465. }
  5466. for (let a = 0; a < i.length - 1; a++) {
  5467. let t = i[a];
  5468. let e = i[a + 1];
  5469. if (o) {
  5470. t = lonlat2mercator(i[a][0], i[a][1]);
  5471. e = lonlat2mercator(i[a + 1][0], i[a + 1][1])
  5472. }
  5473. if (isRayIntersectsSegment(r, t, e)) {
  5474. n += 1
  5475. }
  5476. }
  5477. }
  5478. if (n % 2 == 1) {
  5479. return true
  5480. } else {
  5481. return false
  5482. }
  5483. }
  5484. function drawMapDataPoints(a, i, d, r) {
  5485. var o = assign({}, {
  5486. border: true,
  5487. mercator: false,
  5488. borderWidth: 1,
  5489. active: true,
  5490. borderColor: "#666666",
  5491. fillOpacity: .6,
  5492. activeBorderColor: "#f04864",
  5493. activeFillColor: "#facc14",
  5494. activeFillOpacity: 1
  5495. }, i.extra.map);
  5496. var t, n;
  5497. var l = a;
  5498. var s = getBoundingBox(l);
  5499. if (o.mercator) {
  5500. var x = lonlat2mercator(s.xMax, s.yMax);
  5501. var f = lonlat2mercator(s.xMin, s.yMin);
  5502. s.xMax = x[0];
  5503. s.yMax = x[1];
  5504. s.xMin = f[0];
  5505. s.yMin = f[1]
  5506. }
  5507. var p = i.width / Math.abs(s.xMax - s.xMin);
  5508. var u = i.height / Math.abs(s.yMax - s.yMin);
  5509. var h = p < u ? p : u;
  5510. var g = i.width / 2 - Math.abs(s.xMax - s.xMin) / 2 * h;
  5511. var y = i.height / 2 - Math.abs(s.yMax - s.yMin) / 2 * h;
  5512. for (var c = 0; c < l.length; c++) {
  5513. r.beginPath();
  5514. r.setLineWidth(o.borderWidth * i.pix);
  5515. r.setStrokeStyle(o.borderColor);
  5516. r.setFillStyle(hexToRgb(a[c].color, a[c].fillOpacity || o.fillOpacity));
  5517. if (o.active == true && i.tooltip) {
  5518. if (i.tooltip.index == c) {
  5519. r.setStrokeStyle(o.activeBorderColor);
  5520. r.setFillStyle(hexToRgb(o.activeFillColor, o.activeFillOpacity))
  5521. }
  5522. }
  5523. var v = l[c].geometry.coordinates;
  5524. for (var m = 0; m < v.length; m++) {
  5525. t = v[m];
  5526. if (t.length == 1) {
  5527. t = t[0]
  5528. }
  5529. for (var e = 0; e < t.length; e++) {
  5530. var T = Array(2);
  5531. if (o.mercator) {
  5532. T = lonlat2mercator(t[e][0], t[e][1])
  5533. } else {
  5534. T = t[e]
  5535. }
  5536. n = coordinateToPoint(T[1], T[0], s, h, g, y);
  5537. if (e === 0) {
  5538. r.beginPath();
  5539. r.moveTo(n.x, n.y)
  5540. } else {
  5541. r.lineTo(n.x, n.y)
  5542. }
  5543. }
  5544. r.fill();
  5545. if (o.border == true) {
  5546. r.stroke()
  5547. }
  5548. }
  5549. }
  5550. if (i.dataLabel == true) {
  5551. for (var c = 0; c < l.length; c++) {
  5552. var b = l[c].properties.centroid;
  5553. if (b) {
  5554. if (o.mercator) {
  5555. b = lonlat2mercator(l[c].properties.centroid[0], l[c].properties.centroid[1])
  5556. }
  5557. n = coordinateToPoint(b[1], b[0], s, h, g, y);
  5558. let t = l[c].textSize * i.pix || d.fontSize;
  5559. let e = l[c].textColor || i.fontColor;
  5560. if (o.active && o.activeTextColor && i.tooltip && i.tooltip.index == c) {
  5561. e = o.activeTextColor
  5562. }
  5563. let a = l[c].properties.name;
  5564. r.beginPath();
  5565. r.setFontSize(t);
  5566. r.setFillStyle(e);
  5567. r.fillText(a, n.x - measureText(a, t, r) / 2, n.y + t / 2);
  5568. r.closePath();
  5569. r.stroke()
  5570. }
  5571. }
  5572. }
  5573. i.chartData.mapData = {
  5574. bounds: s,
  5575. scale: h,
  5576. xoffset: g,
  5577. yoffset: y,
  5578. mercator: o.mercator
  5579. };
  5580. drawToolTipBridge(i, d, r, 1);
  5581. r.draw()
  5582. }
  5583. function normalInt(t, e, a) {
  5584. a = a == 0 ? 1 : a;
  5585. var i = [];
  5586. for (var r = 0; r < a; r++) {
  5587. i[r] = Math.random()
  5588. }
  5589. return Math.floor(i.reduce(function(t, e) {
  5590. return t + e
  5591. }) / a * (e - t)) + t
  5592. }
  5593. function collisionNew(e, a, i, r) {
  5594. var o = false;
  5595. for (let t = 0; t < a.length; t++) {
  5596. if (a[t].area) {
  5597. if (e[3] < a[t].area[1] || e[0] > a[t].area[2] || e[1] > a[t].area[3] || e[2] < a[t].area[0]) {
  5598. if (e[0] < 0 || e[1] < 0 || e[2] > i || e[3] > r) {
  5599. o = true;
  5600. break
  5601. } else {
  5602. o = false
  5603. }
  5604. } else {
  5605. o = true;
  5606. break
  5607. }
  5608. }
  5609. }
  5610. return o
  5611. }
  5612. function getWordCloudPoint(c, t, d) {
  5613. let x = c.series;
  5614. switch (t) {
  5615. case "normal":
  5616. for (let l = 0; l < x.length; l++) {
  5617. let t = x[l].name;
  5618. let e = x[l].textSize * c.pix;
  5619. let a = measureText(t, e, d);
  5620. let i, r;
  5621. let o;
  5622. let n = 0;
  5623. while (true) {
  5624. n++;
  5625. i = normalInt(-c.width / 2, c.width / 2, 5) - a / 2;
  5626. r = normalInt(-c.height / 2, c.height / 2, 5) + e / 2;
  5627. o = [i - 5 + c.width / 2, r - 5 - e + c.height / 2, i + a + 5 + c.width / 2, r + 5 + c.height / 2];
  5628. let t = collisionNew(o, x, c.width, c.height);
  5629. if (!t) break;
  5630. if (n == 1e3) {
  5631. o = [-100, -100, -100, -100];
  5632. break
  5633. }
  5634. }
  5635. x[l].area = o
  5636. }
  5637. break;
  5638. case "vertical":
  5639. function f() {
  5640. if (Math.random() > .7) {
  5641. return true
  5642. } else {
  5643. return false
  5644. }
  5645. };
  5646. for (let h = 0; h < x.length; h++) {
  5647. let t = x[h].name;
  5648. let e = x[h].textSize * c.pix;
  5649. let a = measureText(t, e, d);
  5650. let i = f();
  5651. let r, o, n, l;
  5652. let s = 0;
  5653. while (true) {
  5654. s++;
  5655. let t;
  5656. if (i) {
  5657. r = normalInt(-c.width / 2, c.width / 2, 5) - a / 2;
  5658. o = normalInt(-c.height / 2, c.height / 2, 5) + e / 2;
  5659. n = [o - 5 - a + c.width / 2, -r - 5 + c.height / 2, o + 5 + c.width / 2, -r + e + 5 + c
  5660. .height / 2
  5661. ];
  5662. l = [c.width - (c.width / 2 - c.height / 2) - (-r + e + 5 + c.height / 2) - 5, c.height / 2 - c
  5663. .width / 2 + (o - 5 - a + c.width / 2) - 5, c.width - (c.width / 2 - c.height / 2) - (-
  5664. r + e + 5 + c.height / 2) + e, c.height / 2 - c.width / 2 + (o - 5 - a + c.width /
  5665. 2) + a + 5
  5666. ];
  5667. t = collisionNew(l, x, c.height, c.width)
  5668. } else {
  5669. r = normalInt(-c.width / 2, c.width / 2, 5) - a / 2;
  5670. o = normalInt(-c.height / 2, c.height / 2, 5) + e / 2;
  5671. n = [r - 5 + c.width / 2, o - 5 - e + c.height / 2, r + a + 5 + c.width / 2, o + 5 + c.height /
  5672. 2
  5673. ];
  5674. t = collisionNew(n, x, c.width, c.height)
  5675. }
  5676. if (!t) break;
  5677. if (s == 1e3) {
  5678. n = [-1e3, -1e3, -1e3, -1e3];
  5679. break
  5680. }
  5681. }
  5682. if (i) {
  5683. x[h].area = l;
  5684. x[h].areav = n
  5685. } else {
  5686. x[h].area = n
  5687. }
  5688. x[h].rotate = i
  5689. };
  5690. break
  5691. }
  5692. return x
  5693. }
  5694. function drawWordCloudDataPoints(t, r, e, o) {
  5695. let n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5696. let a = assign({}, {
  5697. type: "normal",
  5698. autoColors: true
  5699. }, r.extra.word);
  5700. if (!r.chartData.wordCloudData) {
  5701. r.chartData.wordCloudData = getWordCloudPoint(r, a.type, o)
  5702. }
  5703. o.beginPath();
  5704. o.setFillStyle(r.background);
  5705. o.rect(0, 0, r.width, r.height);
  5706. o.fill();
  5707. o.save();
  5708. let l = r.chartData.wordCloudData;
  5709. o.translate(r.width / 2, r.height / 2);
  5710. for (let i = 0; i < l.length; i++) {
  5711. o.save();
  5712. if (l[i].rotate) {
  5713. o.rotate(90 * Math.PI / 180)
  5714. }
  5715. let t = l[i].name;
  5716. let e = l[i].textSize * r.pix;
  5717. let a = measureText(t, e, o);
  5718. o.beginPath();
  5719. o.setStrokeStyle(l[i].color);
  5720. o.setFillStyle(l[i].color);
  5721. o.setFontSize(e);
  5722. if (l[i].rotate) {
  5723. if (l[i].areav[0] > 0) {
  5724. if (r.tooltip) {
  5725. if (r.tooltip.index == i) {
  5726. o.strokeText(t, (l[i].areav[0] + 5 - r.width / 2) * n - a * (1 - n) / 2, (l[i].areav[1] + 5 +
  5727. e - r.height / 2) * n)
  5728. } else {
  5729. o.fillText(t, (l[i].areav[0] + 5 - r.width / 2) * n - a * (1 - n) / 2, (l[i].areav[1] + 5 + e -
  5730. r.height / 2) * n)
  5731. }
  5732. } else {
  5733. o.fillText(t, (l[i].areav[0] + 5 - r.width / 2) * n - a * (1 - n) / 2, (l[i].areav[1] + 5 + e - r
  5734. .height / 2) * n)
  5735. }
  5736. }
  5737. } else {
  5738. if (l[i].area[0] > 0) {
  5739. if (r.tooltip) {
  5740. if (r.tooltip.index == i) {
  5741. o.strokeText(t, (l[i].area[0] + 5 - r.width / 2) * n - a * (1 - n) / 2, (l[i].area[1] + 5 + e -
  5742. r.height / 2) * n)
  5743. } else {
  5744. o.fillText(t, (l[i].area[0] + 5 - r.width / 2) * n - a * (1 - n) / 2, (l[i].area[1] + 5 + e - r
  5745. .height / 2) * n)
  5746. }
  5747. } else {
  5748. o.fillText(t, (l[i].area[0] + 5 - r.width / 2) * n - a * (1 - n) / 2, (l[i].area[1] + 5 + e - r
  5749. .height / 2) * n)
  5750. }
  5751. }
  5752. }
  5753. o.stroke();
  5754. o.restore()
  5755. }
  5756. o.restore()
  5757. }
  5758. function drawFunnelDataPoints(t, e, c, a) {
  5759. let d = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5760. let i = assign({}, {
  5761. type: "funnel",
  5762. activeWidth: 10,
  5763. activeOpacity: .3,
  5764. border: false,
  5765. borderWidth: 2,
  5766. borderColor: "#FFFFFF",
  5767. fillOpacity: 1,
  5768. minSize: 0,
  5769. labelAlign: "right",
  5770. linearType: "none",
  5771. customColor: []
  5772. }, e.extra.funnel);
  5773. let r = (e.height - e.area[0] - e.area[2]) / t.length;
  5774. let o = {
  5775. x: e.area[3] + (e.width - e.area[1] - e.area[3]) / 2,
  5776. y: e.height - e.area[2]
  5777. };
  5778. let n = i.activeWidth * e.pix;
  5779. let x = Math.min((e.width - e.area[1] - e.area[3]) / 2 - n, (e.height - e.area[0] - e.area[2]) / 2 - n);
  5780. let l = getFunnelDataPoints(t, x, i, r, d);
  5781. a.save();
  5782. a.translate(o.x, o.y);
  5783. i.customColor = fillCustomColor(i.linearType, i.customColor, t, c);
  5784. if (i.type == "pyramid") {
  5785. for (let t = 0; t < l.length; t++) {
  5786. if (t == l.length - 1) {
  5787. if (e.tooltip) {
  5788. if (e.tooltip.index == t) {
  5789. a.beginPath();
  5790. a.setFillStyle(hexToRgb(l[t].color, i.activeOpacity));
  5791. a.moveTo(-n, -r);
  5792. a.lineTo(-l[t].radius - n, 0);
  5793. a.lineTo(l[t].radius + n, 0);
  5794. a.lineTo(n, -r);
  5795. a.lineTo(-n, -r);
  5796. a.closePath();
  5797. a.fill()
  5798. }
  5799. }
  5800. l[t].funnelArea = [o.x - l[t].radius, o.y - r * (t + 1), o.x + l[t].radius, o.y - r * t];
  5801. a.beginPath();
  5802. a.setLineWidth(i.borderWidth * e.pix);
  5803. a.setStrokeStyle(i.borderColor);
  5804. var s = hexToRgb(l[t].color, i.fillOpacity);
  5805. if (i.linearType == "custom") {
  5806. var h = a.createLinearGradient(l[t].radius, -r, -l[t].radius, -r);
  5807. h.addColorStop(0, hexToRgb(l[t].color, i.fillOpacity));
  5808. h.addColorStop(.5, hexToRgb(i.customColor[l[t].linearIndex], i.fillOpacity));
  5809. h.addColorStop(1, hexToRgb(l[t].color, i.fillOpacity));
  5810. s = h
  5811. }
  5812. a.setFillStyle(s);
  5813. a.moveTo(0, -r);
  5814. a.lineTo(-l[t].radius, 0);
  5815. a.lineTo(l[t].radius, 0);
  5816. a.lineTo(0, -r);
  5817. a.closePath();
  5818. a.fill();
  5819. if (i.border == true) {
  5820. a.stroke()
  5821. }
  5822. } else {
  5823. if (e.tooltip) {
  5824. if (e.tooltip.index == t) {
  5825. a.beginPath();
  5826. a.setFillStyle(hexToRgb(l[t].color, i.activeOpacity));
  5827. a.moveTo(0, 0);
  5828. a.lineTo(-l[t].radius - n, 0);
  5829. a.lineTo(-l[t + 1].radius - n, -r);
  5830. a.lineTo(l[t + 1].radius + n, -r);
  5831. a.lineTo(l[t].radius + n, 0);
  5832. a.lineTo(0, 0);
  5833. a.closePath();
  5834. a.fill()
  5835. }
  5836. }
  5837. l[t].funnelArea = [o.x - l[t].radius, o.y - r * (t + 1), o.x + l[t].radius, o.y - r * t];
  5838. a.beginPath();
  5839. a.setLineWidth(i.borderWidth * e.pix);
  5840. a.setStrokeStyle(i.borderColor);
  5841. var s = hexToRgb(l[t].color, i.fillOpacity);
  5842. if (i.linearType == "custom") {
  5843. var h = a.createLinearGradient(l[t].radius, -r, -l[t].radius, -r);
  5844. h.addColorStop(0, hexToRgb(l[t].color, i.fillOpacity));
  5845. h.addColorStop(.5, hexToRgb(i.customColor[l[t].linearIndex], i.fillOpacity));
  5846. h.addColorStop(1, hexToRgb(l[t].color, i.fillOpacity));
  5847. s = h
  5848. }
  5849. a.setFillStyle(s);
  5850. a.moveTo(0, 0);
  5851. a.lineTo(-l[t].radius, 0);
  5852. a.lineTo(-l[t + 1].radius, -r);
  5853. a.lineTo(l[t + 1].radius, -r);
  5854. a.lineTo(l[t].radius, 0);
  5855. a.lineTo(0, 0);
  5856. a.closePath();
  5857. a.fill();
  5858. if (i.border == true) {
  5859. a.stroke()
  5860. }
  5861. }
  5862. a.translate(0, -r)
  5863. }
  5864. } else {
  5865. a.translate(0, -(l.length - 1) * r);
  5866. for (let t = 0; t < l.length; t++) {
  5867. if (t == l.length - 1) {
  5868. if (e.tooltip) {
  5869. if (e.tooltip.index == t) {
  5870. a.beginPath();
  5871. a.setFillStyle(hexToRgb(l[t].color, i.activeOpacity));
  5872. a.moveTo(-n - i.minSize / 2, 0);
  5873. a.lineTo(-l[t].radius - n, -r);
  5874. a.lineTo(l[t].radius + n, -r);
  5875. a.lineTo(n + i.minSize / 2, 0);
  5876. a.lineTo(-n - i.minSize / 2, 0);
  5877. a.closePath();
  5878. a.fill()
  5879. }
  5880. }
  5881. l[t].funnelArea = [o.x - l[t].radius, o.y - r, o.x + l[t].radius, o.y];
  5882. a.beginPath();
  5883. a.setLineWidth(i.borderWidth * e.pix);
  5884. a.setStrokeStyle(i.borderColor);
  5885. var s = hexToRgb(l[t].color, i.fillOpacity);
  5886. if (i.linearType == "custom") {
  5887. var h = a.createLinearGradient(l[t].radius, -r, -l[t].radius, -r);
  5888. h.addColorStop(0, hexToRgb(l[t].color, i.fillOpacity));
  5889. h.addColorStop(.5, hexToRgb(i.customColor[l[t].linearIndex], i.fillOpacity));
  5890. h.addColorStop(1, hexToRgb(l[t].color, i.fillOpacity));
  5891. s = h
  5892. }
  5893. a.setFillStyle(s);
  5894. a.moveTo(0, 0);
  5895. a.lineTo(-i.minSize / 2, 0);
  5896. a.lineTo(-l[t].radius, -r);
  5897. a.lineTo(l[t].radius, -r);
  5898. a.lineTo(i.minSize / 2, 0);
  5899. a.lineTo(0, 0);
  5900. a.closePath();
  5901. a.fill();
  5902. if (i.border == true) {
  5903. a.stroke()
  5904. }
  5905. } else {
  5906. if (e.tooltip) {
  5907. if (e.tooltip.index == t) {
  5908. a.beginPath();
  5909. a.setFillStyle(hexToRgb(l[t].color, i.activeOpacity));
  5910. a.moveTo(0, 0);
  5911. a.lineTo(-l[t + 1].radius - n, 0);
  5912. a.lineTo(-l[t].radius - n, -r);
  5913. a.lineTo(l[t].radius + n, -r);
  5914. a.lineTo(l[t + 1].radius + n, 0);
  5915. a.lineTo(0, 0);
  5916. a.closePath();
  5917. a.fill()
  5918. }
  5919. }
  5920. l[t].funnelArea = [o.x - l[t].radius, o.y - r * (l.length - t), o.x + l[t].radius, o.y - r * (l.length -
  5921. t - 1)];
  5922. a.beginPath();
  5923. a.setLineWidth(i.borderWidth * e.pix);
  5924. a.setStrokeStyle(i.borderColor);
  5925. var s = hexToRgb(l[t].color, i.fillOpacity);
  5926. if (i.linearType == "custom") {
  5927. var h = a.createLinearGradient(l[t].radius, -r, -l[t].radius, -r);
  5928. h.addColorStop(0, hexToRgb(l[t].color, i.fillOpacity));
  5929. h.addColorStop(.5, hexToRgb(i.customColor[l[t].linearIndex], i.fillOpacity));
  5930. h.addColorStop(1, hexToRgb(l[t].color, i.fillOpacity));
  5931. s = h
  5932. }
  5933. a.setFillStyle(s);
  5934. a.moveTo(0, 0);
  5935. a.lineTo(-l[t + 1].radius, 0);
  5936. a.lineTo(-l[t].radius, -r);
  5937. a.lineTo(l[t].radius, -r);
  5938. a.lineTo(l[t + 1].radius, 0);
  5939. a.lineTo(0, 0);
  5940. a.closePath();
  5941. a.fill();
  5942. if (i.border == true) {
  5943. a.stroke()
  5944. }
  5945. }
  5946. a.translate(0, r)
  5947. }
  5948. }
  5949. a.restore();
  5950. if (e.dataLabel !== false && d === 1) {
  5951. drawFunnelText(l, e, a, r, i.labelAlign, n, o)
  5952. }
  5953. if (d === 1) {
  5954. drawFunnelCenterText(l, e, a, r, i.labelAlign, n, o)
  5955. }
  5956. return {
  5957. center: o,
  5958. radius: x,
  5959. series: l
  5960. }
  5961. }
  5962. function drawFunnelText(l, s, h, c, d, x, f) {
  5963. for (let n = 0; n < l.length; n++) {
  5964. let t = l[n];
  5965. if (t.labelShow === false) {
  5966. continue
  5967. }
  5968. let e, a, i, r;
  5969. let o = t.formatter ? t.formatter(t, n, l, s) : util.toFixed(t._proportion_ * 100) + "%";
  5970. o = t.labelText ? t.labelText : o;
  5971. if (d == "right") {
  5972. if (n == l.length - 1) {
  5973. e = (t.funnelArea[2] + f.x) / 2
  5974. } else {
  5975. e = (t.funnelArea[2] + l[n + 1].funnelArea[2]) / 2
  5976. }
  5977. a = e + x * 2;
  5978. i = t.funnelArea[1] + c / 2;
  5979. r = t.textSize * s.pix || s.fontSize * s.pix;
  5980. h.setLineWidth(1 * s.pix);
  5981. h.setStrokeStyle(t.color);
  5982. h.setFillStyle(t.color);
  5983. h.beginPath();
  5984. h.moveTo(e, i);
  5985. h.lineTo(a, i);
  5986. h.stroke();
  5987. h.closePath();
  5988. h.beginPath();
  5989. h.moveTo(a, i);
  5990. h.arc(a, i, 2 * s.pix, 0, 2 * Math.PI);
  5991. h.closePath();
  5992. h.fill();
  5993. h.beginPath();
  5994. h.setFontSize(r);
  5995. h.setFillStyle(t.textColor || s.fontColor);
  5996. h.fillText(o, a + 5, i + r / 2 - 2);
  5997. h.closePath();
  5998. h.stroke();
  5999. h.closePath()
  6000. }
  6001. if (d == "left") {
  6002. if (n == l.length - 1) {
  6003. e = (t.funnelArea[0] + f.x) / 2
  6004. } else {
  6005. e = (t.funnelArea[0] + l[n + 1].funnelArea[0]) / 2
  6006. }
  6007. a = e - x * 2;
  6008. i = t.funnelArea[1] + c / 2;
  6009. r = t.textSize * s.pix || s.fontSize * s.pix;
  6010. h.setLineWidth(1 * s.pix);
  6011. h.setStrokeStyle(t.color);
  6012. h.setFillStyle(t.color);
  6013. h.beginPath();
  6014. h.moveTo(e, i);
  6015. h.lineTo(a, i);
  6016. h.stroke();
  6017. h.closePath();
  6018. h.beginPath();
  6019. h.moveTo(a, i);
  6020. h.arc(a, i, 2, 0, 2 * Math.PI);
  6021. h.closePath();
  6022. h.fill();
  6023. h.beginPath();
  6024. h.setFontSize(r);
  6025. h.setFillStyle(t.textColor || s.fontColor);
  6026. h.fillText(o, a - 5 - measureText(o, r, h), i + r / 2 - 2);
  6027. h.closePath();
  6028. h.stroke();
  6029. h.closePath()
  6030. }
  6031. }
  6032. }
  6033. function drawFunnelCenterText(r, o, n, l, t, e, s) {
  6034. for (let i = 0; i < r.length; i++) {
  6035. let t = r[i];
  6036. let e, a;
  6037. if (t.centerText) {
  6038. e = t.funnelArea[1] + l / 2;
  6039. a = t.centerTextSize * o.pix || o.fontSize * o.pix;
  6040. n.beginPath();
  6041. n.setFontSize(a);
  6042. n.setFillStyle(t.centerTextColor || "#FFFFFF");
  6043. n.fillText(t.centerText, s.x - measureText(t.centerText, a, n) / 2, e + a / 2 - 2);
  6044. n.closePath();
  6045. n.stroke();
  6046. n.closePath()
  6047. }
  6048. }
  6049. }
  6050. function drawCanvas(t, e) {
  6051. e.save();
  6052. e.translate(0, .5);
  6053. e.restore();
  6054. e.draw()
  6055. }
  6056. var Timing = {
  6057. easeIn: function t(e) {
  6058. return Math.pow(e, 3)
  6059. },
  6060. easeOut: function t(e) {
  6061. return Math.pow(e - 1, 3) + 1
  6062. },
  6063. easeInOut: function t(e) {
  6064. if ((e /= .5) < 1) {
  6065. return .5 * Math.pow(e, 3)
  6066. } else {
  6067. return .5 * (Math.pow(e - 2, 3) + 2)
  6068. }
  6069. },
  6070. linear: function t(e) {
  6071. return e
  6072. }
  6073. };
  6074. function Animation(r) {
  6075. this.isStop = false;
  6076. r.duration = typeof r.duration === "undefined" ? 1e3 : r.duration;
  6077. r.timing = r.timing || "easeInOut";
  6078. var o = 17;
  6079. function t() {
  6080. if (typeof setTimeout !== "undefined") {
  6081. return function(e, t) {
  6082. setTimeout(function() {
  6083. var t = +new Date;
  6084. e(t)
  6085. }, t)
  6086. }
  6087. } else if (typeof requestAnimationFrame !== "undefined") {
  6088. return requestAnimationFrame
  6089. } else {
  6090. return function(t) {
  6091. t(null)
  6092. }
  6093. }
  6094. }
  6095. var n = t();
  6096. var l = null;
  6097. var s = function t(e) {
  6098. if (e === null || this.isStop === true) {
  6099. r.onProcess && r.onProcess(1);
  6100. r.onAnimationFinish && r.onAnimationFinish();
  6101. return
  6102. }
  6103. if (l === null) {
  6104. l = e
  6105. }
  6106. if (e - l < r.duration) {
  6107. var a = (e - l) / r.duration;
  6108. var i = Timing[r.timing];
  6109. a = i(a);
  6110. r.onProcess && r.onProcess(a);
  6111. n(s, o)
  6112. } else {
  6113. r.onProcess && r.onProcess(1);
  6114. r.onAnimationFinish && r.onAnimationFinish()
  6115. }
  6116. };
  6117. s = s.bind(this);
  6118. n(s, o)
  6119. }
  6120. Animation.prototype.stop = function() {
  6121. this.isStop = true
  6122. };
  6123. function drawCharts(t, l, n, s) {
  6124. var h = this;
  6125. var c = l.series;
  6126. if (t === "pie" || t === "ring" || t === "mount" || t === "rose" || t === "funnel") {
  6127. c = fixPieSeries(c, l, n)
  6128. }
  6129. var d = l.categories;
  6130. if (t === "mount") {
  6131. d = [];
  6132. for (let t = 0; t < c.length; t++) {
  6133. if (c[t].show !== false) d.push(c[t].name)
  6134. }
  6135. l.categories = d
  6136. }
  6137. c = fillSeries(c, l, n);
  6138. var e = l.animation ? l.duration : 0;
  6139. h.animationInstance && h.animationInstance.stop();
  6140. var x = null;
  6141. if (t == "candle") {
  6142. let t = assign({}, l.extra.candle.average);
  6143. if (t.show) {
  6144. x = calCandleMA(t.day, t.name, t.color, c[0].data);
  6145. x = fillSeries(x, l, n);
  6146. l.seriesMA = x
  6147. } else if (l.seriesMA) {
  6148. x = l.seriesMA = fillSeries(l.seriesMA, l, n)
  6149. } else {
  6150. x = c
  6151. }
  6152. } else {
  6153. x = c
  6154. }
  6155. l._series_ = c = filterSeries(c);
  6156. l.area = new Array(4);
  6157. for (let t = 0; t < 4; t++) {
  6158. l.area[t] = l.padding[t] * l.pix
  6159. }
  6160. var a = calLegendData(x, l, n, l.chartData, s),
  6161. r = a.area.wholeHeight,
  6162. o = a.area.wholeWidth;
  6163. switch (l.legend.position) {
  6164. case "top":
  6165. l.area[0] += r;
  6166. break;
  6167. case "bottom":
  6168. l.area[2] += r;
  6169. break;
  6170. case "left":
  6171. l.area[3] += o;
  6172. break;
  6173. case "right":
  6174. l.area[1] += o;
  6175. break
  6176. }
  6177. let f = {},
  6178. i = 0;
  6179. if (l.type === "line" || l.type === "column" || l.type === "mount" || l.type === "area" || l.type === "mix" || l
  6180. .type === "candle" || l.type === "scatter" || l.type === "bubble" || l.type === "bar") {
  6181. f = calYAxisData(c, l, n, s);
  6182. i = f.yAxisWidth;
  6183. if (l.yAxis.showTitle) {
  6184. let e = 0;
  6185. for (let t = 0; t < l.yAxis.data.length; t++) {
  6186. e = Math.max(e, l.yAxis.data[t].titleFontSize ? l.yAxis.data[t].titleFontSize * l.pix : n.fontSize)
  6187. }
  6188. l.area[0] += e
  6189. }
  6190. let e = 0,
  6191. a = 0;
  6192. for (let t = 0; t < i.length; t++) {
  6193. if (i[t].position == "left") {
  6194. if (a > 0) {
  6195. l.area[3] += i[t].width + l.yAxis.padding * l.pix
  6196. } else {
  6197. l.area[3] += i[t].width
  6198. }
  6199. a += 1
  6200. } else if (i[t].position == "right") {
  6201. if (e > 0) {
  6202. l.area[1] += i[t].width + l.yAxis.padding * l.pix
  6203. } else {
  6204. l.area[1] += i[t].width
  6205. }
  6206. e += 1
  6207. }
  6208. }
  6209. } else {
  6210. n.yAxisWidth = i
  6211. }
  6212. l.chartData.yAxisData = f;
  6213. if (l.categories && l.categories.length && l.type !== "radar" && l.type !== "gauge" && l.type !== "bar") {
  6214. l.chartData.xAxisData = getXAxisPoints(l.categories, l, n);
  6215. let t = calCategoriesData(l.categories, l, n, l.chartData.xAxisData.eachSpacing, s),
  6216. e = t.xAxisHeight,
  6217. a = t.angle;
  6218. n.xAxisHeight = e;
  6219. n._xAxisTextAngle_ = a;
  6220. l.area[2] += e;
  6221. l.chartData.categoriesData = t
  6222. } else {
  6223. if (l.type === "line" || l.type === "area" || l.type === "scatter" || l.type === "bubble" || l.type === "bar") {
  6224. l.chartData.xAxisData = calXAxisData(c, l, n, s);
  6225. d = l.chartData.xAxisData.rangesFormat;
  6226. let t = calCategoriesData(d, l, n, l.chartData.xAxisData.eachSpacing, s),
  6227. e = t.xAxisHeight,
  6228. a = t.angle;
  6229. n.xAxisHeight = e;
  6230. n._xAxisTextAngle_ = a;
  6231. l.area[2] += e;
  6232. l.chartData.categoriesData = t
  6233. } else {
  6234. l.chartData.xAxisData = {
  6235. xAxisPoints: []
  6236. }
  6237. }
  6238. }
  6239. if (l.enableScroll && l.xAxis.scrollAlign == "right" && l._scrollDistance_ === undefined) {
  6240. let t = 0,
  6241. e = l.chartData.xAxisData.xAxisPoints,
  6242. a = l.chartData.xAxisData.startX,
  6243. i = l.chartData.xAxisData.endX,
  6244. r = l.chartData.xAxisData.eachSpacing;
  6245. let o = r * (e.length - 1);
  6246. let n = i - a;
  6247. t = n - o;
  6248. h.scrollOption.currentOffset = t;
  6249. h.scrollOption.startTouchX = t;
  6250. h.scrollOption.distance = 0;
  6251. h.scrollOption.lastMoveTime = 0;
  6252. l._scrollDistance_ = t
  6253. }
  6254. if (t === "pie" || t === "ring" || t === "rose") {
  6255. n._pieTextMaxLength_ = l.dataLabel === false ? 0 : getPieTextMaxLength(x, n, s, l)
  6256. }
  6257. switch (t) {
  6258. case "word":
  6259. this.animationInstance = new Animation({
  6260. timing: l.timing,
  6261. duration: e,
  6262. onProcess: function(t) {
  6263. s.clearRect(0, 0, l.width, l.height);
  6264. if (l.rotate) {
  6265. contextRotate(s, l)
  6266. }
  6267. drawWordCloudDataPoints(c, l, n, s, t);
  6268. drawCanvas(l, s)
  6269. },
  6270. onAnimationFinish: function t() {
  6271. h.uevent.trigger("renderComplete")
  6272. }
  6273. });
  6274. break;
  6275. case "map":
  6276. s.clearRect(0, 0, l.width, l.height);
  6277. drawMapDataPoints(c, l, n, s);
  6278. setTimeout(() => {
  6279. this.uevent.trigger("renderComplete")
  6280. }, 50);
  6281. break;
  6282. case "funnel":
  6283. this.animationInstance = new Animation({
  6284. timing: l.timing,
  6285. duration: e,
  6286. onProcess: function(t) {
  6287. s.clearRect(0, 0, l.width, l.height);
  6288. if (l.rotate) {
  6289. contextRotate(s, l)
  6290. }
  6291. l.chartData.funnelData = drawFunnelDataPoints(c, l, n, s, t);
  6292. drawLegend(l.series, l, n, s, l.chartData);
  6293. drawToolTipBridge(l, n, s, t);
  6294. drawCanvas(l, s)
  6295. },
  6296. onAnimationFinish: function t() {
  6297. h.uevent.trigger("renderComplete")
  6298. }
  6299. });
  6300. break;
  6301. case "line":
  6302. this.animationInstance = new Animation({
  6303. timing: l.timing,
  6304. duration: e,
  6305. onProcess: function t(e) {
  6306. s.clearRect(0, 0, l.width, l.height);
  6307. if (l.rotate) {
  6308. contextRotate(s, l)
  6309. }
  6310. drawYAxisGrid(d, l, n, s);
  6311. drawXAxis(d, l, n, s);
  6312. var a = drawLineDataPoints(c, l, n, s, e),
  6313. i = a.xAxisPoints,
  6314. r = a.calPoints,
  6315. o = a.eachSpacing;
  6316. l.chartData.xAxisPoints = i;
  6317. l.chartData.calPoints = r;
  6318. l.chartData.eachSpacing = o;
  6319. drawYAxis(c, l, n, s);
  6320. if (l.enableMarkLine !== false && e === 1) {
  6321. drawMarkLine(l, n, s)
  6322. }
  6323. drawLegend(l.series, l, n, s, l.chartData);
  6324. drawToolTipBridge(l, n, s, e, o, i);
  6325. drawCanvas(l, s)
  6326. },
  6327. onAnimationFinish: function t() {
  6328. h.uevent.trigger("renderComplete")
  6329. }
  6330. });
  6331. break;
  6332. case "scatter":
  6333. this.animationInstance = new Animation({
  6334. timing: l.timing,
  6335. duration: e,
  6336. onProcess: function t(e) {
  6337. s.clearRect(0, 0, l.width, l.height);
  6338. if (l.rotate) {
  6339. contextRotate(s, l)
  6340. }
  6341. drawYAxisGrid(d, l, n, s);
  6342. drawXAxis(d, l, n, s);
  6343. var a = drawScatterDataPoints(c, l, n, s, e),
  6344. i = a.xAxisPoints,
  6345. r = a.calPoints,
  6346. o = a.eachSpacing;
  6347. l.chartData.xAxisPoints = i;
  6348. l.chartData.calPoints = r;
  6349. l.chartData.eachSpacing = o;
  6350. drawYAxis(c, l, n, s);
  6351. if (l.enableMarkLine !== false && e === 1) {
  6352. drawMarkLine(l, n, s)
  6353. }
  6354. drawLegend(l.series, l, n, s, l.chartData);
  6355. drawToolTipBridge(l, n, s, e, o, i);
  6356. drawCanvas(l, s)
  6357. },
  6358. onAnimationFinish: function t() {
  6359. h.uevent.trigger("renderComplete")
  6360. }
  6361. });
  6362. break;
  6363. case "bubble":
  6364. this.animationInstance = new Animation({
  6365. timing: l.timing,
  6366. duration: e,
  6367. onProcess: function t(e) {
  6368. s.clearRect(0, 0, l.width, l.height);
  6369. if (l.rotate) {
  6370. contextRotate(s, l)
  6371. }
  6372. drawYAxisGrid(d, l, n, s);
  6373. drawXAxis(d, l, n, s);
  6374. var a = drawBubbleDataPoints(c, l, n, s, e),
  6375. i = a.xAxisPoints,
  6376. r = a.calPoints,
  6377. o = a.eachSpacing;
  6378. l.chartData.xAxisPoints = i;
  6379. l.chartData.calPoints = r;
  6380. l.chartData.eachSpacing = o;
  6381. drawYAxis(c, l, n, s);
  6382. if (l.enableMarkLine !== false && e === 1) {
  6383. drawMarkLine(l, n, s)
  6384. }
  6385. drawLegend(l.series, l, n, s, l.chartData);
  6386. drawToolTipBridge(l, n, s, e, o, i);
  6387. drawCanvas(l, s)
  6388. },
  6389. onAnimationFinish: function t() {
  6390. h.uevent.trigger("renderComplete")
  6391. }
  6392. });
  6393. break;
  6394. case "mix":
  6395. this.animationInstance = new Animation({
  6396. timing: l.timing,
  6397. duration: e,
  6398. onProcess: function t(e) {
  6399. s.clearRect(0, 0, l.width, l.height);
  6400. if (l.rotate) {
  6401. contextRotate(s, l)
  6402. }
  6403. drawYAxisGrid(d, l, n, s);
  6404. drawXAxis(d, l, n, s);
  6405. var a = drawMixDataPoints(c, l, n, s, e),
  6406. i = a.xAxisPoints,
  6407. r = a.calPoints,
  6408. o = a.eachSpacing;
  6409. l.chartData.xAxisPoints = i;
  6410. l.chartData.calPoints = r;
  6411. l.chartData.eachSpacing = o;
  6412. drawYAxis(c, l, n, s);
  6413. if (l.enableMarkLine !== false && e === 1) {
  6414. drawMarkLine(l, n, s)
  6415. }
  6416. drawLegend(l.series, l, n, s, l.chartData);
  6417. drawToolTipBridge(l, n, s, e, o, i);
  6418. drawCanvas(l, s)
  6419. },
  6420. onAnimationFinish: function t() {
  6421. h.uevent.trigger("renderComplete")
  6422. }
  6423. });
  6424. break;
  6425. case "column":
  6426. this.animationInstance = new Animation({
  6427. timing: l.timing,
  6428. duration: e,
  6429. onProcess: function t(e) {
  6430. s.clearRect(0, 0, l.width, l.height);
  6431. if (l.rotate) {
  6432. contextRotate(s, l)
  6433. }
  6434. drawYAxisGrid(d, l, n, s);
  6435. drawXAxis(d, l, n, s);
  6436. var a = drawColumnDataPoints(c, l, n, s, e),
  6437. i = a.xAxisPoints,
  6438. r = a.calPoints,
  6439. o = a.eachSpacing;
  6440. l.chartData.xAxisPoints = i;
  6441. l.chartData.calPoints = r;
  6442. l.chartData.eachSpacing = o;
  6443. drawYAxis(c, l, n, s);
  6444. if (l.enableMarkLine !== false && e === 1) {
  6445. drawMarkLine(l, n, s)
  6446. }
  6447. drawLegend(l.series, l, n, s, l.chartData);
  6448. drawToolTipBridge(l, n, s, e, o, i);
  6449. drawCanvas(l, s)
  6450. },
  6451. onAnimationFinish: function t() {
  6452. h.uevent.trigger("renderComplete")
  6453. }
  6454. });
  6455. break;
  6456. case "mount":
  6457. this.animationInstance = new Animation({
  6458. timing: l.timing,
  6459. duration: e,
  6460. onProcess: function t(e) {
  6461. s.clearRect(0, 0, l.width, l.height);
  6462. if (l.rotate) {
  6463. contextRotate(s, l)
  6464. }
  6465. drawYAxisGrid(d, l, n, s);
  6466. drawXAxis(d, l, n, s);
  6467. var a = drawMountDataPoints(c, l, n, s, e),
  6468. i = a.xAxisPoints,
  6469. r = a.calPoints,
  6470. o = a.eachSpacing;
  6471. l.chartData.xAxisPoints = i;
  6472. l.chartData.calPoints = r;
  6473. l.chartData.eachSpacing = o;
  6474. drawYAxis(c, l, n, s);
  6475. if (l.enableMarkLine !== false && e === 1) {
  6476. drawMarkLine(l, n, s)
  6477. }
  6478. drawLegend(l.series, l, n, s, l.chartData);
  6479. drawToolTipBridge(l, n, s, e, o, i);
  6480. drawCanvas(l, s)
  6481. },
  6482. onAnimationFinish: function t() {
  6483. h.uevent.trigger("renderComplete")
  6484. }
  6485. });
  6486. break;
  6487. case "bar":
  6488. this.animationInstance = new Animation({
  6489. timing: l.timing,
  6490. duration: e,
  6491. onProcess: function t(e) {
  6492. s.clearRect(0, 0, l.width, l.height);
  6493. if (l.rotate) {
  6494. contextRotate(s, l)
  6495. }
  6496. drawXAxis(d, l, n, s);
  6497. var a = drawBarDataPoints(c, l, n, s, e),
  6498. i = a.yAxisPoints,
  6499. r = a.calPoints,
  6500. o = a.eachSpacing;
  6501. l.chartData.yAxisPoints = i;
  6502. l.chartData.xAxisPoints = l.chartData.xAxisData.xAxisPoints;
  6503. l.chartData.calPoints = r;
  6504. l.chartData.eachSpacing = o;
  6505. drawYAxis(c, l, n, s);
  6506. if (l.enableMarkLine !== false && e === 1) {
  6507. drawMarkLine(l, n, s)
  6508. }
  6509. drawLegend(l.series, l, n, s, l.chartData);
  6510. drawToolTipBridge(l, n, s, e, o, i);
  6511. drawCanvas(l, s)
  6512. },
  6513. onAnimationFinish: function t() {
  6514. h.uevent.trigger("renderComplete")
  6515. }
  6516. });
  6517. break;
  6518. case "area":
  6519. this.animationInstance = new Animation({
  6520. timing: l.timing,
  6521. duration: e,
  6522. onProcess: function t(e) {
  6523. s.clearRect(0, 0, l.width, l.height);
  6524. if (l.rotate) {
  6525. contextRotate(s, l)
  6526. }
  6527. drawYAxisGrid(d, l, n, s);
  6528. drawXAxis(d, l, n, s);
  6529. var a = drawAreaDataPoints(c, l, n, s, e),
  6530. i = a.xAxisPoints,
  6531. r = a.calPoints,
  6532. o = a.eachSpacing;
  6533. l.chartData.xAxisPoints = i;
  6534. l.chartData.calPoints = r;
  6535. l.chartData.eachSpacing = o;
  6536. drawYAxis(c, l, n, s);
  6537. if (l.enableMarkLine !== false && e === 1) {
  6538. drawMarkLine(l, n, s)
  6539. }
  6540. drawLegend(l.series, l, n, s, l.chartData);
  6541. drawToolTipBridge(l, n, s, e, o, i);
  6542. drawCanvas(l, s)
  6543. },
  6544. onAnimationFinish: function t() {
  6545. h.uevent.trigger("renderComplete")
  6546. }
  6547. });
  6548. break;
  6549. case "ring":
  6550. this.animationInstance = new Animation({
  6551. timing: l.timing,
  6552. duration: e,
  6553. onProcess: function t(e) {
  6554. s.clearRect(0, 0, l.width, l.height);
  6555. if (l.rotate) {
  6556. contextRotate(s, l)
  6557. }
  6558. l.chartData.pieData = drawPieDataPoints(c, l, n, s, e);
  6559. drawLegend(l.series, l, n, s, l.chartData);
  6560. drawToolTipBridge(l, n, s, e);
  6561. drawCanvas(l, s)
  6562. },
  6563. onAnimationFinish: function t() {
  6564. h.uevent.trigger("renderComplete")
  6565. }
  6566. });
  6567. break;
  6568. case "pie":
  6569. this.animationInstance = new Animation({
  6570. timing: l.timing,
  6571. duration: e,
  6572. onProcess: function t(e) {
  6573. s.clearRect(0, 0, l.width, l.height);
  6574. if (l.rotate) {
  6575. contextRotate(s, l)
  6576. }
  6577. l.chartData.pieData = drawPieDataPoints(c, l, n, s, e);
  6578. drawLegend(l.series, l, n, s, l.chartData);
  6579. drawToolTipBridge(l, n, s, e);
  6580. drawCanvas(l, s)
  6581. },
  6582. onAnimationFinish: function t() {
  6583. h.uevent.trigger("renderComplete")
  6584. }
  6585. });
  6586. break;
  6587. case "rose":
  6588. this.animationInstance = new Animation({
  6589. timing: l.timing,
  6590. duration: e,
  6591. onProcess: function t(e) {
  6592. s.clearRect(0, 0, l.width, l.height);
  6593. if (l.rotate) {
  6594. contextRotate(s, l)
  6595. }
  6596. l.chartData.pieData = drawRoseDataPoints(c, l, n, s, e);
  6597. drawLegend(l.series, l, n, s, l.chartData);
  6598. drawToolTipBridge(l, n, s, e);
  6599. drawCanvas(l, s)
  6600. },
  6601. onAnimationFinish: function t() {
  6602. h.uevent.trigger("renderComplete")
  6603. }
  6604. });
  6605. break;
  6606. case "radar":
  6607. this.animationInstance = new Animation({
  6608. timing: l.timing,
  6609. duration: e,
  6610. onProcess: function t(e) {
  6611. s.clearRect(0, 0, l.width, l.height);
  6612. if (l.rotate) {
  6613. contextRotate(s, l)
  6614. }
  6615. l.chartData.radarData = drawRadarDataPoints(c, l, n, s, e);
  6616. drawLegend(l.series, l, n, s, l.chartData);
  6617. drawToolTipBridge(l, n, s, e);
  6618. drawCanvas(l, s)
  6619. },
  6620. onAnimationFinish: function t() {
  6621. h.uevent.trigger("renderComplete")
  6622. }
  6623. });
  6624. break;
  6625. case "arcbar":
  6626. this.animationInstance = new Animation({
  6627. timing: l.timing,
  6628. duration: e,
  6629. onProcess: function t(e) {
  6630. s.clearRect(0, 0, l.width, l.height);
  6631. if (l.rotate) {
  6632. contextRotate(s, l)
  6633. }
  6634. l.chartData.arcbarData = drawArcbarDataPoints(c, l, n, s, e);
  6635. drawCanvas(l, s)
  6636. },
  6637. onAnimationFinish: function t() {
  6638. h.uevent.trigger("renderComplete")
  6639. }
  6640. });
  6641. break;
  6642. case "gauge":
  6643. this.animationInstance = new Animation({
  6644. timing: l.timing,
  6645. duration: e,
  6646. onProcess: function t(e) {
  6647. s.clearRect(0, 0, l.width, l.height);
  6648. if (l.rotate) {
  6649. contextRotate(s, l)
  6650. }
  6651. l.chartData.gaugeData = drawGaugeDataPoints(d, c, l, n, s, e);
  6652. drawCanvas(l, s)
  6653. },
  6654. onAnimationFinish: function t() {
  6655. h.uevent.trigger("renderComplete")
  6656. }
  6657. });
  6658. break;
  6659. case "candle":
  6660. this.animationInstance = new Animation({
  6661. timing: l.timing,
  6662. duration: e,
  6663. onProcess: function t(e) {
  6664. s.clearRect(0, 0, l.width, l.height);
  6665. if (l.rotate) {
  6666. contextRotate(s, l)
  6667. }
  6668. drawYAxisGrid(d, l, n, s);
  6669. drawXAxis(d, l, n, s);
  6670. var a = drawCandleDataPoints(c, x, l, n, s, e),
  6671. i = a.xAxisPoints,
  6672. r = a.calPoints,
  6673. o = a.eachSpacing;
  6674. l.chartData.xAxisPoints = i;
  6675. l.chartData.calPoints = r;
  6676. l.chartData.eachSpacing = o;
  6677. drawYAxis(c, l, n, s);
  6678. if (l.enableMarkLine !== false && e === 1) {
  6679. drawMarkLine(l, n, s)
  6680. }
  6681. if (x) {
  6682. drawLegend(x, l, n, s, l.chartData)
  6683. } else {
  6684. drawLegend(l.series, l, n, s, l.chartData)
  6685. }
  6686. drawToolTipBridge(l, n, s, e, o, i);
  6687. drawCanvas(l, s)
  6688. },
  6689. onAnimationFinish: function t() {
  6690. h.uevent.trigger("renderComplete")
  6691. }
  6692. });
  6693. break
  6694. }
  6695. }
  6696. function uChartsEvent() {
  6697. this.events = {}
  6698. }
  6699. uChartsEvent.prototype.addEventListener = function(t, e) {
  6700. this.events[t] = this.events[t] || [];
  6701. this.events[t].push(e)
  6702. };
  6703. uChartsEvent.prototype.delEventListener = function(t) {
  6704. this.events[t] = []
  6705. };
  6706. uChartsEvent.prototype.trigger = function() {
  6707. for (var t = arguments.length, e = Array(t), a = 0; a < t; a++) {
  6708. e[a] = arguments[a]
  6709. }
  6710. var i = e[0];
  6711. var r = e.slice(1);
  6712. if (!!this.events[i]) {
  6713. this.events[i].forEach(function(t) {
  6714. try {
  6715. t.apply(null, r)
  6716. } catch (t) {}
  6717. })
  6718. }
  6719. };
  6720. var uCharts = function t(a) {
  6721. a.pix = a.pixelRatio ? a.pixelRatio : 1;
  6722. a.fontSize = a.fontSize ? a.fontSize : 13;
  6723. a.fontColor = a.fontColor ? a.fontColor : config.fontColor;
  6724. if (a.background == "" || a.background == "none") {
  6725. a.background = "#FFFFFF"
  6726. }
  6727. a.title = assign({}, a.title);
  6728. a.subtitle = assign({}, a.subtitle);
  6729. a.duration = a.duration ? a.duration : 1e3;
  6730. a.yAxis = assign({}, {
  6731. data: [],
  6732. showTitle: false,
  6733. disabled: false,
  6734. disableGrid: false,
  6735. gridSet: "number",
  6736. splitNumber: 5,
  6737. gridType: "solid",
  6738. dashLength: 4 * a.pix,
  6739. gridColor: "#cccccc",
  6740. padding: 10,
  6741. fontColor: "#666666"
  6742. }, a.yAxis);
  6743. a.xAxis = assign({}, {
  6744. rotateLabel: false,
  6745. rotateAngle: 45,
  6746. disabled: false,
  6747. disableGrid: false,
  6748. splitNumber: 5,
  6749. calibration: false,
  6750. fontColor: "#666666",
  6751. fontSize: 13,
  6752. lineHeight: 20,
  6753. marginTop: 0,
  6754. gridType: "solid",
  6755. dashLength: 4,
  6756. scrollAlign: "left",
  6757. boundaryGap: "center",
  6758. axisLine: true,
  6759. axisLineColor: "#cccccc",
  6760. titleFontSize: 13,
  6761. titleOffsetY: 0,
  6762. titleOffsetX: 0,
  6763. titleFontColor: "#666666"
  6764. }, a.xAxis);
  6765. a.xAxis.scrollPosition = a.xAxis.scrollAlign;
  6766. a.legend = assign({}, {
  6767. show: true,
  6768. position: "bottom",
  6769. float: "center",
  6770. backgroundColor: "rgba(0,0,0,0)",
  6771. borderColor: "rgba(0,0,0,0)",
  6772. borderWidth: 0,
  6773. padding: 5,
  6774. margin: 5,
  6775. itemGap: 10,
  6776. fontSize: a.fontSize,
  6777. lineHeight: a.fontSize,
  6778. fontColor: a.fontColor,
  6779. formatter: {},
  6780. hiddenColor: "#CECECE"
  6781. }, a.legend);
  6782. a.extra = assign({
  6783. tooltip: {
  6784. legendShape: "auto"
  6785. }
  6786. }, a.extra);
  6787. a.rotate = a.rotate ? true : false;
  6788. a.animation = a.animation ? true : false;
  6789. a.rotate = a.rotate ? true : false;
  6790. a.canvas2d = a.canvas2d ? true : false;
  6791. let e = assign({}, config);
  6792. e.color = a.color ? a.color : e.color;
  6793. if (a.type == "pie") {
  6794. e.pieChartLinePadding = a.dataLabel === false ? 0 : a.extra.pie.labelWidth * a.pix || e
  6795. .pieChartLinePadding * a.pix
  6796. }
  6797. if (a.type == "ring") {
  6798. e.pieChartLinePadding = a.dataLabel === false ? 0 : a.extra.ring.labelWidth * a.pix || e
  6799. .pieChartLinePadding * a.pix
  6800. }
  6801. if (a.type == "rose") {
  6802. e.pieChartLinePadding = a.dataLabel === false ? 0 : a.extra.rose.labelWidth * a.pix || e
  6803. .pieChartLinePadding * a.pix
  6804. }
  6805. e.pieChartTextPadding = a.dataLabel === false ? 0 : e.pieChartTextPadding * a.pix;
  6806. e.rotate = a.rotate;
  6807. if (a.rotate) {
  6808. let t = a.width;
  6809. let e = a.height;
  6810. a.width = e;
  6811. a.height = t
  6812. }
  6813. a.padding = a.padding ? a.padding : e.padding;
  6814. e.yAxisWidth = config.yAxisWidth * a.pix;
  6815. e.fontSize = a.fontSize * a.pix;
  6816. e.titleFontSize = config.titleFontSize * a.pix;
  6817. e.subtitleFontSize = config.subtitleFontSize * a.pix;
  6818. if (!a.context) {
  6819. throw new Error("[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!")
  6820. }
  6821. this.context = a.context;
  6822. if (!this.context.setTextAlign) {
  6823. this.context.setStrokeStyle = function(t) {
  6824. return this.strokeStyle = t
  6825. };
  6826. this.context.setLineWidth = function(t) {
  6827. return this.lineWidth = t
  6828. };
  6829. this.context.setLineCap = function(t) {
  6830. return this.lineCap = t
  6831. };
  6832. this.context.setFontSize = function(t) {
  6833. return this.font = t + "px sans-serif"
  6834. };
  6835. this.context.setFillStyle = function(t) {
  6836. return this.fillStyle = t
  6837. };
  6838. this.context.setTextAlign = function(t) {
  6839. return this.textAlign = t
  6840. };
  6841. this.context.setTextBaseline = function(t) {
  6842. return this.textBaseline = t
  6843. };
  6844. this.context.setShadow = function(t, e, a, i) {
  6845. this.shadowColor = i;
  6846. this.shadowOffsetX = t;
  6847. this.shadowOffsetY = e;
  6848. this.shadowBlur = a
  6849. };
  6850. this.context.draw = function() {}
  6851. }
  6852. if (!this.context.setLineDash) {
  6853. this.context.setLineDash = function(t) {}
  6854. }
  6855. a.chartData = {};
  6856. this.uevent = new uChartsEvent;
  6857. this.scrollOption = {
  6858. currentOffset: 0,
  6859. startTouchX: 0,
  6860. distance: 0,
  6861. lastMoveTime: 0
  6862. };
  6863. this.opts = a;
  6864. this.config = e;
  6865. drawCharts.call(this, a.type, a, e, this.context)
  6866. };
  6867. uCharts.prototype.updateData = function() {
  6868. let t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  6869. this.opts = assign({}, this.opts, t);
  6870. this.opts.updateData = true;
  6871. let c = t.scrollPosition || "current";
  6872. switch (c) {
  6873. case "current":
  6874. this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  6875. break;
  6876. case "left":
  6877. this.opts._scrollDistance_ = 0;
  6878. this.scrollOption = {
  6879. currentOffset: 0,
  6880. startTouchX: 0,
  6881. distance: 0,
  6882. lastMoveTime: 0
  6883. };
  6884. break;
  6885. case "right":
  6886. let t = calYAxisData(this.opts.series, this.opts, this.config, this.context),
  6887. e = t.yAxisWidth;
  6888. this.config.yAxisWidth = e;
  6889. let a = 0;
  6890. let i = getXAxisPoints(this.opts.categories, this.opts, this.config),
  6891. r = i.xAxisPoints,
  6892. o = i.startX,
  6893. n = i.endX,
  6894. l = i.eachSpacing;
  6895. let s = l * (r.length - 1);
  6896. let h = n - o;
  6897. a = h - s;
  6898. this.scrollOption = {
  6899. currentOffset: a,
  6900. startTouchX: a,
  6901. distance: 0,
  6902. lastMoveTime: 0
  6903. };
  6904. this.opts._scrollDistance_ = a;
  6905. break
  6906. }
  6907. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context)
  6908. };
  6909. uCharts.prototype.zoom = function() {
  6910. var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
  6911. if (this.opts.enableScroll !== true) {
  6912. console.log("[uCharts] 请启用滚动条后使用");
  6913. return
  6914. }
  6915. let e = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(
  6916. this.opts.xAxis.itemCount / 2);
  6917. this.opts.animation = false;
  6918. this.opts.xAxis.itemCount = t.itemCount;
  6919. let a = calYAxisData(this.opts.series, this.opts, this.config, this.context),
  6920. i = a.yAxisWidth;
  6921. this.config.yAxisWidth = i;
  6922. let r = 0;
  6923. let o = getXAxisPoints(this.opts.categories, this.opts, this.config),
  6924. h = o.xAxisPoints,
  6925. c = o.startX,
  6926. d = o.endX,
  6927. n = o.eachSpacing;
  6928. let x = n * e;
  6929. let l = d - c;
  6930. let s = l - n * (h.length - 1);
  6931. r = l / 2 - x;
  6932. if (r > 0) {
  6933. r = 0
  6934. }
  6935. if (r < s) {
  6936. r = s
  6937. }
  6938. this.scrollOption = {
  6939. currentOffset: r,
  6940. startTouchX: 0,
  6941. distance: 0,
  6942. lastMoveTime: 0
  6943. };
  6944. calValidDistance(this, r, this.opts.chartData, this.config, this.opts);
  6945. this.opts._scrollDistance_ = r;
  6946. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context)
  6947. };
  6948. uCharts.prototype.dobuleZoom = function(t) {
  6949. if (this.opts.enableScroll !== true) {
  6950. console.log("[uCharts] 请启用滚动条后使用");
  6951. return
  6952. }
  6953. const a = t.changedTouches;
  6954. if (a.length < 2) {
  6955. return
  6956. }
  6957. for (var e = 0; e < a.length; e++) {
  6958. a[e].x = a[e].x ? a[e].x : a[e].clientX;
  6959. a[e].y = a[e].y ? a[e].y : a[e].clientY
  6960. }
  6961. const i = [getTouches(a[0], this.opts, t), getTouches(a[1], this.opts, t)];
  6962. const c = Math.abs(i[0].x - i[1].x);
  6963. if (!this.scrollOption.moveCount) {
  6964. let t = {
  6965. changedTouches: [{
  6966. x: a[0].x,
  6967. y: this.opts.area[0] / this.opts.pix + 2
  6968. }]
  6969. };
  6970. let e = {
  6971. changedTouches: [{
  6972. x: a[1].x,
  6973. y: this.opts.area[0] / this.opts.pix + 2
  6974. }]
  6975. };
  6976. if (this.opts.rotate) {
  6977. t = {
  6978. changedTouches: [{
  6979. x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,
  6980. y: a[0].y
  6981. }]
  6982. };
  6983. e = {
  6984. changedTouches: [{
  6985. x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,
  6986. y: a[1].y
  6987. }]
  6988. }
  6989. }
  6990. const s = this.getCurrentDataIndex(t).index;
  6991. const h = this.getCurrentDataIndex(e).index;
  6992. const v = Math.abs(s - h);
  6993. this.scrollOption.moveCount = v;
  6994. this.scrollOption.moveCurrent1 = Math.min(s, h);
  6995. this.scrollOption.moveCurrent2 = Math.max(s, h);
  6996. return
  6997. }
  6998. let d = c / this.scrollOption.moveCount;
  6999. let r = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / d;
  7000. r = r <= 2 ? 2 : r;
  7001. r = r >= this.opts.categories.length ? this.opts.categories.length : r;
  7002. this.opts.animation = false;
  7003. this.opts.xAxis.itemCount = r;
  7004. let o = 0;
  7005. let n = getXAxisPoints(this.opts.categories, this.opts, this.config),
  7006. x = n.xAxisPoints,
  7007. f = n.startX,
  7008. p = n.endX,
  7009. l = n.eachSpacing;
  7010. let u = l * this.scrollOption.moveCurrent1;
  7011. let g = p - f;
  7012. let y = g - l * (x.length - 1);
  7013. o = -u + Math.min(i[0].x, i[1].x) - this.opts.area[3] - l;
  7014. if (o > 0) {
  7015. o = 0
  7016. }
  7017. if (o < y) {
  7018. o = y
  7019. }
  7020. this.scrollOption.currentOffset = o;
  7021. this.scrollOption.startTouchX = 0;
  7022. this.scrollOption.distance = 0;
  7023. calValidDistance(this, o, this.opts.chartData, this.config, this.opts);
  7024. this.opts._scrollDistance_ = o;
  7025. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context)
  7026. };
  7027. uCharts.prototype.stopAnimation = function() {
  7028. this.animationInstance && this.animationInstance.stop()
  7029. };
  7030. uCharts.prototype.addEventListener = function(t, e) {
  7031. this.uevent.addEventListener(t, e)
  7032. };
  7033. uCharts.prototype.delEventListener = function(t) {
  7034. this.uevent.delEventListener(t)
  7035. };
  7036. uCharts.prototype.getCurrentDataIndex = function(e) {
  7037. var a = null;
  7038. if (e.changedTouches) {
  7039. a = e.changedTouches[0]
  7040. } else {
  7041. a = e.mp.changedTouches[0]
  7042. }
  7043. if (a) {
  7044. let t = getTouches(a, this.opts, e);
  7045. if (this.opts.type === "pie" || this.opts.type === "ring") {
  7046. return findPieChartCurrentIndex({
  7047. x: t.x,
  7048. y: t.y
  7049. }, this.opts.chartData.pieData, this.opts)
  7050. } else if (this.opts.type === "rose") {
  7051. return findRoseChartCurrentIndex({
  7052. x: t.x,
  7053. y: t.y
  7054. }, this.opts.chartData.pieData, this.opts)
  7055. } else if (this.opts.type === "radar") {
  7056. return findRadarChartCurrentIndex({
  7057. x: t.x,
  7058. y: t.y
  7059. }, this.opts.chartData.radarData, this.opts.categories.length)
  7060. } else if (this.opts.type === "funnel") {
  7061. return findFunnelChartCurrentIndex({
  7062. x: t.x,
  7063. y: t.y
  7064. }, this.opts.chartData.funnelData)
  7065. } else if (this.opts.type === "map") {
  7066. return findMapChartCurrentIndex({
  7067. x: t.x,
  7068. y: t.y
  7069. }, this.opts)
  7070. } else if (this.opts.type === "word") {
  7071. return findWordChartCurrentIndex({
  7072. x: t.x,
  7073. y: t.y
  7074. }, this.opts.chartData.wordCloudData)
  7075. } else if (this.opts.type === "bar") {
  7076. return findBarChartCurrentIndex({
  7077. x: t.x,
  7078. y: t.y
  7079. }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption
  7080. .currentOffset))
  7081. } else {
  7082. return findCurrentIndex({
  7083. x: t.x,
  7084. y: t.y
  7085. }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption
  7086. .currentOffset))
  7087. }
  7088. }
  7089. return -1
  7090. };
  7091. uCharts.prototype.getLegendDataIndex = function(e) {
  7092. var a = null;
  7093. if (e.changedTouches) {
  7094. a = e.changedTouches[0]
  7095. } else {
  7096. a = e.mp.changedTouches[0]
  7097. }
  7098. if (a) {
  7099. let t = getTouches(a, this.opts, e);
  7100. return findLegendIndex({
  7101. x: t.x,
  7102. y: t.y
  7103. }, this.opts.chartData.legendData)
  7104. }
  7105. return -1
  7106. };
  7107. uCharts.prototype.touchLegend = function(t) {
  7108. var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  7109. var a = null;
  7110. if (t.changedTouches) {
  7111. a = t.changedTouches[0]
  7112. } else {
  7113. a = t.mp.changedTouches[0]
  7114. }
  7115. if (a) {
  7116. var i = getTouches(a, this.opts, t);
  7117. var r = this.getLegendDataIndex(t);
  7118. if (r >= 0) {
  7119. if (this.opts.type == "candle") {
  7120. this.opts.seriesMA[r].show = !this.opts.seriesMA[r].show
  7121. } else {
  7122. this.opts.series[r].show = !this.opts.series[r].show
  7123. }
  7124. this.opts.animation = e.animation ? true : false;
  7125. this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  7126. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context)
  7127. }
  7128. }
  7129. };
  7130. uCharts.prototype.showToolTip = function(t) {
  7131. var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  7132. var c = null;
  7133. if (t.changedTouches) {
  7134. c = t.changedTouches[0]
  7135. } else {
  7136. c = t.mp.changedTouches[0]
  7137. }
  7138. if (!c) {
  7139. console.log("[uCharts] 未获取到event坐标信息")
  7140. }
  7141. var a = getTouches(c, this.opts, t);
  7142. var d = this.scrollOption.currentOffset;
  7143. var i = assign({}, this.opts, {
  7144. _scrollDistance_: d,
  7145. animation: false
  7146. });
  7147. if (this.opts.type === "line" || this.opts.type === "area" || this.opts.type === "column" || this.opts.type ===
  7148. "scatter" || this.opts.type === "bubble") {
  7149. var r = this.getCurrentDataIndex(t);
  7150. var o = e.index == undefined ? r.index : e.index;
  7151. if (o > -1 || o.length > 0) {
  7152. var n = getSeriesDataItem(this.opts.series, o, r.group);
  7153. if (n.length !== 0) {
  7154. var l = getToolTipData(n, this.opts, o, r.group, this.opts.categories, e),
  7155. s = l.textList,
  7156. h = l.offset;
  7157. h.y = a.y;
  7158. i.tooltip = {
  7159. textList: e.textList !== undefined ? e.textList : s,
  7160. offset: e.offset !== undefined ? e.offset : h,
  7161. option: e,
  7162. index: o,
  7163. group: r.group
  7164. }
  7165. }
  7166. }
  7167. drawCharts.call(this, i.type, i, this.config, this.context)
  7168. }
  7169. if (this.opts.type === "mount") {
  7170. var o = e.index == undefined ? this.getCurrentDataIndex(t).index : e.index;
  7171. if (o > -1) {
  7172. var i = assign({}, this.opts, {
  7173. animation: false
  7174. });
  7175. var n = assign({}, i._series_[o]);
  7176. var s = [{
  7177. text: e.formatter ? e.formatter(n, undefined, o, i) : n.name + ": " + n.data,
  7178. color: n.color,
  7179. legendShape: this.opts.extra.tooltip.legendShape == "auto" ? n.legendShape : this.opts.extra
  7180. .tooltip.legendShape
  7181. }];
  7182. var h = {
  7183. x: i.chartData.calPoints[o].x,
  7184. y: a.y
  7185. };
  7186. i.tooltip = {
  7187. textList: e.textList ? e.textList : s,
  7188. offset: e.offset !== undefined ? e.offset : h,
  7189. option: e,
  7190. index: o
  7191. }
  7192. }
  7193. drawCharts.call(this, i.type, i, this.config, this.context)
  7194. }
  7195. if (this.opts.type === "bar") {
  7196. var r = this.getCurrentDataIndex(t);
  7197. var o = e.index == undefined ? r.index : e.index;
  7198. if (o > -1 || o.length > 0) {
  7199. var n = getSeriesDataItem(this.opts.series, o, r.group);
  7200. if (n.length !== 0) {
  7201. var l = getToolTipData(n, this.opts, o, r.group, this.opts.categories, e),
  7202. s = l.textList,
  7203. h = l.offset;
  7204. h.x = a.x;
  7205. i.tooltip = {
  7206. textList: e.textList !== undefined ? e.textList : s,
  7207. offset: e.offset !== undefined ? e.offset : h,
  7208. option: e,
  7209. index: o
  7210. }
  7211. }
  7212. }
  7213. drawCharts.call(this, i.type, i, this.config, this.context)
  7214. }
  7215. if (this.opts.type === "mix") {
  7216. var r = this.getCurrentDataIndex(t);
  7217. var o = e.index == undefined ? r.index : e.index;
  7218. if (o > -1) {
  7219. var d = this.scrollOption.currentOffset;
  7220. var i = assign({}, this.opts, {
  7221. _scrollDistance_: d,
  7222. animation: false
  7223. });
  7224. var n = getSeriesDataItem(this.opts.series, o);
  7225. if (n.length !== 0) {
  7226. var x = getMixToolTipData(n, this.opts, o, this.opts.categories, e),
  7227. s = x.textList,
  7228. h = x.offset;
  7229. h.y = a.y;
  7230. i.tooltip = {
  7231. textList: e.textList ? e.textList : s,
  7232. offset: e.offset !== undefined ? e.offset : h,
  7233. option: e,
  7234. index: o
  7235. }
  7236. }
  7237. }
  7238. drawCharts.call(this, i.type, i, this.config, this.context)
  7239. }
  7240. if (this.opts.type === "candle") {
  7241. var r = this.getCurrentDataIndex(t);
  7242. var o = e.index == undefined ? r.index : e.index;
  7243. if (o > -1) {
  7244. var d = this.scrollOption.currentOffset;
  7245. var i = assign({}, this.opts, {
  7246. _scrollDistance_: d,
  7247. animation: false
  7248. });
  7249. var n = getSeriesDataItem(this.opts.series, o);
  7250. if (n.length !== 0) {
  7251. var l = getCandleToolTipData(this.opts.series[0].data, n, this.opts, o, this.opts.categories, this
  7252. .opts.extra.candle, e),
  7253. s = l.textList,
  7254. h = l.offset;
  7255. h.y = a.y;
  7256. i.tooltip = {
  7257. textList: e.textList ? e.textList : s,
  7258. offset: e.offset !== undefined ? e.offset : h,
  7259. option: e,
  7260. index: o
  7261. }
  7262. }
  7263. }
  7264. drawCharts.call(this, i.type, i, this.config, this.context)
  7265. }
  7266. if (this.opts.type === "pie" || this.opts.type === "ring" || this.opts.type === "rose" || this.opts.type ===
  7267. "funnel") {
  7268. var o = e.index == undefined ? this.getCurrentDataIndex(t) : e.index;
  7269. if (o > -1) {
  7270. var i = assign({}, this.opts, {
  7271. animation: false
  7272. });
  7273. var n = assign({}, i._series_[o]);
  7274. var s = [{
  7275. text: e.formatter ? e.formatter(n, undefined, o, i) : n.name + ": " + n.data,
  7276. color: n.color,
  7277. legendShape: this.opts.extra.tooltip.legendShape == "auto" ? n.legendShape : this.opts.extra
  7278. .tooltip.legendShape
  7279. }];
  7280. var h = {
  7281. x: a.x,
  7282. y: a.y
  7283. };
  7284. i.tooltip = {
  7285. textList: e.textList ? e.textList : s,
  7286. offset: e.offset !== undefined ? e.offset : h,
  7287. option: e,
  7288. index: o
  7289. }
  7290. }
  7291. drawCharts.call(this, i.type, i, this.config, this.context)
  7292. }
  7293. if (this.opts.type === "map") {
  7294. var o = e.index == undefined ? this.getCurrentDataIndex(t) : e.index;
  7295. if (o > -1) {
  7296. var i = assign({}, this.opts, {
  7297. animation: false
  7298. });
  7299. var n = assign({}, this.opts.series[o]);
  7300. n.name = n.properties.name;
  7301. var s = [{
  7302. text: e.formatter ? e.formatter(n, undefined, o, this.opts) : n.name,
  7303. color: n.color,
  7304. legendShape: this.opts.extra.tooltip.legendShape == "auto" ? n.legendShape : this.opts.extra
  7305. .tooltip.legendShape
  7306. }];
  7307. var h = {
  7308. x: a.x,
  7309. y: a.y
  7310. };
  7311. i.tooltip = {
  7312. textList: e.textList ? e.textList : s,
  7313. offset: e.offset !== undefined ? e.offset : h,
  7314. option: e,
  7315. index: o
  7316. }
  7317. }
  7318. i.updateData = false;
  7319. drawCharts.call(this, i.type, i, this.config, this.context)
  7320. }
  7321. if (this.opts.type === "word") {
  7322. var o = e.index == undefined ? this.getCurrentDataIndex(t) : e.index;
  7323. if (o > -1) {
  7324. var i = assign({}, this.opts, {
  7325. animation: false
  7326. });
  7327. var n = assign({}, this.opts.series[o]);
  7328. var s = [{
  7329. text: e.formatter ? e.formatter(n, undefined, o, this.opts) : n.name,
  7330. color: n.color,
  7331. legendShape: this.opts.extra.tooltip.legendShape == "auto" ? n.legendShape : this.opts.extra
  7332. .tooltip.legendShape
  7333. }];
  7334. var h = {
  7335. x: a.x,
  7336. y: a.y
  7337. };
  7338. i.tooltip = {
  7339. textList: e.textList ? e.textList : s,
  7340. offset: e.offset !== undefined ? e.offset : h,
  7341. option: e,
  7342. index: o
  7343. }
  7344. }
  7345. i.updateData = false;
  7346. drawCharts.call(this, i.type, i, this.config, this.context)
  7347. }
  7348. if (this.opts.type === "radar") {
  7349. var o = e.index == undefined ? this.getCurrentDataIndex(t) : e.index;
  7350. if (o > -1) {
  7351. var i = assign({}, this.opts, {
  7352. animation: false
  7353. });
  7354. var n = getSeriesDataItem(this.opts.series, o);
  7355. if (n.length !== 0) {
  7356. var s = n.map(t => {
  7357. return {
  7358. text: e.formatter ? e.formatter(t, this.opts.categories[o], o, this.opts) : t.name +
  7359. ": " + t.data,
  7360. color: t.color,
  7361. legendShape: this.opts.extra.tooltip.legendShape == "auto" ? t.legendShape : this
  7362. .opts.extra.tooltip.legendShape
  7363. }
  7364. });
  7365. var h = {
  7366. x: a.x,
  7367. y: a.y
  7368. };
  7369. i.tooltip = {
  7370. textList: e.textList ? e.textList : s,
  7371. offset: e.offset !== undefined ? e.offset : h,
  7372. option: e,
  7373. index: o
  7374. }
  7375. }
  7376. }
  7377. drawCharts.call(this, i.type, i, this.config, this.context)
  7378. }
  7379. };
  7380. uCharts.prototype.translate = function(t) {
  7381. this.scrollOption = {
  7382. currentOffset: t,
  7383. startTouchX: t,
  7384. distance: 0,
  7385. lastMoveTime: 0
  7386. };
  7387. let e = assign({}, this.opts, {
  7388. _scrollDistance_: t,
  7389. animation: false
  7390. });
  7391. drawCharts.call(this, this.opts.type, e, this.config, this.context)
  7392. };
  7393. uCharts.prototype.scrollStart = function(t) {
  7394. var e = null;
  7395. if (t.changedTouches) {
  7396. e = t.changedTouches[0]
  7397. } else {
  7398. e = t.mp.changedTouches[0]
  7399. }
  7400. var a = getTouches(e, this.opts, t);
  7401. if (e && this.opts.enableScroll === true) {
  7402. this.scrollOption.startTouchX = a.x
  7403. }
  7404. };
  7405. uCharts.prototype.scroll = function(t) {
  7406. if (this.scrollOption.lastMoveTime === 0) {
  7407. this.scrollOption.lastMoveTime = Date.now()
  7408. }
  7409. let e = this.opts.touchMoveLimit || 60;
  7410. let a = Date.now();
  7411. let i = a - this.scrollOption.lastMoveTime;
  7412. if (i < Math.floor(1e3 / e)) return;
  7413. if (this.scrollOption.startTouchX == 0) return;
  7414. this.scrollOption.lastMoveTime = a;
  7415. var r = null;
  7416. if (t.changedTouches) {
  7417. r = t.changedTouches[0]
  7418. } else {
  7419. r = t.mp.changedTouches[0]
  7420. }
  7421. if (r && this.opts.enableScroll === true) {
  7422. var o = getTouches(r, this.opts, t);
  7423. var n;
  7424. n = o.x - this.scrollOption.startTouchX;
  7425. var l = this.scrollOption.currentOffset;
  7426. var s = calValidDistance(this, l + n, this.opts.chartData, this.config, this.opts);
  7427. this.scrollOption.distance = n = s - l;
  7428. var h = assign({}, this.opts, {
  7429. _scrollDistance_: l + n,
  7430. animation: false
  7431. });
  7432. this.opts = h;
  7433. drawCharts.call(this, h.type, h, this.config, this.context);
  7434. return l + n
  7435. }
  7436. };
  7437. uCharts.prototype.scrollEnd = function(t) {
  7438. if (this.opts.enableScroll === true) {
  7439. var e = this.scrollOption,
  7440. a = e.currentOffset,
  7441. i = e.distance;
  7442. this.scrollOption.currentOffset = a + i;
  7443. this.scrollOption.distance = 0;
  7444. this.scrollOption.moveCount = 0
  7445. }
  7446. };
  7447. export default uCharts;