vendor.js 546 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257
  1. (global["webpackJsonp"] = global["webpackJsonp"] || []).push([["mine/common/vendor"],{
  2. /***/ 1133:
  3. /*!**************************************************************************!*\
  4. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/import.png ***!
  5. \**************************************************************************/
  6. /*! no static exports found */
  7. /***/ (function(module, exports) {
  8. module.exports = "data:image/png;base64,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"
  9. /***/ }),
  10. /***/ 1162:
  11. /*!*********************************************************************************!*\
  12. !*** D:/work/work/boman/school/qs_cfschool/mine/components/zb-table/js/util.js ***!
  13. \*********************************************************************************/
  14. /*! no static exports found */
  15. /***/ (function(module, exports, __webpack_require__) {
  16. "use strict";
  17. Object.defineProperty(exports, "__esModule", {
  18. value: true
  19. });
  20. exports.getScrollbarSize = void 0;
  21. /**
  22. * 获取滚动条宽度
  23. */
  24. var cached = undefined;
  25. var getScrollbarSize = function getScrollbarSize(fresh) {
  26. return cached;
  27. };
  28. exports.getScrollbarSize = getScrollbarSize;
  29. /***/ }),
  30. /***/ 1172:
  31. /*!*************************************************************************!*\
  32. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/woman.png ***!
  33. \*************************************************************************/
  34. /*! no static exports found */
  35. /***/ (function(module, exports) {
  36. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAAbFBMVEUAAAD+Tmf/SmH/Tmf+Tmb/R2L+Tmf/Tmf+Tmf+T2f+T2b+T2f/Tmf+Tmb/TWX/SGj+T2f+Tmb+T2f+Tmb9Tmb/Tmf9Tmf9Tmb/Tmf+TmX/T2b/T2b+T2f+Tmb9Tmf/T2f6TmP/TGf/SWH+T2eQrN28AAAAI3RSTlMA5AavXw/xzvjz47qFah8J7dXDtp+SjXxZRj0rv6qpdzEvFTGn3DsAAACRSURBVBjTfY5JFoMgEERbICAOcYrGaOa6/x1DGnj6WFir4tMNnw4zFxlnh9QfFUAyeSqBhBjINiWDyH0/z2ppeEZ4tN7h0k69I8ToptFV9UUDT0Ek4JY06vDZyC5EE67EER3evmnbRNd4iTI6fPAIaIhohfTF6m2x8mXEKzxvsARzC8USMu451Ry9U81gvnz+ATYGCP+kftaZAAAAAElFTkSuQmCC"
  37. /***/ }),
  38. /***/ 1173:
  39. /*!***********************************************************************!*\
  40. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/man.png ***!
  41. \***********************************************************************/
  42. /*! no static exports found */
  43. /***/ (function(module, exports) {
  44. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAVCAMAAABBhy+7AAAAY1BMVEUAAABHdetHdOpHdepGdepJduxHdetGdepHdetGdOpGdOpFdOpBbOpGdepGdetHdepGdetFculEdOhEdelAcP9HdepGdOpGdOpGdOhGdOhHdepGdepHdupHdOxJcupHculHdeoHIwrRAAAAIHRSTlMA/c7s9w3j39bHWUELpp2QeSYgHQjzsG5MLO7PbE8xL26SjIUAAACOSURBVBjThcxHDsMwEENRKpIty72XVN7/lJlRLARZ5S0I/A2h6ntYlkufIXrlpPeGttI6HNsBmDoabc8NUUmrs+LUEVj5TDlKFmZG4n5ylmxYpRwI7AwpG8oU7BD19PpnWZTj9Ai8HhBTYHQb8FG1zjU7vrzFqbwIZ3Q3PTSC1G0h6iyrcyubIcmt7p98A8y2B/R3b4uaAAAAAElFTkSuQmCC"
  45. /***/ }),
  46. /***/ 1174:
  47. /*!************************************************************************!*\
  48. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/year.png ***!
  49. \************************************************************************/
  50. /*! no static exports found */
  51. /***/ (function(module, exports) {
  52. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAATCAMAAACwcE1OAAAAkFBMVEUAAACzOAGzNwGzNwGzNwKzNwGxNwCzNwGzNwCzNgCzNwCzNwKzNwGzNwKzNwCwNACzOAKzNwG0OAGzNwCxNwCxNACzKQCzOAKzNwGzOAGzOAGzNwKyNgCyNgCeOwC0NwKyNwGzNwK0NwC0NwCyOQCzNwGzOAKzOAK0NwGxNwCzOAKzNwKyNwKxOACyOQCzOAKTs5eIAAAAL3RSTlMA6u/eh2kf53FKJfTjjlIR8tN9eBsWB/jHvLGeNSwE+s2iYVoMwamXbUOTgoFlP85iu1kAAAEGSURBVCjPZZDXlsIwDERdkji995BGFli2zf//3TrFJMA86XpkHY3IqrSiOnloEhebHHWBg1aBURSIjq6F6g9nRT78q6Rdkfxq7GgTo3fzB+poyIs8xKrMRZG+2gELg62MoZE3mfC2xpB+vNsd79eRN/w+OypNvaRMgpOuedrnKd/+bRiYraTMY1hF47nBdDcMv1KZ0QUddd/y9ZGBci7Args2ArQlFTy1WFZCKjJU3hgD6flxGy3BtHPpEO7sqc4wJ5i7TSnRcFNkuLCzgtmKv9GQgKOyuiUgna+XgP3MDd29hkjlcwmwqBSAEy/XZIAYBgpE65x7w0PHrZNsC2DWrhPy0ZL1P7OVGDwok4u1AAAAAElFTkSuQmCC"
  53. /***/ }),
  54. /***/ 1175:
  55. /*!************************************************************************!*\
  56. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/head.png ***!
  57. \************************************************************************/
  58. /*! no static exports found */
  59. /***/ (function(module, exports) {
  60. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAllBMVEUAAADa5Pva4/vb5Pzb4/zb4/za5PzX5P7a5PzZ4vzb5Pzb5Pvb4P/a5Pzb5Pzb5fzf5//a4/va4/va5Pvb5Pra5P3d5v/l7P3b5fza4/zp7v3e5vvk6vvb4/zb5Pzg6Pzd5fve5/vg6Pzf6v/Z5Pra4/v////7/P7d5vvq7/3z9v7u8v34+v7n7fzj6vzh6Pzw9P31+P4TIA7/AAAAJXRSTlMA2LP68K9hE0sc5pAHm2NOHfXRxVwwE9pj3vDRxVvwtLOxmzAvNFaZfQAAAptJREFUWMO9mNdu6zAMQD1iJ7YzmjTO6LibkjU88v8/d420qZCIVKQW6Hk1cECTlCgp+hb+5lWyKddpui43SZXXn5LsltkEbphkh2mgZpalgJJmswBNHoODOPfUrIyGUvlE9ZCAB0lxz7OdgBeTV6dmvgBvFnNHyR8hgMcd5SliCCIuiDQfIZDjA/pfMQQTT5E8U/npWiVV2xF5sjOO16tRnL3BVYPWzuofwBCcGbgAhNebRKN9KNk1EuvM64QnhMfDlFytU8LjZVpFBqzygmEIpAeMJ8fqxXCQ2uXOgAZCNDhCmmEBcULEkZBmjpIJRiHIwk1TumR+hUvfltwSEDgp4mBzOIsytGY0PVhkZxG2OnqHqEPWSTTyDxA6h6gFmxrvxnDRchRV8PVfg8p0kb+oJ7aADXy9/LAZRSVgnEjRCRDKUbQGDBGUa1iPohQgcNEipKQIFCFSQInWEBRSA9SvlYDTEpsISomXn/45CTgb05AB44hoyAq8TQNQVGbRorRXI9t0ELpoa3Ah9LtGC3BQkxub4urSB61Qou0vFRh6sJkQW217DuPU2M11wmPL0M1fcOocIzjx4YCMo04zA1e9iWbUfKA7ZBxFmasLuVRt1wqlHa2Q2CNbMm90Y43sKHZvZ/c2lNg61kgWhDbHmuuQFAtkeA/IsHKPafdkWt0eRodw0cmUzByPG87C6W+Px9EWOvYJBGztK4Ri4cgFdqnRwR7+glwjp3Fwlvh+GiEUx1DTvqCuok3I33HjsS/HjfT3vOyc13Xh6ZF/5nceEHrtE87TNrpDkZi9lmT4WXg9sjSDU6X3K+9nn4aMig/7POwhqkPC4rL9PYvCmB6yH52Qml8cWqon8zQWRr2skucybfq0fP5VLevoO/gP3B8twrO2xwEAAAAASUVORK5CYII="
  61. /***/ }),
  62. /***/ 1176:
  63. /*!**************************************************************************!*\
  64. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/health.png ***!
  65. \**************************************************************************/
  66. /*! no static exports found */
  67. /***/ (function(module, exports) {
  68. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAVCAMAAACT1yXjAAAAZlBMVEUAAABFzJlEy5k7x5xFy5lG0ZdR16NFxZdFy5lFy5hFy5lEy5lDy5lAw5BAz5pEy5hEy5lFy5lEy5lFzJlEyplEy5pFy5lFy5pDyppDzJg7sYpFy5lFy5lEyphFy5lDyphHyppFzJmSXoUCAAAAIXRSTlMA+eQM/BYGFvLt4MsbDxHc6dK5tZR3Zlc8IgbTwKmiSCs/X8rfAAAAlklEQVQY04XQ1w7DIAyFYTukGYzs1XSe93/JEqCCSlX7X34CyzLdss8GIsqRpwElEUOLpNrbiZJ+WVFXIROt4lA0Kt79mSfdtuVhHQdjt62zvSBnJI4MhdJ5cyeXR1tPItoMho1xjzZiXRnLBhVtgmqem7hijCYUWr33kNpaQz5zQT9Ano+bZj5DuoUjUhyyzxtlP37vBSS1DAWRxfZgAAAAAElFTkSuQmCC"
  69. /***/ }),
  70. /***/ 1177:
  71. /*!***********************************************************************!*\
  72. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/mbg.png ***!
  73. \***********************************************************************/
  74. /*! no static exports found */
  75. /***/ (function(module, exports) {
  76. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABgBAMAAACJTrO+AAAAFVBMVEUAAABEdetDcus7budDdOtBbulDcOq9RtzSAAAAB3RSTlMAGRUFEQkNXPRfeAAAAzVJREFUWMOVl01XozAUhpnSdj2X0q5LrV1HmboGPc4adGbW4NH//xdGwsdDEhSShQfkfbifyaWBzwpV4LfqyI/YiGReDuUiRz89wFK97Hz0AMv1sl+an6RRH3KARXpVy8FDf1FBKbGX/hOIFui3Wn/bXN4BzOsBluif25sfImqR/0/d3QpgRg9QzNcXfbCeA+pWT0Ai1Xf6+0EPkH2XIPRsueM3ASQ6/y5w/fibTiWrFLF7LRT52fwROX2oKYdiNQFsRa/zqwXkMk7Jy+0ArKVdURseNSIACpAA9AkhYu0QBcxGwPnkEGvDoXt9B1AE10dNVOMI9mb8AYB275eOQ40MKCd+DQwte02Et5btJQ7dBAbAVnnq8y2FFb8LBA+NU1q3tg1kgQXwSAvLRoIBaAD6v9L/jwwDxQjoNjY7MtZp3GNgiBhguNfJPTZGMwz0yQaIzJaLmhCUbQDgrgMoapZzhK4wYAOULE4IIceADbALR6NsrQ2wBGBsgphr8tV1wBFgbKLiuvgKwASdeocBJjvAyO8hRqksoAIY1SIa0Ng+SYoJoO5l5ZBTjCsqPbJw6EOkzZgPdCvAPnB2BSMLgHLuAnaFmcDIHRIAifOqWg4aqCaBDWcxT/YMCQdY0VIUeseQsAF2hTke9Ik8CSRUjTJUPLeBjbZvZVUK0m4AhGBllU4wCrcjBPNNh86QsrK9pwWdJPE9gGX9IsFTYj52PXu0gFjHfOOO1QJLdoutrXriJAmf6cnN4CT5oOsnPu/uW9e5Mmds7tQ570LgsDY+cjj98CimIJGyemzIBJHxH7YWBQrtXIcJ5eI4YZ+wSwg5NujKCC9mHyLJjBoezK60y/AiRpybbkJTiBcT2IrVKXU7oYnJ7NUwHwwg0dMegwZQYgATozBCafhxABgwXnpRdIEG0JMi8tyIXvuqAmwe+TngOCXRJdVpGoDrWyLEN/nD6/yRplsNhOm/Ry0nAJdon5/0t2wrFjLuEG/iLPyZXH+SCf0z+gkj7zZyKYKZdX0/9eLT+feyX+hp+iDylKbB4sWUmV9MAl+g8AJWPgAjwGPVEi2Vcj57LZGdr4WjH1BGyg8Iv07qfyD5jN2gZiu8AAAAAElFTkSuQmCC"
  77. /***/ }),
  78. /***/ 1178:
  79. /*!************************************************************************!*\
  80. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/wmbg.png ***!
  81. \************************************************************************/
  82. /*! no static exports found */
  83. /***/ (function(module, exports) {
  84. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABgBAMAAACJTrO+AAAAElBMVEUAAAD/TWv/S2X/Q17/SmD/S2M+B+fMAAAABnRSTlMAGRMGCg8vJ4O6AAADAklEQVRYw7WXzXaqMBCAo+D+DsoerN1jtXuw7V6q9/1f5R4j8CUztwey6Cw8KvNl/pPgkqRxadJJGpGLXFP0s1qkStHvBWCpvmxT9AGW+e9ltzQ/Xr+sARbpu17KFP3GdQDz+gdf6SJJ3x2XABuZ9N1KZH59r//iAOb8Qd8DzRL92/hzLdIuqO+NeOaA7ukPwMxAvLH+ognasD5ANRPALv5L5I9z58/P008BlM4C2cNwcW/+51DRWODxwCMfCuglzOHl2RsApIMayUEXwANrgYiMSxHFfw2A1xoCA0HKj+Ov+gm07vztCVT6MKP5aA7AuXd5ZoUUNTp+gGZqzB012EYd4n8BMCrVFDIpJX4AeqcdQt6piBWAba/YoeIy/ydANHb9sFgtRWSgVYDO3yZYMyPiGMCp6uHlFQMkGwDpHya6wEvxI6AA1dRVL0XYIi4CHjbV2BR1mBZvAHsAxI0XtEgEFHZrqQhp6yKgAghNtHxv4ykBwARuHCmIBlSiCPmqrwIWoDE2wjNGe6UBjj6mgqo0FA5gcDwjmPB8sIfEo25qKmgs/7cBtqNHlU5gwaligZqlwug2BhhCzdmLA2c5JIyFNR4FS3FIaAtMhTpPMnoTC9RPleHKcw3k3pApA2lXgAmBu0mvTfeyJYR4pXIqn20NG0I2OLlShRiuUbovcHKDs4GrOckLOqnFUvSg4Jag5oRYdE+ubNkmJ8kH6fZ+mSpU+hu3IsaO5E3JYbNm1G05aV7f+GYzMY1xJG2MFjcKD+m7TRs4Xao5UVOidWR4zCSqOdRvJ92AU2q2Bg4itQHfooxfRPT2SRK4HPC4FlEOSaNXKEODsQcdBjAREJkCLtxb4kXLhkp6AH17X33zxMeYE+zlPS9LximRw8lXaQKybxFohBc12d9PTe51stPXXrwQgCEGaPwY9Ml4LN68EXJh5asWKwf0rWTGyGvrZuT8dzJT7O+NWySnd5GX07yyfnf5JYCdJkVWKQBHQIJwyMwK+3OSiGxTgSoN6JiAhfJzUv8B7sh8370/6zIAAAAASUVORK5CYII="
  85. /***/ }),
  86. /***/ 1179:
  87. /*!************************************************************************!*\
  88. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/more.png ***!
  89. \************************************************************************/
  90. /*! no static exports found */
  91. /***/ (function(module, exports) {
  92. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAFCAYAAABfPyy9AAAAAXNSR0IArs4c6QAAALtJREFUKFO1kCsOwkAURe9tBQnIyZuuAIEiCCwKxQLA4tgAgrABDAYFSFZRhUA2YQmwgOlQV0jNtKSiyaS+T56c+34EABFZklyVZfkqiuKY57mtuV8iMgSwJ9lzzp2yLEvaThRFA+fcNgiCCYA4TdMrRWRH8uDJb5JjY8y3YUqpURiGTwD9hpGcG2PuXq7ulZCceuxMrfUHgPK3qapqba29NUxrfQGwaTmxtXbRMBGZkXy0rvp1P6DrF/0BzlBaJK9V7OIAAAAASUVORK5CYII="
  93. /***/ }),
  94. /***/ 1180:
  95. /*!****************************************************************************!*\
  96. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/daupdata.png ***!
  97. \****************************************************************************/
  98. /*! no static exports found */
  99. /***/ (function(module, exports) {
  100. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAZ1JREFUOE+Vk01rE1EUhp93/Fg0kAg6xY0LcacggksREpAZ/QX+gJJaocuZus3eqIuCrf0L3Yq1pUh2IkK7EnEjFdzMTCnNiJTBzly5NRM7gcR4Nvfew32fc+655wjg9rw5d7GedBEPBTOAsX5rxuDI4Ytz5N7ZWFZW+u3qBfGc7MZfipcxLALHgL104h+a+J7+ym69f3HlqPT5YbICZuEPIIz3gUYB1y/suV+TG71TgCa9jix4aKUY6JeAFHA2a26djopK9JGDF0Srkh6B+nluWiWgD5zNap8avU6rEq3y5jBZFWYo3n4+uzs1wA+jFdAChjQvaFqxhU8F8MLoldC8FSO1Np+6O2Vm/wR4QbQmqQ38ADVPi/0gaU8E+EvRGkZtG1nGuff22aWP1ZrEW2MBXhg9FnoJpMYU3lb38ofR3/HDeGMs4H5wcLPQcbfIeVIW7L8Ak3rhbzdWMzhT33Mb6+vKpxEPOnj4hBRjzjvZbGN0YCbB/DB+d1IDL4jfSDww6LOM+TYySuMYNeDuAHB4VWSvka5Nm/5g1n/+BmRb1pwIf3RdAAAAAElFTkSuQmCC"
  101. /***/ }),
  102. /***/ 1202:
  103. /*!**********************************************************************************************************!*\
  104. !*** D:/work/work/boman/school/qs_cfschool/mine/components/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
  105. \**********************************************************************************************************/
  106. /*! no static exports found */
  107. /***/ (function(module, exports, __webpack_require__) {
  108. "use strict";
  109. /*
  110. * uCharts (R)
  111. * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台
  112. * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.
  113. * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  114. * 复制使用请保留本段注释,感谢支持开源!
  115. *
  116. * uCharts (R) 官方网站
  117. * https://www.uCharts.cn
  118. *
  119. * 开源地址:
  120. * https://gitee.com/uCharts/uCharts
  121. *
  122. * uni-app插件市场地址:
  123. * http://ext.dcloud.net.cn/plugin?id=271
  124. *
  125. */
  126. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
  127. Object.defineProperty(exports, "__esModule", {
  128. value: true
  129. });
  130. exports.default = void 0;
  131. var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
  132. var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
  133. var config = {
  134. version: 'v2.5.0-20230101',
  135. yAxisWidth: 15,
  136. xAxisHeight: 22,
  137. padding: [10, 10, 10, 10],
  138. rotate: false,
  139. fontSize: 13,
  140. fontColor: '#666666',
  141. dataPointShape: ['circle', 'circle', 'circle', 'circle'],
  142. color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],
  143. linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],
  144. pieChartLinePadding: 15,
  145. pieChartTextPadding: 5,
  146. titleFontSize: 20,
  147. subtitleFontSize: 15,
  148. radarLabelTextMargin: 13
  149. };
  150. var assign = function assign(target) {
  151. for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
  152. varArgs[_key2 - 1] = arguments[_key2];
  153. }
  154. if (target == null) {
  155. throw new TypeError('[uCharts] Cannot convert undefined or null to object');
  156. }
  157. if (!varArgs || varArgs.length <= 0) {
  158. return target;
  159. }
  160. // 深度合并对象
  161. function deepAssign(obj1, obj2) {
  162. for (var key in obj2) {
  163. obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ? deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];
  164. }
  165. return obj1;
  166. }
  167. varArgs.forEach(function (val) {
  168. target = deepAssign(target, val);
  169. });
  170. return target;
  171. };
  172. var util = {
  173. toFixed: function toFixed(num, limit) {
  174. limit = limit || 2;
  175. if (this.isFloat(num)) {
  176. num = num.toFixed(limit);
  177. }
  178. return num;
  179. },
  180. isFloat: function isFloat(num) {
  181. return num % 1 !== 0;
  182. },
  183. approximatelyEqual: function approximatelyEqual(num1, num2) {
  184. return Math.abs(num1 - num2) < 1e-10;
  185. },
  186. isSameSign: function isSameSign(num1, num2) {
  187. return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
  188. },
  189. isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
  190. return this.isSameSign(p1.x, p2.x);
  191. },
  192. isCollision: function isCollision(obj1, obj2) {
  193. obj1.end = {};
  194. obj1.end.x = obj1.start.x + obj1.width;
  195. obj1.end.y = obj1.start.y - obj1.height;
  196. obj2.end = {};
  197. obj2.end.x = obj2.start.x + obj2.width;
  198. obj2.end.y = obj2.start.y - obj2.height;
  199. var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
  200. return !flag;
  201. }
  202. };
  203. //兼容H5点击事件
  204. function getH5Offset(e) {
  205. e.mp = {
  206. changedTouches: []
  207. };
  208. e.mp.changedTouches.push({
  209. x: e.offsetX,
  210. y: e.offsetY
  211. });
  212. return e;
  213. }
  214. // hex 转 rgba
  215. function hexToRgb(hexValue, opc) {
  216. var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  217. var hex = hexValue.replace(rgx, function (m, r, g, b) {
  218. return r + r + g + g + b + b;
  219. });
  220. var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  221. var r = parseInt(rgb[1], 16);
  222. var g = parseInt(rgb[2], 16);
  223. var b = parseInt(rgb[3], 16);
  224. return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';
  225. }
  226. function findRange(num, type, limit) {
  227. if (isNaN(num)) {
  228. throw new Error('[uCharts] series数据需为Number格式');
  229. }
  230. limit = limit || 10;
  231. type = type ? type : 'upper';
  232. var multiple = 1;
  233. while (limit < 1) {
  234. limit *= 10;
  235. multiple *= 10;
  236. }
  237. if (type === 'upper') {
  238. num = Math.ceil(num * multiple);
  239. } else {
  240. num = Math.floor(num * multiple);
  241. }
  242. while (num % limit !== 0) {
  243. if (type === 'upper') {
  244. if (num == num + 1) {
  245. //修复数据值过大num++无效的bug by 向日葵 @xrk_jy
  246. break;
  247. }
  248. num++;
  249. } else {
  250. num--;
  251. }
  252. }
  253. return num / multiple;
  254. }
  255. function calCandleMA(dayArr, nameArr, colorArr, kdata) {
  256. var seriesTemp = [];
  257. for (var k = 0; k < dayArr.length; k++) {
  258. var seriesItem = {
  259. data: [],
  260. name: nameArr[k],
  261. color: colorArr[k]
  262. };
  263. for (var i = 0, len = kdata.length; i < len; i++) {
  264. if (i < dayArr[k]) {
  265. seriesItem.data.push(null);
  266. continue;
  267. }
  268. var sum = 0;
  269. for (var j = 0; j < dayArr[k]; j++) {
  270. sum += kdata[i - j][1];
  271. }
  272. seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));
  273. }
  274. seriesTemp.push(seriesItem);
  275. }
  276. return seriesTemp;
  277. }
  278. function calValidDistance(self, distance, chartData, config, opts) {
  279. var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];
  280. var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);
  281. if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
  282. if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
  283. dataChartWidth += (opts.extra.mount.widthRatio - 1) * chartData.eachSpacing;
  284. }
  285. var validDistance = distance;
  286. if (distance >= 0) {
  287. validDistance = 0;
  288. self.uevent.trigger('scrollLeft');
  289. self.scrollOption.position = 'left';
  290. opts.xAxis.scrollPosition = 'left';
  291. } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
  292. validDistance = dataChartAreaWidth - dataChartWidth;
  293. self.uevent.trigger('scrollRight');
  294. self.scrollOption.position = 'right';
  295. opts.xAxis.scrollPosition = 'right';
  296. } else {
  297. self.scrollOption.position = distance;
  298. opts.xAxis.scrollPosition = distance;
  299. }
  300. return validDistance;
  301. }
  302. function isInAngleRange(angle, startAngle, endAngle) {
  303. function adjust(angle) {
  304. while (angle < 0) {
  305. angle += 2 * Math.PI;
  306. }
  307. while (angle > 2 * Math.PI) {
  308. angle -= 2 * Math.PI;
  309. }
  310. return angle;
  311. }
  312. angle = adjust(angle);
  313. startAngle = adjust(startAngle);
  314. endAngle = adjust(endAngle);
  315. if (startAngle > endAngle) {
  316. endAngle += 2 * Math.PI;
  317. if (angle < startAngle) {
  318. angle += 2 * Math.PI;
  319. }
  320. }
  321. return angle >= startAngle && angle <= endAngle;
  322. }
  323. function createCurveControlPoints(points, i) {
  324. function isNotMiddlePoint(points, i) {
  325. if (points[i - 1] && points[i + 1]) {
  326. return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);
  327. } else {
  328. return false;
  329. }
  330. }
  331. function isNotMiddlePointX(points, i) {
  332. if (points[i - 1] && points[i + 1]) {
  333. return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, points[i + 1].x);
  334. } else {
  335. return false;
  336. }
  337. }
  338. var a = 0.2;
  339. var b = 0.2;
  340. var pAx = null;
  341. var pAy = null;
  342. var pBx = null;
  343. var pBy = null;
  344. if (i < 1) {
  345. pAx = points[0].x + (points[1].x - points[0].x) * a;
  346. pAy = points[0].y + (points[1].y - points[0].y) * a;
  347. } else {
  348. pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
  349. pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
  350. }
  351. if (i > points.length - 3) {
  352. var last = points.length - 1;
  353. pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
  354. pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
  355. } else {
  356. pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
  357. pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
  358. }
  359. if (isNotMiddlePoint(points, i + 1)) {
  360. pBy = points[i + 1].y;
  361. }
  362. if (isNotMiddlePoint(points, i)) {
  363. pAy = points[i].y;
  364. }
  365. if (isNotMiddlePointX(points, i + 1)) {
  366. pBx = points[i + 1].x;
  367. }
  368. if (isNotMiddlePointX(points, i)) {
  369. pAx = points[i].x;
  370. }
  371. if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {
  372. pAy = points[i].y;
  373. }
  374. if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {
  375. pBy = points[i + 1].y;
  376. }
  377. if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {
  378. pAx = points[i].x;
  379. }
  380. if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {
  381. pBx = points[i + 1].x;
  382. }
  383. return {
  384. ctrA: {
  385. x: pAx,
  386. y: pAy
  387. },
  388. ctrB: {
  389. x: pBx,
  390. y: pBy
  391. }
  392. };
  393. }
  394. function convertCoordinateOrigin(x, y, center) {
  395. return {
  396. x: center.x + x,
  397. y: center.y - y
  398. };
  399. }
  400. function avoidCollision(obj, target) {
  401. if (target) {
  402. // is collision test
  403. while (util.isCollision(obj, target)) {
  404. if (obj.start.x > 0) {
  405. obj.start.y--;
  406. } else if (obj.start.x < 0) {
  407. obj.start.y++;
  408. } else {
  409. if (obj.start.y > 0) {
  410. obj.start.y++;
  411. } else {
  412. obj.start.y--;
  413. }
  414. }
  415. }
  416. }
  417. return obj;
  418. }
  419. function fixPieSeries(series, opts, config) {
  420. var pieSeriesArr = [];
  421. if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {
  422. opts._pieSeries_ = series;
  423. var oldseries = series[0].data;
  424. for (var i = 0; i < oldseries.length; i++) {
  425. oldseries[i].formatter = series[0].formatter;
  426. oldseries[i].data = oldseries[i].value;
  427. pieSeriesArr.push(oldseries[i]);
  428. }
  429. opts.series = pieSeriesArr;
  430. } else {
  431. pieSeriesArr = series;
  432. }
  433. return pieSeriesArr;
  434. }
  435. function fillSeries(series, opts, config) {
  436. var index = 0;
  437. for (var i = 0; i < series.length; i++) {
  438. var item = series[i];
  439. if (!item.color) {
  440. item.color = config.color[index];
  441. index = (index + 1) % config.color.length;
  442. }
  443. if (!item.linearIndex) {
  444. item.linearIndex = i;
  445. }
  446. if (!item.index) {
  447. item.index = 0;
  448. }
  449. if (!item.type) {
  450. item.type = opts.type;
  451. }
  452. if (typeof item.show == "undefined") {
  453. item.show = true;
  454. }
  455. if (!item.type) {
  456. item.type = opts.type;
  457. }
  458. if (!item.pointShape) {
  459. item.pointShape = "circle";
  460. }
  461. if (!item.legendShape) {
  462. switch (item.type) {
  463. case 'line':
  464. item.legendShape = "line";
  465. break;
  466. case 'column':
  467. case 'bar':
  468. item.legendShape = "rect";
  469. break;
  470. case 'area':
  471. case 'mount':
  472. item.legendShape = "triangle";
  473. break;
  474. default:
  475. item.legendShape = "circle";
  476. }
  477. }
  478. }
  479. return series;
  480. }
  481. function fillCustomColor(linearType, customColor, series, config) {
  482. var newcolor = customColor || [];
  483. if (linearType == 'custom' && newcolor.length == 0) {
  484. newcolor = config.linearColor;
  485. }
  486. if (linearType == 'custom' && newcolor.length < series.length) {
  487. var chazhi = series.length - newcolor.length;
  488. for (var i = 0; i < chazhi; i++) {
  489. newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);
  490. }
  491. }
  492. return newcolor;
  493. }
  494. function getDataRange(minData, maxData) {
  495. var limit = 0;
  496. var range = maxData - minData;
  497. if (range >= 10000) {
  498. limit = 1000;
  499. } else if (range >= 1000) {
  500. limit = 100;
  501. } else if (range >= 100) {
  502. limit = 10;
  503. } else if (range >= 10) {
  504. limit = 5;
  505. } else if (range >= 1) {
  506. limit = 1;
  507. } else if (range >= 0.1) {
  508. limit = 0.1;
  509. } else if (range >= 0.01) {
  510. limit = 0.01;
  511. } else if (range >= 0.001) {
  512. limit = 0.001;
  513. } else if (range >= 0.0001) {
  514. limit = 0.0001;
  515. } else if (range >= 0.00001) {
  516. limit = 0.00001;
  517. } else {
  518. limit = 0.000001;
  519. }
  520. return {
  521. minRange: findRange(minData, 'lower', limit),
  522. maxRange: findRange(maxData, 'upper', limit)
  523. };
  524. }
  525. function measureText(text, fontSize, context) {
  526. var width = 0;
  527. text = String(text);
  528. if (context !== false && context !== undefined && context.setFontSize && context.measureText) {
  529. context.setFontSize(fontSize);
  530. return context.measureText(text).width;
  531. } else {
  532. var text = text.split('');
  533. for (var i = 0; i < text.length; i++) {
  534. var item = text[i];
  535. if (/[a-zA-Z]/.test(item)) {
  536. width += 7;
  537. } else if (/[0-9]/.test(item)) {
  538. width += 5.5;
  539. } else if (/\./.test(item)) {
  540. width += 2.7;
  541. } else if (/-/.test(item)) {
  542. width += 3.25;
  543. } else if (/:/.test(item)) {
  544. width += 2.5;
  545. } else if (/[\u4e00-\u9fa5]/.test(item)) {
  546. width += 10;
  547. } else if (/\(|\)/.test(item)) {
  548. width += 3.73;
  549. } else if (/\s/.test(item)) {
  550. width += 2.5;
  551. } else if (/%/.test(item)) {
  552. width += 8;
  553. } else {
  554. width += 10;
  555. }
  556. }
  557. return width * fontSize / 10;
  558. }
  559. }
  560. function dataCombine(series) {
  561. return series.reduce(function (a, b) {
  562. return (a.data ? a.data : a).concat(b.data);
  563. }, []);
  564. }
  565. function dataCombineStack(series, len) {
  566. var sum = new Array(len);
  567. for (var j = 0; j < sum.length; j++) {
  568. sum[j] = 0;
  569. }
  570. for (var i = 0; i < series.length; i++) {
  571. for (var j = 0; j < sum.length; j++) {
  572. sum[j] += series[i].data[j];
  573. }
  574. }
  575. return series.reduce(function (a, b) {
  576. return (a.data ? a.data : a).concat(b.data).concat(sum);
  577. }, []);
  578. }
  579. function getTouches(touches, opts, e) {
  580. var x, y;
  581. if (touches.clientX) {
  582. if (opts.rotate) {
  583. y = opts.height - touches.clientX * opts.pix;
  584. x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;
  585. } else {
  586. x = touches.clientX * opts.pix;
  587. y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;
  588. }
  589. } else {
  590. if (opts.rotate) {
  591. y = opts.height - touches.x * opts.pix;
  592. x = touches.y * opts.pix;
  593. } else {
  594. x = touches.x * opts.pix;
  595. y = touches.y * opts.pix;
  596. }
  597. }
  598. return {
  599. x: x,
  600. y: y
  601. };
  602. }
  603. function getSeriesDataItem(series, index, group) {
  604. var data = [];
  605. var newSeries = [];
  606. var indexIsArr = index.constructor.toString().indexOf('Array') > -1;
  607. if (indexIsArr) {
  608. var tempSeries = filterSeries(series);
  609. for (var i = 0; i < group.length; i++) {
  610. newSeries.push(tempSeries[group[i]]);
  611. }
  612. } else {
  613. newSeries = series;
  614. }
  615. ;
  616. for (var _i = 0; _i < newSeries.length; _i++) {
  617. var item = newSeries[_i];
  618. var tmpindex = -1;
  619. if (indexIsArr) {
  620. tmpindex = index[_i];
  621. } else {
  622. tmpindex = index;
  623. }
  624. if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {
  625. var seriesItem = {};
  626. seriesItem.color = item.color;
  627. seriesItem.type = item.type;
  628. seriesItem.style = item.style;
  629. seriesItem.pointShape = item.pointShape;
  630. seriesItem.disableLegend = item.disableLegend;
  631. seriesItem.legendShape = item.legendShape;
  632. seriesItem.name = item.name;
  633. seriesItem.show = item.show;
  634. seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];
  635. data.push(seriesItem);
  636. }
  637. }
  638. return data;
  639. }
  640. function getMaxTextListLength(list, fontSize, context) {
  641. var lengthList = list.map(function (item) {
  642. return measureText(item, fontSize, context);
  643. });
  644. return Math.max.apply(null, lengthList);
  645. }
  646. function getRadarCoordinateSeries(length) {
  647. var eachAngle = 2 * Math.PI / length;
  648. var CoordinateSeries = [];
  649. for (var i = 0; i < length; i++) {
  650. CoordinateSeries.push(eachAngle * i);
  651. }
  652. return CoordinateSeries.map(function (item) {
  653. return -1 * item + Math.PI / 2;
  654. });
  655. }
  656. function getToolTipData(seriesData, opts, index, group, categories) {
  657. var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
  658. var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];
  659. var points = {};
  660. if (group.length > 0) {
  661. var filterPoints = [];
  662. for (var i = 0; i < group.length; i++) {
  663. filterPoints.push(calPoints[group[i]]);
  664. }
  665. points = filterPoints[0][index[0]];
  666. } else {
  667. for (var _i2 = 0; _i2 < calPoints.length; _i2++) {
  668. if (calPoints[_i2][index]) {
  669. points = calPoints[_i2][index];
  670. break;
  671. }
  672. }
  673. }
  674. ;
  675. var textList = seriesData.map(function (item) {
  676. var titleText = null;
  677. if (opts.categories && opts.categories.length > 0) {
  678. titleText = categories[index];
  679. }
  680. ;
  681. return {
  682. text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,
  683. color: item.color,
  684. legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
  685. };
  686. });
  687. var offset = {
  688. x: Math.round(points.x),
  689. y: Math.round(points.y)
  690. };
  691. return {
  692. textList: textList,
  693. offset: offset
  694. };
  695. }
  696. function getMixToolTipData(seriesData, opts, index, categories) {
  697. var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
  698. var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;
  699. var textList = seriesData.map(function (item) {
  700. return {
  701. text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,
  702. color: item.color,
  703. disableLegend: item.disableLegend ? true : false,
  704. legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
  705. };
  706. });
  707. textList = textList.filter(function (item) {
  708. if (item.disableLegend !== true) {
  709. return item;
  710. }
  711. });
  712. var offset = {
  713. x: Math.round(points),
  714. y: 0
  715. };
  716. return {
  717. textList: textList,
  718. offset: offset
  719. };
  720. }
  721. function getCandleToolTipData(series, seriesData, opts, index, categories, extra) {
  722. var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
  723. var calPoints = opts.chartData.calPoints;
  724. var upColor = extra.color.upFill;
  725. var downColor = extra.color.downFill;
  726. //颜色顺序为开盘,收盘,最低,最高
  727. var color = [upColor, upColor, downColor, upColor];
  728. var textList = [];
  729. seriesData.map(function (item) {
  730. if (index == 0) {
  731. if (item.data[1] - item.data[0] < 0) {
  732. color[1] = downColor;
  733. } else {
  734. color[1] = upColor;
  735. }
  736. } else {
  737. if (item.data[0] < series[index - 1][1]) {
  738. color[0] = downColor;
  739. }
  740. if (item.data[1] < item.data[0]) {
  741. color[1] = downColor;
  742. }
  743. if (item.data[2] > series[index - 1][1]) {
  744. color[2] = upColor;
  745. }
  746. if (item.data[3] < series[index - 1][1]) {
  747. color[3] = downColor;
  748. }
  749. }
  750. var text1 = {
  751. text: '开盘:' + item.data[0],
  752. color: color[0],
  753. legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
  754. };
  755. var text2 = {
  756. text: '收盘:' + item.data[1],
  757. color: color[1],
  758. legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
  759. };
  760. var text3 = {
  761. text: '最低:' + item.data[2],
  762. color: color[2],
  763. legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
  764. };
  765. var text4 = {
  766. text: '最高:' + item.data[3],
  767. color: color[3],
  768. legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
  769. };
  770. textList.push(text1, text2, text3, text4);
  771. });
  772. var validCalPoints = [];
  773. var offset = {
  774. x: 0,
  775. y: 0
  776. };
  777. for (var i = 0; i < calPoints.length; i++) {
  778. var points = calPoints[i];
  779. if (typeof points[index] !== 'undefined' && points[index] !== null) {
  780. validCalPoints.push(points[index]);
  781. }
  782. }
  783. offset.x = Math.round(validCalPoints[0][0].x);
  784. return {
  785. textList: textList,
  786. offset: offset
  787. };
  788. }
  789. function filterSeries(series) {
  790. var tempSeries = [];
  791. for (var i = 0; i < series.length; i++) {
  792. if (series[i].show == true) {
  793. tempSeries.push(series[i]);
  794. }
  795. }
  796. return tempSeries;
  797. }
  798. function findCurrentIndex(currentPoints, calPoints, opts, config) {
  799. var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
  800. var current = {
  801. index: -1,
  802. group: []
  803. };
  804. var spacing = opts.chartData.eachSpacing / 2;
  805. var xAxisPoints = [];
  806. if (calPoints && calPoints.length > 0) {
  807. if (!opts.categories) {
  808. spacing = 0;
  809. } else {
  810. for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {
  811. xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);
  812. }
  813. if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {
  814. xAxisPoints = opts.chartData.xAxisPoints;
  815. }
  816. }
  817. if (isInExactChartArea(currentPoints, opts, config)) {
  818. if (!opts.categories) {
  819. var timePoints = Array(calPoints.length);
  820. for (var _i3 = 0; _i3 < calPoints.length; _i3++) {
  821. timePoints[_i3] = Array(calPoints[_i3].length);
  822. for (var j = 0; j < calPoints[_i3].length; j++) {
  823. timePoints[_i3][j] = Math.abs(calPoints[_i3][j].x - currentPoints.x);
  824. }
  825. }
  826. ;
  827. var pointValue = Array(timePoints.length);
  828. var pointIndex = Array(timePoints.length);
  829. for (var _i4 = 0; _i4 < timePoints.length; _i4++) {
  830. pointValue[_i4] = Math.min.apply(null, timePoints[_i4]);
  831. pointIndex[_i4] = timePoints[_i4].indexOf(pointValue[_i4]);
  832. }
  833. var minValue = Math.min.apply(null, pointValue);
  834. current.index = [];
  835. for (var _i5 = 0; _i5 < pointValue.length; _i5++) {
  836. if (pointValue[_i5] == minValue) {
  837. current.group.push(_i5);
  838. current.index.push(pointIndex[_i5]);
  839. }
  840. }
  841. ;
  842. } else {
  843. xAxisPoints.forEach(function (item, index) {
  844. if (currentPoints.x + offset + spacing > item) {
  845. current.index = index;
  846. }
  847. });
  848. }
  849. }
  850. }
  851. return current;
  852. }
  853. function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {
  854. var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
  855. var current = {
  856. index: -1,
  857. group: []
  858. };
  859. var spacing = opts.chartData.eachSpacing / 2;
  860. var yAxisPoints = opts.chartData.yAxisPoints;
  861. if (calPoints && calPoints.length > 0) {
  862. if (isInExactChartArea(currentPoints, opts, config)) {
  863. yAxisPoints.forEach(function (item, index) {
  864. if (currentPoints.y + offset + spacing > item) {
  865. current.index = index;
  866. }
  867. });
  868. }
  869. }
  870. return current;
  871. }
  872. function findLegendIndex(currentPoints, legendData, opts) {
  873. var currentIndex = -1;
  874. var gap = 0;
  875. if (isInExactLegendArea(currentPoints, legendData.area)) {
  876. var points = legendData.points;
  877. var index = -1;
  878. for (var i = 0, len = points.length; i < len; i++) {
  879. var item = points[i];
  880. for (var j = 0; j < item.length; j++) {
  881. index += 1;
  882. var area = item[j]['area'];
  883. if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {
  884. currentIndex = index;
  885. break;
  886. }
  887. }
  888. }
  889. return currentIndex;
  890. }
  891. return currentIndex;
  892. }
  893. function isInExactLegendArea(currentPoints, area) {
  894. return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;
  895. }
  896. function isInExactChartArea(currentPoints, opts, config) {
  897. return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];
  898. }
  899. function findRadarChartCurrentIndex(currentPoints, radarData, count) {
  900. var eachAngleArea = 2 * Math.PI / count;
  901. var currentIndex = -1;
  902. if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
  903. var fixAngle = function fixAngle(angle) {
  904. if (angle < 0) {
  905. angle += 2 * Math.PI;
  906. }
  907. if (angle > 2 * Math.PI) {
  908. angle -= 2 * Math.PI;
  909. }
  910. return angle;
  911. };
  912. var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
  913. angle = -1 * angle;
  914. if (angle < 0) {
  915. angle += 2 * Math.PI;
  916. }
  917. var angleList = radarData.angleList.map(function (item) {
  918. item = fixAngle(-1 * item);
  919. return item;
  920. });
  921. angleList.forEach(function (item, index) {
  922. var rangeStart = fixAngle(item - eachAngleArea / 2);
  923. var rangeEnd = fixAngle(item + eachAngleArea / 2);
  924. if (rangeEnd < rangeStart) {
  925. rangeEnd += 2 * Math.PI;
  926. }
  927. if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {
  928. currentIndex = index;
  929. }
  930. });
  931. }
  932. return currentIndex;
  933. }
  934. function findFunnelChartCurrentIndex(currentPoints, funnelData) {
  935. var currentIndex = -1;
  936. for (var i = 0, len = funnelData.series.length; i < len; i++) {
  937. var item = funnelData.series[i];
  938. if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {
  939. currentIndex = i;
  940. break;
  941. }
  942. }
  943. return currentIndex;
  944. }
  945. function findWordChartCurrentIndex(currentPoints, wordData) {
  946. var currentIndex = -1;
  947. for (var i = 0, len = wordData.length; i < len; i++) {
  948. var item = wordData[i];
  949. if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {
  950. currentIndex = i;
  951. break;
  952. }
  953. }
  954. return currentIndex;
  955. }
  956. function findMapChartCurrentIndex(currentPoints, opts) {
  957. var currentIndex = -1;
  958. var cData = opts.chartData.mapData;
  959. var data = opts.series;
  960. var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);
  961. var poi = [tmp.x, tmp.y];
  962. for (var i = 0, len = data.length; i < len; i++) {
  963. var item = data[i].geometry.coordinates;
  964. if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {
  965. currentIndex = i;
  966. break;
  967. }
  968. }
  969. return currentIndex;
  970. }
  971. function findRoseChartCurrentIndex(currentPoints, pieData, opts) {
  972. var currentIndex = -1;
  973. var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);
  974. if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
  975. var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
  976. angle = -angle;
  977. if (opts.extra.rose && opts.extra.rose.offsetAngle) {
  978. angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;
  979. }
  980. for (var i = 0, len = series.length; i < len; i++) {
  981. if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {
  982. currentIndex = i;
  983. break;
  984. }
  985. }
  986. }
  987. return currentIndex;
  988. }
  989. function findPieChartCurrentIndex(currentPoints, pieData, opts) {
  990. var currentIndex = -1;
  991. var series = getPieDataPoints(pieData.series);
  992. if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
  993. var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
  994. angle = -angle;
  995. if (opts.extra.pie && opts.extra.pie.offsetAngle) {
  996. angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;
  997. }
  998. if (opts.extra.ring && opts.extra.ring.offsetAngle) {
  999. angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;
  1000. }
  1001. for (var i = 0, len = series.length; i < len; i++) {
  1002. if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {
  1003. currentIndex = i;
  1004. break;
  1005. }
  1006. }
  1007. }
  1008. return currentIndex;
  1009. }
  1010. function isInExactPieChartArea(currentPoints, center, radius) {
  1011. return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
  1012. }
  1013. function splitPoints(points, eachSeries) {
  1014. var newPoints = [];
  1015. var items = [];
  1016. points.forEach(function (item, index) {
  1017. if (eachSeries.connectNulls) {
  1018. if (item !== null) {
  1019. items.push(item);
  1020. }
  1021. } else {
  1022. if (item !== null) {
  1023. items.push(item);
  1024. } else {
  1025. if (items.length) {
  1026. newPoints.push(items);
  1027. }
  1028. items = [];
  1029. }
  1030. }
  1031. });
  1032. if (items.length) {
  1033. newPoints.push(items);
  1034. }
  1035. return newPoints;
  1036. }
  1037. function calLegendData(series, opts, config, chartData, context) {
  1038. var legendData = {
  1039. area: {
  1040. start: {
  1041. x: 0,
  1042. y: 0
  1043. },
  1044. end: {
  1045. x: 0,
  1046. y: 0
  1047. },
  1048. width: 0,
  1049. height: 0,
  1050. wholeWidth: 0,
  1051. wholeHeight: 0
  1052. },
  1053. points: [],
  1054. widthArr: [],
  1055. heightArr: []
  1056. };
  1057. if (opts.legend.show === false) {
  1058. chartData.legendData = legendData;
  1059. return legendData;
  1060. }
  1061. var padding = opts.legend.padding * opts.pix;
  1062. var margin = opts.legend.margin * opts.pix;
  1063. var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;
  1064. var shapeWidth = 15 * opts.pix;
  1065. var shapeRight = 5 * opts.pix;
  1066. var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);
  1067. if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
  1068. var legendList = [];
  1069. var widthCount = 0;
  1070. var widthCountArr = [];
  1071. var currentRow = [];
  1072. for (var i = 0; i < series.length; i++) {
  1073. var item = series[i];
  1074. var legendText = item.legendText ? item.legendText : item.name;
  1075. var itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;
  1076. if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {
  1077. legendList.push(currentRow);
  1078. widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);
  1079. widthCount = itemWidth;
  1080. currentRow = [item];
  1081. } else {
  1082. widthCount += itemWidth;
  1083. currentRow.push(item);
  1084. }
  1085. }
  1086. if (currentRow.length) {
  1087. legendList.push(currentRow);
  1088. widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);
  1089. legendData.widthArr = widthCountArr;
  1090. var legendWidth = Math.max.apply(null, widthCountArr);
  1091. switch (opts.legend.float) {
  1092. case 'left':
  1093. legendData.area.start.x = opts.area[3];
  1094. legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;
  1095. break;
  1096. case 'right':
  1097. legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;
  1098. legendData.area.end.x = opts.width - opts.area[1];
  1099. break;
  1100. default:
  1101. legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;
  1102. legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;
  1103. }
  1104. legendData.area.width = legendWidth + 2 * padding;
  1105. legendData.area.wholeWidth = legendWidth + 2 * padding;
  1106. legendData.area.height = legendList.length * lineHeight + 2 * padding;
  1107. legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;
  1108. legendData.points = legendList;
  1109. }
  1110. } else {
  1111. var len = series.length;
  1112. var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;
  1113. var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);
  1114. legendData.area.height = maxLength * lineHeight + padding * 2;
  1115. legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;
  1116. switch (opts.legend.float) {
  1117. case 'top':
  1118. legendData.area.start.y = opts.area[0] + margin;
  1119. legendData.area.end.y = opts.area[0] + margin + legendData.area.height;
  1120. break;
  1121. case 'bottom':
  1122. legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;
  1123. legendData.area.end.y = opts.height - opts.area[2] - margin;
  1124. break;
  1125. default:
  1126. legendData.area.start.y = (opts.height - legendData.area.height) / 2;
  1127. legendData.area.end.y = (opts.height + legendData.area.height) / 2;
  1128. }
  1129. var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);
  1130. var _currentRow = [];
  1131. for (var _i6 = 0; _i6 < lineNum; _i6++) {
  1132. var temp = series.slice(_i6 * maxLength, _i6 * maxLength + maxLength);
  1133. _currentRow.push(temp);
  1134. }
  1135. legendData.points = _currentRow;
  1136. if (_currentRow.length) {
  1137. for (var _i7 = 0; _i7 < _currentRow.length; _i7++) {
  1138. var _item = _currentRow[_i7];
  1139. var maxWidth = 0;
  1140. for (var j = 0; j < _item.length; j++) {
  1141. var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;
  1142. if (_itemWidth > maxWidth) {
  1143. maxWidth = _itemWidth;
  1144. }
  1145. }
  1146. legendData.widthArr.push(maxWidth);
  1147. legendData.heightArr.push(_item.length * lineHeight + padding * 2);
  1148. }
  1149. var _legendWidth = 0;
  1150. for (var _i8 = 0; _i8 < legendData.widthArr.length; _i8++) {
  1151. _legendWidth += legendData.widthArr[_i8];
  1152. }
  1153. legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;
  1154. legendData.area.wholeWidth = legendData.area.width + padding;
  1155. }
  1156. }
  1157. switch (opts.legend.position) {
  1158. case 'top':
  1159. legendData.area.start.y = opts.area[0] + margin;
  1160. legendData.area.end.y = opts.area[0] + margin + legendData.area.height;
  1161. break;
  1162. case 'bottom':
  1163. legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;
  1164. legendData.area.end.y = opts.height - opts.area[2] - margin;
  1165. break;
  1166. case 'left':
  1167. legendData.area.start.x = opts.area[3];
  1168. legendData.area.end.x = opts.area[3] + legendData.area.width;
  1169. break;
  1170. case 'right':
  1171. legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;
  1172. legendData.area.end.x = opts.width - opts.area[1];
  1173. break;
  1174. }
  1175. chartData.legendData = legendData;
  1176. return legendData;
  1177. }
  1178. function calCategoriesData(categories, opts, config, eachSpacing, context) {
  1179. var result = {
  1180. angle: 0,
  1181. xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix
  1182. };
  1183. var fontSize = opts.xAxis.fontSize * opts.pix;
  1184. var categoriesTextLenth = categories.map(function (item, index) {
  1185. var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;
  1186. return measureText(String(xitem), fontSize, context);
  1187. });
  1188. var maxTextLength = Math.max.apply(this, categoriesTextLenth);
  1189. if (opts.xAxis.rotateLabel == true) {
  1190. result.angle = opts.xAxis.rotateAngle * Math.PI / 180;
  1191. var tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle));
  1192. tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight;
  1193. result.xAxisHeight = tempHeight;
  1194. }
  1195. if (opts.enableScroll && opts.xAxis.scrollShow) {
  1196. result.xAxisHeight += 6 * opts.pix;
  1197. }
  1198. if (opts.xAxis.disabled) {
  1199. result.xAxisHeight = 0;
  1200. }
  1201. return result;
  1202. }
  1203. function getXAxisTextList(series, opts, config, stack) {
  1204. var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
  1205. var data;
  1206. if (stack == 'stack') {
  1207. data = dataCombineStack(series, opts.categories.length);
  1208. } else {
  1209. data = dataCombine(series);
  1210. }
  1211. var sorted = [];
  1212. // remove null from data
  1213. data = data.filter(function (item) {
  1214. //return item !== null;
  1215. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1216. if (item.constructor.toString().indexOf('Array') > -1) {
  1217. return item !== null;
  1218. } else {
  1219. return item.value !== null;
  1220. }
  1221. } else {
  1222. return item !== null;
  1223. }
  1224. });
  1225. data.map(function (item) {
  1226. if ((0, _typeof2.default)(item) === 'object') {
  1227. if (item.constructor.toString().indexOf('Array') > -1) {
  1228. if (opts.type == 'candle') {
  1229. item.map(function (subitem) {
  1230. sorted.push(subitem);
  1231. });
  1232. } else {
  1233. sorted.push(item[0]);
  1234. }
  1235. } else {
  1236. sorted.push(item.value);
  1237. }
  1238. } else {
  1239. sorted.push(item);
  1240. }
  1241. });
  1242. var minData = 0;
  1243. var maxData = 0;
  1244. if (sorted.length > 0) {
  1245. minData = Math.min.apply(this, sorted);
  1246. maxData = Math.max.apply(this, sorted);
  1247. }
  1248. //为了兼容v1.9.0之前的项目
  1249. if (index > -1) {
  1250. if (typeof opts.xAxis.data[index].min === 'number') {
  1251. minData = Math.min(opts.xAxis.data[index].min, minData);
  1252. }
  1253. if (typeof opts.xAxis.data[index].max === 'number') {
  1254. maxData = Math.max(opts.xAxis.data[index].max, maxData);
  1255. }
  1256. } else {
  1257. if (typeof opts.xAxis.min === 'number') {
  1258. minData = Math.min(opts.xAxis.min, minData);
  1259. }
  1260. if (typeof opts.xAxis.max === 'number') {
  1261. maxData = Math.max(opts.xAxis.max, maxData);
  1262. }
  1263. }
  1264. if (minData === maxData) {
  1265. var rangeSpan = maxData || 10;
  1266. maxData += rangeSpan;
  1267. }
  1268. //var dataRange = getDataRange(minData, maxData);
  1269. var minRange = minData;
  1270. var maxRange = maxData;
  1271. var range = [];
  1272. var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;
  1273. for (var i = 0; i <= opts.xAxis.splitNumber; i++) {
  1274. range.push(minRange + eachRange * i);
  1275. }
  1276. return range;
  1277. }
  1278. function calXAxisData(series, opts, config, context) {
  1279. //堆叠图重算Y轴
  1280. var columnstyle = assign({}, {
  1281. type: ""
  1282. }, opts.extra.bar);
  1283. var result = {
  1284. angle: 0,
  1285. xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix
  1286. };
  1287. result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);
  1288. result.rangesFormat = result.ranges.map(function (item) {
  1289. //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);
  1290. item = util.toFixed(item, 2);
  1291. return item;
  1292. });
  1293. var xAxisScaleValues = result.ranges.map(function (item) {
  1294. // 如果刻度值是浮点数,则保留两位小数
  1295. item = util.toFixed(item, 2);
  1296. // 若有自定义格式则调用自定义的格式化函数
  1297. //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;
  1298. return item;
  1299. });
  1300. result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));
  1301. // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长
  1302. var eachSpacing = result.eachSpacing;
  1303. var textLength = xAxisScaleValues.map(function (item) {
  1304. return measureText(item, opts.xAxis.fontSize * opts.pix, context);
  1305. });
  1306. if (opts.xAxis.disabled === true) {
  1307. result.xAxisHeight = 0;
  1308. }
  1309. return result;
  1310. }
  1311. function getRadarDataPoints(angleList, center, radius, series, opts) {
  1312. var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  1313. var radarOption = opts.extra.radar || {};
  1314. radarOption.max = radarOption.max || 0;
  1315. var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
  1316. var data = [];
  1317. var _loop2 = function _loop2(i) {
  1318. var each = series[i];
  1319. var listItem = {};
  1320. listItem.color = each.color;
  1321. listItem.legendShape = each.legendShape;
  1322. listItem.pointShape = each.pointShape;
  1323. listItem.data = [];
  1324. each.data.forEach(function (item, index) {
  1325. var tmp = {};
  1326. tmp.angle = angleList[index];
  1327. tmp.proportion = item / maxData;
  1328. tmp.value = item;
  1329. tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);
  1330. listItem.data.push(tmp);
  1331. });
  1332. data.push(listItem);
  1333. };
  1334. for (var i = 0; i < series.length; i++) {
  1335. _loop2(i);
  1336. }
  1337. return data;
  1338. }
  1339. function getPieDataPoints(series, radius) {
  1340. var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  1341. var count = 0;
  1342. var _start_ = 0;
  1343. for (var i = 0; i < series.length; i++) {
  1344. var item = series[i];
  1345. item.data = item.data === null ? 0 : item.data;
  1346. count += item.data;
  1347. }
  1348. for (var _i9 = 0; _i9 < series.length; _i9++) {
  1349. var _item2 = series[_i9];
  1350. _item2.data = _item2.data === null ? 0 : _item2.data;
  1351. if (count === 0) {
  1352. _item2._proportion_ = 1 / series.length * process;
  1353. } else {
  1354. _item2._proportion_ = _item2.data / count * process;
  1355. }
  1356. _item2._radius_ = radius;
  1357. }
  1358. for (var _i10 = 0; _i10 < series.length; _i10++) {
  1359. var _item3 = series[_i10];
  1360. _item3._start_ = _start_;
  1361. _start_ += 2 * _item3._proportion_ * Math.PI;
  1362. }
  1363. return series;
  1364. }
  1365. function getFunnelDataPoints(series, radius, option, eachSpacing) {
  1366. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  1367. for (var i = 0; i < series.length; i++) {
  1368. if (option.type == 'funnel') {
  1369. series[i].radius = series[i].data / series[0].data * radius * process;
  1370. } else {
  1371. series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;
  1372. }
  1373. series[i]._proportion_ = series[i].data / series[0].data;
  1374. }
  1375. // if(option.type !== 'pyramid'){
  1376. // series.reverse();
  1377. // }
  1378. return series;
  1379. }
  1380. function getRoseDataPoints(series, type, minRadius, radius) {
  1381. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  1382. var count = 0;
  1383. var _start_ = 0;
  1384. var dataArr = [];
  1385. for (var i = 0; i < series.length; i++) {
  1386. var item = series[i];
  1387. item.data = item.data === null ? 0 : item.data;
  1388. count += item.data;
  1389. dataArr.push(item.data);
  1390. }
  1391. var minData = Math.min.apply(null, dataArr);
  1392. var maxData = Math.max.apply(null, dataArr);
  1393. var radiusLength = radius - minRadius;
  1394. for (var _i11 = 0; _i11 < series.length; _i11++) {
  1395. var _item4 = series[_i11];
  1396. _item4.data = _item4.data === null ? 0 : _item4.data;
  1397. if (count === 0) {
  1398. _item4._proportion_ = 1 / series.length * process;
  1399. _item4._rose_proportion_ = 1 / series.length * process;
  1400. } else {
  1401. _item4._proportion_ = _item4.data / count * process;
  1402. if (type == 'area') {
  1403. _item4._rose_proportion_ = 1 / series.length * process;
  1404. } else {
  1405. _item4._rose_proportion_ = _item4.data / count * process;
  1406. }
  1407. }
  1408. _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;
  1409. }
  1410. for (var _i12 = 0; _i12 < series.length; _i12++) {
  1411. var _item5 = series[_i12];
  1412. _item5._start_ = _start_;
  1413. _start_ += 2 * _item5._rose_proportion_ * Math.PI;
  1414. }
  1415. return series;
  1416. }
  1417. function getArcbarDataPoints(series, arcbarOption) {
  1418. var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  1419. if (process == 1) {
  1420. process = 0.999999;
  1421. }
  1422. for (var i = 0; i < series.length; i++) {
  1423. var item = series[i];
  1424. item.data = item.data === null ? 0 : item.data;
  1425. var totalAngle = void 0;
  1426. if (arcbarOption.type == 'circle') {
  1427. totalAngle = 2;
  1428. } else {
  1429. if (arcbarOption.direction == 'ccw') {
  1430. if (arcbarOption.startAngle < arcbarOption.endAngle) {
  1431. totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle;
  1432. } else {
  1433. totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
  1434. }
  1435. } else {
  1436. if (arcbarOption.endAngle < arcbarOption.startAngle) {
  1437. totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
  1438. } else {
  1439. totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
  1440. }
  1441. }
  1442. }
  1443. item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
  1444. if (arcbarOption.direction == 'ccw') {
  1445. item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process;
  1446. }
  1447. if (item._proportion_ >= 2) {
  1448. item._proportion_ = item._proportion_ % 2;
  1449. }
  1450. }
  1451. return series;
  1452. }
  1453. function getGaugeArcbarDataPoints(series, arcbarOption) {
  1454. var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  1455. if (process == 1) {
  1456. process = 0.999999;
  1457. }
  1458. for (var i = 0; i < series.length; i++) {
  1459. var item = series[i];
  1460. item.data = item.data === null ? 0 : item.data;
  1461. var totalAngle = void 0;
  1462. if (arcbarOption.type == 'circle') {
  1463. totalAngle = 2;
  1464. } else {
  1465. if (arcbarOption.endAngle < arcbarOption.startAngle) {
  1466. totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
  1467. } else {
  1468. totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
  1469. }
  1470. }
  1471. item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
  1472. if (item._proportion_ >= 2) {
  1473. item._proportion_ = item._proportion_ % 2;
  1474. }
  1475. }
  1476. return series;
  1477. }
  1478. function getGaugeAxisPoints(categories, startAngle, endAngle) {
  1479. var totalAngle;
  1480. if (endAngle < startAngle) {
  1481. totalAngle = 2 + endAngle - startAngle;
  1482. } else {
  1483. totalAngle = startAngle - endAngle;
  1484. }
  1485. var tempStartAngle = startAngle;
  1486. for (var i = 0; i < categories.length; i++) {
  1487. categories[i].value = categories[i].value === null ? 0 : categories[i].value;
  1488. categories[i]._startAngle_ = tempStartAngle;
  1489. categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;
  1490. if (categories[i]._endAngle_ >= 2) {
  1491. categories[i]._endAngle_ = categories[i]._endAngle_ % 2;
  1492. }
  1493. tempStartAngle = categories[i]._endAngle_;
  1494. }
  1495. return categories;
  1496. }
  1497. function getGaugeDataPoints(series, categories, gaugeOption) {
  1498. var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
  1499. for (var i = 0; i < series.length; i++) {
  1500. var item = series[i];
  1501. item.data = item.data === null ? 0 : item.data;
  1502. if (gaugeOption.pointer.color == 'auto') {
  1503. for (var _i13 = 0; _i13 < categories.length; _i13++) {
  1504. if (item.data <= categories[_i13].value) {
  1505. item.color = categories[_i13].color;
  1506. break;
  1507. }
  1508. }
  1509. } else {
  1510. item.color = gaugeOption.pointer.color;
  1511. }
  1512. var totalAngle = void 0;
  1513. if (gaugeOption.endAngle < gaugeOption.startAngle) {
  1514. totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
  1515. } else {
  1516. totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
  1517. }
  1518. item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;
  1519. item._oldAngle_ = gaugeOption.oldAngle;
  1520. if (gaugeOption.oldAngle < gaugeOption.endAngle) {
  1521. item._oldAngle_ += 2;
  1522. }
  1523. if (item.data >= gaugeOption.oldData) {
  1524. item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;
  1525. } else {
  1526. item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;
  1527. }
  1528. if (item._proportion_ >= 2) {
  1529. item._proportion_ = item._proportion_ % 2;
  1530. }
  1531. }
  1532. return series;
  1533. }
  1534. function getPieTextMaxLength(series, config, context, opts) {
  1535. series = getPieDataPoints(series);
  1536. var maxLength = 0;
  1537. for (var i = 0; i < series.length; i++) {
  1538. var item = series[i];
  1539. var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
  1540. maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));
  1541. }
  1542. return maxLength;
  1543. }
  1544. function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
  1545. return points.map(function (item) {
  1546. if (item === null) {
  1547. return null;
  1548. }
  1549. var seriesGap = 0;
  1550. var categoryGap = 0;
  1551. if (opts.type == 'mix') {
  1552. seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;
  1553. categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;
  1554. } else {
  1555. seriesGap = opts.extra.column.seriesGap * opts.pix || 0;
  1556. categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
  1557. }
  1558. seriesGap = Math.min(seriesGap, eachSpacing / columnLen);
  1559. categoryGap = Math.min(categoryGap, eachSpacing / columnLen);
  1560. item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);
  1561. if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {
  1562. item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);
  1563. }
  1564. if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
  1565. item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
  1566. }
  1567. if (item.width <= 0) {
  1568. item.width = 1;
  1569. }
  1570. item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);
  1571. return item;
  1572. });
  1573. }
  1574. function fixBarData(points, eachSpacing, columnLen, index, config, opts) {
  1575. return points.map(function (item) {
  1576. if (item === null) {
  1577. return null;
  1578. }
  1579. var seriesGap = 0;
  1580. var categoryGap = 0;
  1581. seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;
  1582. categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;
  1583. seriesGap = Math.min(seriesGap, eachSpacing / columnLen);
  1584. categoryGap = Math.min(categoryGap, eachSpacing / columnLen);
  1585. item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);
  1586. if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {
  1587. item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);
  1588. }
  1589. if (item.width <= 0) {
  1590. item.width = 1;
  1591. }
  1592. item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);
  1593. return item;
  1594. });
  1595. }
  1596. function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {
  1597. var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
  1598. return points.map(function (item) {
  1599. if (item === null) {
  1600. return null;
  1601. }
  1602. item.width = eachSpacing - 2 * categoryGap;
  1603. if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
  1604. item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
  1605. }
  1606. if (index > 0) {
  1607. item.width -= border;
  1608. }
  1609. return item;
  1610. });
  1611. }
  1612. function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {
  1613. var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
  1614. return points.map(function (item, indexn) {
  1615. if (item === null) {
  1616. return null;
  1617. }
  1618. item.width = Math.ceil(eachSpacing - 2 * categoryGap);
  1619. if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
  1620. item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
  1621. }
  1622. if (item.width <= 0) {
  1623. item.width = 1;
  1624. }
  1625. return item;
  1626. });
  1627. }
  1628. function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {
  1629. var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;
  1630. return points.map(function (item, indexn) {
  1631. if (item === null) {
  1632. return null;
  1633. }
  1634. item.width = Math.ceil(eachSpacing - 2 * categoryGap);
  1635. if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {
  1636. item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);
  1637. }
  1638. if (item.width <= 0) {
  1639. item.width = 1;
  1640. }
  1641. return item;
  1642. });
  1643. }
  1644. function getXAxisPoints(categories, opts, config) {
  1645. var spacingValid = opts.width - opts.area[1] - opts.area[3];
  1646. var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;
  1647. if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {
  1648. dataCount -= 1;
  1649. }
  1650. var widthRatio = 0;
  1651. if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
  1652. if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
  1653. widthRatio = opts.extra.mount.widthRatio - 1;
  1654. dataCount += widthRatio;
  1655. }
  1656. var eachSpacing = spacingValid / dataCount;
  1657. var xAxisPoints = [];
  1658. var startX = opts.area[3];
  1659. var endX = opts.width - opts.area[1];
  1660. categories.forEach(function (item, index) {
  1661. xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);
  1662. });
  1663. if (opts.xAxis.boundaryGap !== 'justify') {
  1664. if (opts.enableScroll === true) {
  1665. xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);
  1666. } else {
  1667. xAxisPoints.push(endX);
  1668. }
  1669. }
  1670. return {
  1671. xAxisPoints: xAxisPoints,
  1672. startX: startX,
  1673. endX: endX,
  1674. eachSpacing: eachSpacing
  1675. };
  1676. }
  1677. function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
  1678. var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  1679. var points = [];
  1680. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1681. data.forEach(function (item, index) {
  1682. if (item === null) {
  1683. points.push(null);
  1684. } else {
  1685. var cPoints = [];
  1686. item.forEach(function (items, indexs) {
  1687. var point = {};
  1688. point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
  1689. var value = items.value || items;
  1690. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1691. height *= process;
  1692. point.y = opts.height - Math.round(height) - opts.area[2];
  1693. cPoints.push(point);
  1694. });
  1695. points.push(cPoints);
  1696. }
  1697. });
  1698. return points;
  1699. }
  1700. function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
  1701. var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  1702. var boundaryGap = 'center';
  1703. if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {
  1704. boundaryGap = opts.xAxis.boundaryGap;
  1705. }
  1706. var points = [];
  1707. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1708. var validWidth = opts.width - opts.area[1] - opts.area[3];
  1709. data.forEach(function (item, index) {
  1710. if (item === null) {
  1711. points.push(null);
  1712. } else {
  1713. var point = {};
  1714. point.color = item.color;
  1715. point.x = xAxisPoints[index];
  1716. var value = item;
  1717. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1718. if (item.constructor.toString().indexOf('Array') > -1) {
  1719. var xranges, xminRange, xmaxRange;
  1720. xranges = [].concat(opts.chartData.xAxisData.ranges);
  1721. xminRange = xranges.shift();
  1722. xmaxRange = xranges.pop();
  1723. value = item[1];
  1724. point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
  1725. if (opts.type == 'bubble') {
  1726. point.r = item[2];
  1727. point.t = item[3];
  1728. }
  1729. } else {
  1730. value = item.value;
  1731. }
  1732. }
  1733. if (boundaryGap == 'center') {
  1734. point.x += eachSpacing / 2;
  1735. }
  1736. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1737. height *= process;
  1738. point.y = opts.height - height - opts.area[2];
  1739. points.push(point);
  1740. }
  1741. });
  1742. return points;
  1743. }
  1744. function getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process) {
  1745. var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
  1746. var boundaryGap = opts.xAxis.boundaryGap;
  1747. var points = [];
  1748. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1749. var validWidth = opts.width - opts.area[1] - opts.area[3];
  1750. data.forEach(function (item, index) {
  1751. if (item === null) {
  1752. points.push(null);
  1753. } else {
  1754. var point = {};
  1755. point.color = item.color;
  1756. if (lineOption.animation == 'vertical') {
  1757. point.x = xAxisPoints[index];
  1758. var value = item;
  1759. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1760. if (item.constructor.toString().indexOf('Array') > -1) {
  1761. var xranges, xminRange, xmaxRange;
  1762. xranges = [].concat(opts.chartData.xAxisData.ranges);
  1763. xminRange = xranges.shift();
  1764. xmaxRange = xranges.pop();
  1765. value = item[1];
  1766. point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
  1767. } else {
  1768. value = item.value;
  1769. }
  1770. }
  1771. if (boundaryGap == 'center') {
  1772. point.x += eachSpacing / 2;
  1773. }
  1774. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1775. height *= process;
  1776. point.y = opts.height - height - opts.area[2];
  1777. points.push(point);
  1778. } else {
  1779. point.x = xAxisPoints[0] + eachSpacing * index * process;
  1780. var value = item;
  1781. if (boundaryGap == 'center') {
  1782. point.x += eachSpacing / 2;
  1783. }
  1784. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1785. point.y = opts.height - height - opts.area[2];
  1786. points.push(point);
  1787. }
  1788. }
  1789. });
  1790. return points;
  1791. }
  1792. function getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process) {
  1793. var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
  1794. var points = [];
  1795. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1796. var validWidth = opts.width - opts.area[1] - opts.area[3];
  1797. data.forEach(function (item, index) {
  1798. if (item === null) {
  1799. points.push(null);
  1800. } else {
  1801. var point = {};
  1802. point.color = item.color;
  1803. point.x = xAxisPoints[index];
  1804. var value = item;
  1805. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1806. if (item.constructor.toString().indexOf('Array') > -1) {
  1807. var xranges, xminRange, xmaxRange;
  1808. xranges = [].concat(opts.chartData.xAxisData.ranges);
  1809. xminRange = xranges.shift();
  1810. xmaxRange = xranges.pop();
  1811. value = item[1];
  1812. point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
  1813. } else {
  1814. value = item.value;
  1815. }
  1816. }
  1817. point.x += eachSpacing / 2;
  1818. var height = validHeight * (value * process - minRange) / (maxRange - minRange);
  1819. point.y = opts.height - height - opts.area[2];
  1820. points.push(point);
  1821. }
  1822. });
  1823. return points;
  1824. }
  1825. function getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) {
  1826. var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
  1827. var points = [];
  1828. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1829. var validWidth = opts.width - opts.area[1] - opts.area[3];
  1830. var mountWidth = eachSpacing * mountOption.widthRatio;
  1831. series.forEach(function (item, index) {
  1832. if (item === null) {
  1833. points.push(null);
  1834. } else {
  1835. var point = {};
  1836. point.color = item.color;
  1837. point.x = xAxisPoints[index];
  1838. point.x += eachSpacing / 2;
  1839. var value = item.data;
  1840. var height = validHeight * (value * process - minRange) / (maxRange - minRange);
  1841. point.y = opts.height - height - opts.area[2];
  1842. point.value = value;
  1843. point.width = mountWidth;
  1844. points.push(point);
  1845. }
  1846. });
  1847. return points;
  1848. }
  1849. function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {
  1850. var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  1851. var points = [];
  1852. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1853. var validWidth = opts.width - opts.area[1] - opts.area[3];
  1854. data.forEach(function (item, index) {
  1855. if (item === null) {
  1856. points.push(null);
  1857. } else {
  1858. var point = {};
  1859. point.color = item.color;
  1860. point.y = yAxisPoints[index];
  1861. var value = item;
  1862. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1863. value = item.value;
  1864. }
  1865. var height = validWidth * (value - minRange) / (maxRange - minRange);
  1866. height *= process;
  1867. point.height = height;
  1868. point.value = value;
  1869. point.x = height + opts.area[3];
  1870. points.push(point);
  1871. }
  1872. });
  1873. return points;
  1874. }
  1875. function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
  1876. var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
  1877. var points = [];
  1878. var validHeight = opts.height - opts.area[0] - opts.area[2];
  1879. data.forEach(function (item, index) {
  1880. if (item === null) {
  1881. points.push(null);
  1882. } else {
  1883. var point = {};
  1884. point.color = item.color;
  1885. point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
  1886. if (seriesIndex > 0) {
  1887. var value = 0;
  1888. for (var i = 0; i <= seriesIndex; i++) {
  1889. value += stackSeries[i].data[index];
  1890. }
  1891. var value0 = value - item;
  1892. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1893. var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
  1894. } else {
  1895. var value = item;
  1896. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1897. value = item.value;
  1898. }
  1899. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1900. var height0 = 0;
  1901. }
  1902. var heightc = height0;
  1903. height *= process;
  1904. heightc *= process;
  1905. point.y = opts.height - Math.round(height) - opts.area[2];
  1906. point.y0 = opts.height - Math.round(heightc) - opts.area[2];
  1907. points.push(point);
  1908. }
  1909. });
  1910. return points;
  1911. }
  1912. function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
  1913. var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
  1914. var points = [];
  1915. var validHeight = opts.width - opts.area[1] - opts.area[3];
  1916. data.forEach(function (item, index) {
  1917. if (item === null) {
  1918. points.push(null);
  1919. } else {
  1920. var point = {};
  1921. point.color = item.color;
  1922. point.y = yAxisPoints[index];
  1923. if (seriesIndex > 0) {
  1924. var value = 0;
  1925. for (var i = 0; i <= seriesIndex; i++) {
  1926. value += stackSeries[i].data[index];
  1927. }
  1928. var value0 = value - item;
  1929. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1930. var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
  1931. } else {
  1932. var value = item;
  1933. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1934. value = item.value;
  1935. }
  1936. var height = validHeight * (value - minRange) / (maxRange - minRange);
  1937. var height0 = 0;
  1938. }
  1939. var heightc = height0;
  1940. height *= process;
  1941. heightc *= process;
  1942. point.height = height - heightc;
  1943. point.x = opts.area[3] + height;
  1944. point.x0 = opts.area[3] + heightc;
  1945. points.push(point);
  1946. }
  1947. });
  1948. return points;
  1949. }
  1950. function getYAxisTextList(series, opts, config, stack, yData) {
  1951. var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;
  1952. var data;
  1953. if (stack == 'stack') {
  1954. data = dataCombineStack(series, opts.categories.length);
  1955. } else {
  1956. data = dataCombine(series);
  1957. }
  1958. var sorted = [];
  1959. // remove null from data
  1960. data = data.filter(function (item) {
  1961. //return item !== null;
  1962. if ((0, _typeof2.default)(item) === 'object' && item !== null) {
  1963. if (item.constructor.toString().indexOf('Array') > -1) {
  1964. return item !== null;
  1965. } else {
  1966. return item.value !== null;
  1967. }
  1968. } else {
  1969. return item !== null;
  1970. }
  1971. });
  1972. data.map(function (item) {
  1973. if ((0, _typeof2.default)(item) === 'object') {
  1974. if (item.constructor.toString().indexOf('Array') > -1) {
  1975. if (opts.type == 'candle') {
  1976. item.map(function (subitem) {
  1977. sorted.push(subitem);
  1978. });
  1979. } else {
  1980. sorted.push(item[1]);
  1981. }
  1982. } else {
  1983. sorted.push(item.value);
  1984. }
  1985. } else {
  1986. sorted.push(item);
  1987. }
  1988. });
  1989. var minData = yData.min || 0;
  1990. var maxData = yData.max || 0;
  1991. if (sorted.length > 0) {
  1992. minData = Math.min.apply(this, sorted);
  1993. maxData = Math.max.apply(this, sorted);
  1994. }
  1995. if (minData === maxData) {
  1996. if (maxData == 0) {
  1997. maxData = 10;
  1998. } else {
  1999. minData = 0;
  2000. }
  2001. }
  2002. var dataRange = getDataRange(minData, maxData);
  2003. var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;
  2004. var maxRange = yData.max === undefined || yData.max === null ? dataRange.maxRange : yData.max;
  2005. var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;
  2006. var range = [];
  2007. for (var i = 0; i <= opts.yAxis.splitNumber; i++) {
  2008. range.push(minRange + eachRange * i);
  2009. }
  2010. return range.reverse();
  2011. }
  2012. function calYAxisData(series, opts, config, context) {
  2013. //堆叠图重算Y轴
  2014. var columnstyle = assign({}, {
  2015. type: ""
  2016. }, opts.extra.column);
  2017. //如果是多Y轴,重新计算
  2018. var YLength = opts.yAxis.data.length;
  2019. var newSeries = new Array(YLength);
  2020. if (YLength > 0) {
  2021. for (var i = 0; i < YLength; i++) {
  2022. newSeries[i] = [];
  2023. for (var j = 0; j < series.length; j++) {
  2024. if (series[j].index == i) {
  2025. newSeries[i].push(series[j]);
  2026. }
  2027. }
  2028. }
  2029. var rangesArr = new Array(YLength);
  2030. var rangesFormatArr = new Array(YLength);
  2031. var yAxisWidthArr = new Array(YLength);
  2032. var _loop3 = function _loop3(_i14) {
  2033. var yData = opts.yAxis.data[_i14];
  2034. //如果总开关不显示,强制每个Y轴为不显示
  2035. if (opts.yAxis.disabled == true) {
  2036. yData.disabled = true;
  2037. }
  2038. if (yData.type === 'categories') {
  2039. if (!yData.formatter) {
  2040. yData.formatter = function (val, index, opts) {
  2041. return val + (yData.unit || '');
  2042. };
  2043. }
  2044. yData.categories = yData.categories || opts.categories;
  2045. rangesArr[_i14] = yData.categories;
  2046. } else {
  2047. if (!yData.formatter) {
  2048. yData.formatter = function (val, index, opts) {
  2049. return util.toFixed(val, yData.tofix || 0) + (yData.unit || '');
  2050. };
  2051. }
  2052. rangesArr[_i14] = getYAxisTextList(newSeries[_i14], opts, config, columnstyle.type, yData, _i14);
  2053. }
  2054. var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;
  2055. yAxisWidthArr[_i14] = {
  2056. position: yData.position ? yData.position : 'left',
  2057. width: 0
  2058. };
  2059. rangesFormatArr[_i14] = rangesArr[_i14].map(function (items, index) {
  2060. items = yData.formatter(items, index, opts);
  2061. yAxisWidthArr[_i14].width = Math.max(yAxisWidthArr[_i14].width, measureText(items, yAxisFontSizes, context) + 5);
  2062. return items;
  2063. });
  2064. var calibration = yData.calibration ? 4 * opts.pix : 0;
  2065. yAxisWidthArr[_i14].width += calibration + 3 * opts.pix;
  2066. if (yData.disabled === true) {
  2067. yAxisWidthArr[_i14].width = 0;
  2068. }
  2069. };
  2070. for (var _i14 = 0; _i14 < YLength; _i14++) {
  2071. _loop3(_i14);
  2072. }
  2073. } else {
  2074. var rangesArr = new Array(1);
  2075. var rangesFormatArr = new Array(1);
  2076. var yAxisWidthArr = new Array(1);
  2077. if (opts.type === 'bar') {
  2078. rangesArr[0] = opts.categories;
  2079. if (!opts.yAxis.formatter) {
  2080. opts.yAxis.formatter = function (val, index, opts) {
  2081. return val + (opts.yAxis.unit || '');
  2082. };
  2083. }
  2084. } else {
  2085. if (!opts.yAxis.formatter) {
  2086. opts.yAxis.formatter = function (val, index, opts) {
  2087. return val.toFixed(opts.yAxis.tofix) + (opts.yAxis.unit || '');
  2088. };
  2089. }
  2090. rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});
  2091. }
  2092. yAxisWidthArr[0] = {
  2093. position: 'left',
  2094. width: 0
  2095. };
  2096. var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;
  2097. rangesFormatArr[0] = rangesArr[0].map(function (item, index) {
  2098. item = opts.yAxis.formatter(item, index, opts);
  2099. yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);
  2100. return item;
  2101. });
  2102. yAxisWidthArr[0].width += 3 * opts.pix;
  2103. if (opts.yAxis.disabled === true) {
  2104. yAxisWidthArr[0] = {
  2105. position: 'left',
  2106. width: 0
  2107. };
  2108. opts.yAxis.data[0] = {
  2109. disabled: true
  2110. };
  2111. } else {
  2112. opts.yAxis.data[0] = {
  2113. disabled: false,
  2114. position: 'left',
  2115. max: opts.yAxis.max,
  2116. min: opts.yAxis.min,
  2117. formatter: opts.yAxis.formatter
  2118. };
  2119. if (opts.type === 'bar') {
  2120. opts.yAxis.data[0].categories = opts.categories;
  2121. opts.yAxis.data[0].type = 'categories';
  2122. }
  2123. }
  2124. }
  2125. return {
  2126. rangesFormat: rangesFormatArr,
  2127. ranges: rangesArr,
  2128. yAxisWidth: yAxisWidthArr
  2129. };
  2130. }
  2131. function calTooltipYAxisData(point, series, opts, config, eachSpacing) {
  2132. var ranges = [].concat(opts.chartData.yAxisData.ranges);
  2133. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  2134. var minAxis = opts.area[0];
  2135. var items = [];
  2136. for (var i = 0; i < ranges.length; i++) {
  2137. var maxVal = Math.max.apply(this, ranges[i]);
  2138. var minVal = Math.min.apply(this, ranges[i]);
  2139. var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;
  2140. item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0);
  2141. items.push(String(item));
  2142. }
  2143. return items;
  2144. }
  2145. function calMarkLineData(points, opts) {
  2146. var minRange, maxRange;
  2147. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  2148. for (var i = 0; i < points.length; i++) {
  2149. points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;
  2150. var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);
  2151. minRange = range.pop();
  2152. maxRange = range.shift();
  2153. var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);
  2154. points[i].y = opts.height - Math.round(height) - opts.area[2];
  2155. }
  2156. return points;
  2157. }
  2158. function contextRotate(context, opts) {
  2159. if (opts.rotateLock !== true) {
  2160. context.translate(opts.height, 0);
  2161. context.rotate(90 * Math.PI / 180);
  2162. } else if (opts._rotate_ !== true) {
  2163. context.translate(opts.height, 0);
  2164. context.rotate(90 * Math.PI / 180);
  2165. opts._rotate_ = true;
  2166. }
  2167. }
  2168. function drawPointShape(points, color, shape, context, opts) {
  2169. context.beginPath();
  2170. if (opts.dataPointShapeType == 'hollow') {
  2171. context.setStrokeStyle(color);
  2172. context.setFillStyle(opts.background);
  2173. context.setLineWidth(2 * opts.pix);
  2174. } else {
  2175. context.setStrokeStyle("#ffffff");
  2176. context.setFillStyle(color);
  2177. context.setLineWidth(1 * opts.pix);
  2178. }
  2179. if (shape === 'diamond') {
  2180. points.forEach(function (item, index) {
  2181. if (item !== null) {
  2182. context.moveTo(item.x, item.y - 4.5);
  2183. context.lineTo(item.x - 4.5, item.y);
  2184. context.lineTo(item.x, item.y + 4.5);
  2185. context.lineTo(item.x + 4.5, item.y);
  2186. context.lineTo(item.x, item.y - 4.5);
  2187. }
  2188. });
  2189. } else if (shape === 'circle') {
  2190. points.forEach(function (item, index) {
  2191. if (item !== null) {
  2192. context.moveTo(item.x + 2.5 * opts.pix, item.y);
  2193. context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
  2194. }
  2195. });
  2196. } else if (shape === 'square') {
  2197. points.forEach(function (item, index) {
  2198. if (item !== null) {
  2199. context.moveTo(item.x - 3.5, item.y - 3.5);
  2200. context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
  2201. }
  2202. });
  2203. } else if (shape === 'triangle') {
  2204. points.forEach(function (item, index) {
  2205. if (item !== null) {
  2206. context.moveTo(item.x, item.y - 4.5);
  2207. context.lineTo(item.x - 4.5, item.y + 4.5);
  2208. context.lineTo(item.x + 4.5, item.y + 4.5);
  2209. context.lineTo(item.x, item.y - 4.5);
  2210. }
  2211. });
  2212. } else if (shape === 'none') {
  2213. return;
  2214. }
  2215. context.closePath();
  2216. context.fill();
  2217. context.stroke();
  2218. }
  2219. function drawActivePoint(points, color, shape, context, opts, option, seriesIndex) {
  2220. if (!opts.tooltip) {
  2221. return;
  2222. }
  2223. if (opts.tooltip.group.length > 0 && opts.tooltip.group.includes(seriesIndex) == false) {
  2224. return;
  2225. }
  2226. var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)];
  2227. context.beginPath();
  2228. if (option.activeType == 'hollow') {
  2229. context.setStrokeStyle(color);
  2230. context.setFillStyle(opts.background);
  2231. context.setLineWidth(2 * opts.pix);
  2232. } else {
  2233. context.setStrokeStyle("#ffffff");
  2234. context.setFillStyle(color);
  2235. context.setLineWidth(1 * opts.pix);
  2236. }
  2237. if (shape === 'diamond') {
  2238. points.forEach(function (item, index) {
  2239. if (item !== null && pointIndex == index) {
  2240. context.moveTo(item.x, item.y - 4.5);
  2241. context.lineTo(item.x - 4.5, item.y);
  2242. context.lineTo(item.x, item.y + 4.5);
  2243. context.lineTo(item.x + 4.5, item.y);
  2244. context.lineTo(item.x, item.y - 4.5);
  2245. }
  2246. });
  2247. } else if (shape === 'circle') {
  2248. points.forEach(function (item, index) {
  2249. if (item !== null && pointIndex == index) {
  2250. context.moveTo(item.x + 2.5 * opts.pix, item.y);
  2251. context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
  2252. }
  2253. });
  2254. } else if (shape === 'square') {
  2255. points.forEach(function (item, index) {
  2256. if (item !== null && pointIndex == index) {
  2257. context.moveTo(item.x - 3.5, item.y - 3.5);
  2258. context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
  2259. }
  2260. });
  2261. } else if (shape === 'triangle') {
  2262. points.forEach(function (item, index) {
  2263. if (item !== null && pointIndex == index) {
  2264. context.moveTo(item.x, item.y - 4.5);
  2265. context.lineTo(item.x - 4.5, item.y + 4.5);
  2266. context.lineTo(item.x + 4.5, item.y + 4.5);
  2267. context.lineTo(item.x, item.y - 4.5);
  2268. }
  2269. });
  2270. } else if (shape === 'none') {
  2271. return;
  2272. }
  2273. context.closePath();
  2274. context.fill();
  2275. context.stroke();
  2276. }
  2277. function drawRingTitle(opts, config, context, center) {
  2278. var titlefontSize = opts.title.fontSize || config.titleFontSize;
  2279. var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
  2280. var title = opts.title.name || '';
  2281. var subtitle = opts.subtitle.name || '';
  2282. var titleFontColor = opts.title.color || opts.fontColor;
  2283. var subtitleFontColor = opts.subtitle.color || opts.fontColor;
  2284. var titleHeight = title ? titlefontSize : 0;
  2285. var subtitleHeight = subtitle ? subtitlefontSize : 0;
  2286. var margin = 5;
  2287. if (subtitle) {
  2288. var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);
  2289. var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;
  2290. var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;
  2291. if (title) {
  2292. startY += (titleHeight * opts.pix + margin) / 2;
  2293. }
  2294. context.beginPath();
  2295. context.setFontSize(subtitlefontSize * opts.pix);
  2296. context.setFillStyle(subtitleFontColor);
  2297. context.fillText(subtitle, startX, startY);
  2298. context.closePath();
  2299. context.stroke();
  2300. }
  2301. if (title) {
  2302. var _textWidth = measureText(title, titlefontSize * opts.pix, context);
  2303. var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);
  2304. var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;
  2305. if (subtitle) {
  2306. _startY -= (subtitleHeight * opts.pix + margin) / 2;
  2307. }
  2308. context.beginPath();
  2309. context.setFontSize(titlefontSize * opts.pix);
  2310. context.setFillStyle(titleFontColor);
  2311. context.fillText(title, _startX, _startY);
  2312. context.closePath();
  2313. context.stroke();
  2314. }
  2315. }
  2316. function drawPointText(points, series, config, context, opts) {
  2317. // 绘制数据文案
  2318. var data = series.data;
  2319. var textOffset = series.textOffset ? series.textOffset : 0;
  2320. points.forEach(function (item, index) {
  2321. if (item !== null) {
  2322. context.beginPath();
  2323. var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
  2324. context.setFontSize(fontSize);
  2325. context.setFillStyle(series.textColor || opts.fontColor);
  2326. var value = data[index];
  2327. if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {
  2328. if (data[index].constructor.toString().indexOf('Array') > -1) {
  2329. value = data[index][1];
  2330. } else {
  2331. value = data[index].value;
  2332. }
  2333. }
  2334. var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
  2335. context.setTextAlign('center');
  2336. context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);
  2337. context.closePath();
  2338. context.stroke();
  2339. context.setTextAlign('left');
  2340. }
  2341. });
  2342. }
  2343. function drawColumePointText(points, series, config, context, opts) {
  2344. // 绘制数据文案
  2345. var data = series.data;
  2346. var textOffset = series.textOffset ? series.textOffset : 0;
  2347. var Position = opts.extra.column.labelPosition;
  2348. points.forEach(function (item, index) {
  2349. if (item !== null) {
  2350. context.beginPath();
  2351. var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
  2352. context.setFontSize(fontSize);
  2353. context.setFillStyle(series.textColor || opts.fontColor);
  2354. var value = data[index];
  2355. if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {
  2356. if (data[index].constructor.toString().indexOf('Array') > -1) {
  2357. value = data[index][1];
  2358. } else {
  2359. value = data[index].value;
  2360. }
  2361. }
  2362. var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
  2363. context.setTextAlign('center');
  2364. var startY = item.y - 4 * opts.pix + textOffset * opts.pix;
  2365. if (item.y > series.zeroPoints) {
  2366. startY = item.y + textOffset * opts.pix + fontSize;
  2367. }
  2368. if (Position == 'insideTop') {
  2369. startY = item.y + fontSize + textOffset * opts.pix;
  2370. if (item.y > series.zeroPoints) {
  2371. startY = item.y - textOffset * opts.pix - 4 * opts.pix;
  2372. }
  2373. }
  2374. if (Position == 'center') {
  2375. startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize) / 2;
  2376. if (series.zeroPoints < opts.height - opts.area[2]) {
  2377. startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize) / 2;
  2378. }
  2379. if (item.y > series.zeroPoints) {
  2380. startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize) / 2;
  2381. }
  2382. if (opts.extra.column.type == 'stack') {
  2383. startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize) / 2;
  2384. }
  2385. }
  2386. if (Position == 'bottom') {
  2387. startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix;
  2388. if (series.zeroPoints < opts.height - opts.area[2]) {
  2389. startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix;
  2390. }
  2391. if (item.y > series.zeroPoints) {
  2392. startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix;
  2393. }
  2394. if (opts.extra.column.type == 'stack') {
  2395. startY = item.y0 + textOffset * opts.pix - 4 * opts.pix;
  2396. }
  2397. }
  2398. context.fillText(String(formatVal), item.x, startY);
  2399. context.closePath();
  2400. context.stroke();
  2401. context.setTextAlign('left');
  2402. }
  2403. });
  2404. }
  2405. function drawMountPointText(points, series, config, context, opts, zeroPoints) {
  2406. // 绘制数据文案
  2407. var data = series.data;
  2408. var textOffset = series.textOffset ? series.textOffset : 0;
  2409. var Position = opts.extra.mount.labelPosition;
  2410. points.forEach(function (item, index) {
  2411. if (item !== null) {
  2412. context.beginPath();
  2413. var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;
  2414. context.setFontSize(fontSize);
  2415. context.setFillStyle(series[index].textColor || opts.fontColor);
  2416. var value = item.value;
  2417. var formatVal = series[index].formatter ? series[index].formatter(value, index, series, opts) : value;
  2418. context.setTextAlign('center');
  2419. var startY = item.y - 4 * opts.pix + textOffset * opts.pix;
  2420. if (item.y > zeroPoints) {
  2421. startY = item.y + textOffset * opts.pix + fontSize;
  2422. }
  2423. context.fillText(String(formatVal), item.x, startY);
  2424. context.closePath();
  2425. context.stroke();
  2426. context.setTextAlign('left');
  2427. }
  2428. });
  2429. }
  2430. function drawBarPointText(points, series, config, context, opts) {
  2431. // 绘制数据文案
  2432. var data = series.data;
  2433. var textOffset = series.textOffset ? series.textOffset : 0;
  2434. points.forEach(function (item, index) {
  2435. if (item !== null) {
  2436. context.beginPath();
  2437. var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
  2438. context.setFontSize(fontSize);
  2439. context.setFillStyle(series.textColor || opts.fontColor);
  2440. var value = data[index];
  2441. if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {
  2442. value = data[index].value;
  2443. }
  2444. var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
  2445. context.setTextAlign('left');
  2446. context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);
  2447. context.closePath();
  2448. context.stroke();
  2449. }
  2450. });
  2451. }
  2452. function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {
  2453. radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;
  2454. radius = radius < 10 ? 10 : radius;
  2455. var totalAngle;
  2456. if (gaugeOption.endAngle < gaugeOption.startAngle) {
  2457. totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
  2458. } else {
  2459. totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
  2460. }
  2461. var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
  2462. var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;
  2463. var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;
  2464. var nowAngle = gaugeOption.startAngle;
  2465. var nowNumber = gaugeOption.startNumber;
  2466. for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
  2467. var pos = {
  2468. x: radius * Math.cos(nowAngle * Math.PI),
  2469. y: radius * Math.sin(nowAngle * Math.PI)
  2470. };
  2471. var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber, i, opts) : nowNumber;
  2472. pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;
  2473. pos.y += centerPosition.y;
  2474. var startX = pos.x;
  2475. var startY = pos.y;
  2476. context.beginPath();
  2477. context.setFontSize(config.fontSize);
  2478. context.setFillStyle(gaugeOption.labelColor || opts.fontColor);
  2479. context.fillText(labelText, startX, startY + config.fontSize / 2);
  2480. context.closePath();
  2481. context.stroke();
  2482. nowAngle += splitAngle;
  2483. if (nowAngle >= 2) {
  2484. nowAngle = nowAngle % 2;
  2485. }
  2486. nowNumber += splitNumber;
  2487. }
  2488. }
  2489. function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
  2490. var radarOption = opts.extra.radar || {};
  2491. angleList.forEach(function (angle, index) {
  2492. if (radarOption.labelPointShow === true && opts.categories[index] !== '') {
  2493. var posPoint = {
  2494. x: radius * Math.cos(angle),
  2495. y: radius * Math.sin(angle)
  2496. };
  2497. var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);
  2498. context.setFillStyle(radarOption.labelPointColor);
  2499. context.beginPath();
  2500. context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);
  2501. context.closePath();
  2502. context.fill();
  2503. }
  2504. if (radarOption.labelShow === true) {
  2505. var pos = {
  2506. x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),
  2507. y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle)
  2508. };
  2509. var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
  2510. var startX = posRelativeCanvas.x;
  2511. var startY = posRelativeCanvas.y;
  2512. if (util.approximatelyEqual(pos.x, 0)) {
  2513. startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;
  2514. } else if (pos.x < 0) {
  2515. startX -= measureText(opts.categories[index] || '', config.fontSize, context);
  2516. }
  2517. context.beginPath();
  2518. context.setFontSize(config.fontSize);
  2519. context.setFillStyle(radarOption.labelColor || opts.fontColor);
  2520. context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
  2521. context.closePath();
  2522. context.stroke();
  2523. }
  2524. });
  2525. }
  2526. function drawPieText(series, opts, config, context, radius, center) {
  2527. var lineRadius = config.pieChartLinePadding;
  2528. var textObjectCollection = [];
  2529. var lastTextObject = null;
  2530. var seriesConvert = series.map(function (item, index) {
  2531. var text = item.formatter ? item.formatter(item, index, series, opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';
  2532. text = item.labelText ? item.labelText : text;
  2533. var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
  2534. if (item._rose_proportion_) {
  2535. arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);
  2536. }
  2537. var color = item.color;
  2538. var radius = item._radius_;
  2539. return {
  2540. arc: arc,
  2541. text: text,
  2542. color: color,
  2543. radius: radius,
  2544. textColor: item.textColor,
  2545. textSize: item.textSize,
  2546. labelShow: item.labelShow
  2547. };
  2548. });
  2549. for (var i = 0; i < seriesConvert.length; i++) {
  2550. var item = seriesConvert[i];
  2551. // line end
  2552. var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);
  2553. var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);
  2554. // line start
  2555. var orginX2 = Math.cos(item.arc) * item.radius;
  2556. var orginY2 = Math.sin(item.arc) * item.radius;
  2557. // text start
  2558. var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
  2559. var orginY3 = orginY1;
  2560. var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);
  2561. var startY = orginY3;
  2562. if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {
  2563. x: orginX3
  2564. })) {
  2565. if (orginX3 > 0) {
  2566. startY = Math.min(orginY3, lastTextObject.start.y);
  2567. } else if (orginX1 < 0) {
  2568. startY = Math.max(orginY3, lastTextObject.start.y);
  2569. } else {
  2570. if (orginY3 > 0) {
  2571. startY = Math.max(orginY3, lastTextObject.start.y);
  2572. } else {
  2573. startY = Math.min(orginY3, lastTextObject.start.y);
  2574. }
  2575. }
  2576. }
  2577. if (orginX3 < 0) {
  2578. orginX3 -= textWidth;
  2579. }
  2580. var textObject = {
  2581. lineStart: {
  2582. x: orginX2,
  2583. y: orginY2
  2584. },
  2585. lineEnd: {
  2586. x: orginX1,
  2587. y: orginY1
  2588. },
  2589. start: {
  2590. x: orginX3,
  2591. y: startY
  2592. },
  2593. width: textWidth,
  2594. height: config.fontSize,
  2595. text: item.text,
  2596. color: item.color,
  2597. textColor: item.textColor,
  2598. textSize: item.textSize
  2599. };
  2600. lastTextObject = avoidCollision(textObject, lastTextObject);
  2601. textObjectCollection.push(lastTextObject);
  2602. }
  2603. for (var _i15 = 0; _i15 < textObjectCollection.length; _i15++) {
  2604. if (seriesConvert[_i15].labelShow === false) {
  2605. continue;
  2606. }
  2607. var _item6 = textObjectCollection[_i15];
  2608. var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);
  2609. var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);
  2610. var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);
  2611. context.setLineWidth(1 * opts.pix);
  2612. context.setFontSize(_item6.textSize * opts.pix || config.fontSize);
  2613. context.beginPath();
  2614. context.setStrokeStyle(_item6.color);
  2615. context.setFillStyle(_item6.color);
  2616. context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
  2617. var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;
  2618. var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
  2619. context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
  2620. context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
  2621. context.stroke();
  2622. context.closePath();
  2623. context.beginPath();
  2624. context.moveTo(textPosition.x + _item6.width, textPosition.y);
  2625. context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);
  2626. context.closePath();
  2627. context.fill();
  2628. context.beginPath();
  2629. context.setFontSize(_item6.textSize * opts.pix || config.fontSize);
  2630. context.setFillStyle(_item6.textColor || opts.fontColor);
  2631. context.fillText(_item6.text, textStartX, textPosition.y + 3);
  2632. context.closePath();
  2633. context.stroke();
  2634. context.closePath();
  2635. }
  2636. }
  2637. function drawToolTipSplitLine(offsetX, opts, config, context) {
  2638. var toolTipOption = opts.extra.tooltip || {};
  2639. toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;
  2640. toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;
  2641. var startY = opts.area[0];
  2642. var endY = opts.height - opts.area[2];
  2643. if (toolTipOption.gridType == 'dash') {
  2644. context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
  2645. }
  2646. context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
  2647. context.setLineWidth(1 * opts.pix);
  2648. context.beginPath();
  2649. context.moveTo(offsetX, startY);
  2650. context.lineTo(offsetX, endY);
  2651. context.stroke();
  2652. context.setLineDash([]);
  2653. if (toolTipOption.xAxisLabel) {
  2654. var labelText = opts.categories[opts.tooltip.index];
  2655. context.setFontSize(config.fontSize);
  2656. var textWidth = measureText(labelText, config.fontSize, context);
  2657. var textX = offsetX - 0.5 * textWidth;
  2658. var textY = endY + 2 * opts.pix;
  2659. context.beginPath();
  2660. context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
  2661. context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
  2662. context.setLineWidth(1 * opts.pix);
  2663. context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix);
  2664. context.closePath();
  2665. context.stroke();
  2666. context.fill();
  2667. context.beginPath();
  2668. context.setFontSize(config.fontSize);
  2669. context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);
  2670. context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize);
  2671. context.closePath();
  2672. context.stroke();
  2673. }
  2674. }
  2675. function drawMarkLine(opts, config, context) {
  2676. var markLineOption = assign({}, {
  2677. type: 'solid',
  2678. dashLength: 4,
  2679. data: []
  2680. }, opts.extra.markLine);
  2681. var startX = opts.area[3];
  2682. var endX = opts.width - opts.area[1];
  2683. var points = calMarkLineData(markLineOption.data, opts);
  2684. for (var i = 0; i < points.length; i++) {
  2685. var item = assign({}, {
  2686. lineColor: '#DE4A42',
  2687. showLabel: false,
  2688. labelFontSize: 13,
  2689. labelPadding: 6,
  2690. labelFontColor: '#666666',
  2691. labelBgColor: '#DFE8FF',
  2692. labelBgOpacity: 0.8,
  2693. labelAlign: 'left',
  2694. labelOffsetX: 0,
  2695. labelOffsetY: 0
  2696. }, points[i]);
  2697. if (markLineOption.type == 'dash') {
  2698. context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);
  2699. }
  2700. context.setStrokeStyle(item.lineColor);
  2701. context.setLineWidth(1 * opts.pix);
  2702. context.beginPath();
  2703. context.moveTo(startX, item.y);
  2704. context.lineTo(endX, item.y);
  2705. context.stroke();
  2706. context.setLineDash([]);
  2707. if (item.showLabel) {
  2708. var fontSize = item.labelFontSize * opts.pix;
  2709. var labelText = item.labelText ? item.labelText : item.value;
  2710. context.setFontSize(fontSize);
  2711. var textWidth = measureText(labelText, fontSize, context);
  2712. var bgWidth = textWidth + item.labelPadding * opts.pix * 2;
  2713. var bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];
  2714. bgStartX += item.labelOffsetX;
  2715. var bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix;
  2716. bgStartY += item.labelOffsetY;
  2717. var textX = bgStartX + item.labelPadding * opts.pix;
  2718. var textY = item.y;
  2719. context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));
  2720. context.setStrokeStyle(item.labelBgColor);
  2721. context.setLineWidth(1 * opts.pix);
  2722. context.beginPath();
  2723. context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix);
  2724. context.closePath();
  2725. context.stroke();
  2726. context.fill();
  2727. context.setFontSize(fontSize);
  2728. context.setTextAlign('left');
  2729. context.setFillStyle(item.labelFontColor);
  2730. context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix / 2);
  2731. context.stroke();
  2732. context.setTextAlign('left');
  2733. }
  2734. }
  2735. }
  2736. function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {
  2737. var toolTipOption = assign({}, {
  2738. gridType: 'solid',
  2739. dashLength: 4
  2740. }, opts.extra.tooltip);
  2741. var startX = opts.area[3];
  2742. var endX = opts.width - opts.area[1];
  2743. if (toolTipOption.gridType == 'dash') {
  2744. context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
  2745. }
  2746. context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
  2747. context.setLineWidth(1 * opts.pix);
  2748. context.beginPath();
  2749. context.moveTo(startX, opts.tooltip.offset.y);
  2750. context.lineTo(endX, opts.tooltip.offset.y);
  2751. context.stroke();
  2752. context.setLineDash([]);
  2753. if (toolTipOption.yAxisLabel) {
  2754. var boxPadding = toolTipOption.boxPadding * opts.pix;
  2755. var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);
  2756. var widthArr = opts.chartData.yAxisData.yAxisWidth;
  2757. var tStartLeft = opts.area[3];
  2758. var tStartRight = opts.width - opts.area[1];
  2759. for (var i = 0; i < labelText.length; i++) {
  2760. context.setFontSize(toolTipOption.fontSize * opts.pix);
  2761. var textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context);
  2762. var bgStartX = void 0,
  2763. bgEndX = void 0,
  2764. bgWidth = void 0;
  2765. if (widthArr[i].position == 'left') {
  2766. bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix;
  2767. bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2);
  2768. } else {
  2769. bgStartX = tStartRight + 2 * opts.pix;
  2770. bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2);
  2771. }
  2772. bgWidth = bgEndX - bgStartX;
  2773. var textX = bgStartX + (bgWidth - textWidth) / 2;
  2774. var textY = opts.tooltip.offset.y;
  2775. context.beginPath();
  2776. context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
  2777. context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
  2778. context.setLineWidth(1 * opts.pix);
  2779. context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding);
  2780. context.closePath();
  2781. context.stroke();
  2782. context.fill();
  2783. context.beginPath();
  2784. context.setFontSize(config.fontSize);
  2785. context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);
  2786. context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);
  2787. context.closePath();
  2788. context.stroke();
  2789. if (widthArr[i].position == 'left') {
  2790. tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;
  2791. } else {
  2792. tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;
  2793. }
  2794. }
  2795. }
  2796. }
  2797. function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
  2798. var toolTipOption = assign({}, {
  2799. activeBgColor: '#000000',
  2800. activeBgOpacity: 0.08,
  2801. activeWidth: eachSpacing
  2802. }, opts.extra.column);
  2803. toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;
  2804. var startY = opts.area[0];
  2805. var endY = opts.height - opts.area[2];
  2806. context.beginPath();
  2807. context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
  2808. context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);
  2809. context.closePath();
  2810. context.fill();
  2811. context.setFillStyle("#FFFFFF");
  2812. }
  2813. function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
  2814. var toolTipOption = assign({}, {
  2815. activeBgColor: '#000000',
  2816. activeBgOpacity: 0.08
  2817. }, opts.extra.bar);
  2818. var startX = opts.area[3];
  2819. var endX = opts.width - opts.area[1];
  2820. context.beginPath();
  2821. context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
  2822. context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);
  2823. context.closePath();
  2824. context.fill();
  2825. context.setFillStyle("#FFFFFF");
  2826. }
  2827. function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {
  2828. var toolTipOption = assign({}, {
  2829. showBox: true,
  2830. showArrow: true,
  2831. showCategory: false,
  2832. bgColor: '#000000',
  2833. bgOpacity: 0.7,
  2834. borderColor: '#000000',
  2835. borderWidth: 0,
  2836. borderRadius: 0,
  2837. borderOpacity: 0.7,
  2838. boxPadding: 3,
  2839. fontColor: '#FFFFFF',
  2840. fontSize: 13,
  2841. lineHeight: 20,
  2842. legendShow: true,
  2843. legendShape: 'auto',
  2844. splitLine: true
  2845. }, opts.extra.tooltip);
  2846. if (toolTipOption.showCategory == true && opts.categories) {
  2847. textList.unshift({
  2848. text: opts.categories[opts.tooltip.index],
  2849. color: null
  2850. });
  2851. }
  2852. var fontSize = toolTipOption.fontSize * opts.pix;
  2853. var lineHeight = toolTipOption.lineHeight * opts.pix;
  2854. var boxPadding = toolTipOption.boxPadding * opts.pix;
  2855. var legendWidth = fontSize;
  2856. var legendMarginRight = 5 * opts.pix;
  2857. if (toolTipOption.legendShow == false) {
  2858. legendWidth = 0;
  2859. legendMarginRight = 0;
  2860. }
  2861. var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;
  2862. var isOverRightBorder = false;
  2863. if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {
  2864. if (toolTipOption.splitLine == true) {
  2865. drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
  2866. }
  2867. }
  2868. offset = assign({
  2869. x: 0,
  2870. y: 0
  2871. }, offset);
  2872. offset.y -= 8 * opts.pix;
  2873. var textWidth = textList.map(function (item) {
  2874. return measureText(item.text, fontSize, context);
  2875. });
  2876. var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth);
  2877. var toolTipHeight = 2 * boxPadding + textList.length * lineHeight;
  2878. if (toolTipOption.showBox == false) {
  2879. return;
  2880. }
  2881. // if beyond the right border
  2882. if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {
  2883. isOverRightBorder = true;
  2884. }
  2885. if (toolTipHeight + offset.y > opts.height) {
  2886. offset.y = opts.height - toolTipHeight;
  2887. }
  2888. // draw background rect
  2889. context.beginPath();
  2890. context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity));
  2891. context.setLineWidth(toolTipOption.borderWidth * opts.pix);
  2892. context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));
  2893. var radius = toolTipOption.borderRadius;
  2894. if (isOverRightBorder) {
  2895. // 增加左侧仍然超出的判断
  2896. if (toolTipWidth + arrowWidth > opts.width) {
  2897. offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);
  2898. }
  2899. if (toolTipWidth > offset.x) {
  2900. offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);
  2901. }
  2902. if (toolTipOption.showArrow) {
  2903. context.moveTo(offset.x, offset.y + 10 * opts.pix);
  2904. context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);
  2905. }
  2906. context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);
  2907. context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);
  2908. context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);
  2909. context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);
  2910. if (toolTipOption.showArrow) {
  2911. context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);
  2912. context.lineTo(offset.x, offset.y + 10 * opts.pix);
  2913. }
  2914. } else {
  2915. if (toolTipOption.showArrow) {
  2916. context.moveTo(offset.x, offset.y + 10 * opts.pix);
  2917. context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);
  2918. }
  2919. context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);
  2920. context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);
  2921. context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);
  2922. context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);
  2923. if (toolTipOption.showArrow) {
  2924. context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);
  2925. context.lineTo(offset.x, offset.y + 10 * opts.pix);
  2926. }
  2927. }
  2928. context.closePath();
  2929. context.fill();
  2930. if (toolTipOption.borderWidth > 0) {
  2931. context.stroke();
  2932. }
  2933. // draw legend
  2934. if (toolTipOption.legendShow) {
  2935. textList.forEach(function (item, index) {
  2936. if (item.color !== null) {
  2937. context.beginPath();
  2938. context.setFillStyle(item.color);
  2939. var startX = offset.x + arrowWidth + 2 * boxPadding;
  2940. var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1;
  2941. if (isOverRightBorder) {
  2942. startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding;
  2943. }
  2944. switch (item.legendShape) {
  2945. case 'line':
  2946. context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix);
  2947. context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix);
  2948. break;
  2949. case 'triangle':
  2950. context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
  2951. context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);
  2952. context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);
  2953. context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
  2954. break;
  2955. case 'diamond':
  2956. context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
  2957. context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth);
  2958. context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);
  2959. context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth);
  2960. context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
  2961. break;
  2962. case 'circle':
  2963. context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth);
  2964. context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI);
  2965. break;
  2966. case 'rect':
  2967. context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);
  2968. context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
  2969. break;
  2970. case 'square':
  2971. context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
  2972. context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);
  2973. break;
  2974. default:
  2975. context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);
  2976. context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
  2977. }
  2978. context.closePath();
  2979. context.fill();
  2980. }
  2981. });
  2982. }
  2983. // draw text list
  2984. textList.forEach(function (item, index) {
  2985. var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;
  2986. if (isOverRightBorder) {
  2987. startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;
  2988. }
  2989. var startY = offset.y + lineHeight * index + (lineHeight - fontSize) / 2 - 1 + boxPadding + fontSize;
  2990. context.beginPath();
  2991. context.setFontSize(fontSize);
  2992. context.setTextBaseline('normal');
  2993. context.setFillStyle(toolTipOption.fontColor);
  2994. context.fillText(item.text, startX, startY);
  2995. context.closePath();
  2996. context.stroke();
  2997. });
  2998. }
  2999. function drawColumnDataPoints(series, opts, config, context) {
  3000. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3001. var xAxisData = opts.chartData.xAxisData,
  3002. xAxisPoints = xAxisData.xAxisPoints,
  3003. eachSpacing = xAxisData.eachSpacing;
  3004. var columnOption = assign({}, {
  3005. type: 'group',
  3006. width: eachSpacing / 2,
  3007. meterBorder: 4,
  3008. meterFillColor: '#FFFFFF',
  3009. barBorderCircle: false,
  3010. barBorderRadius: [],
  3011. seriesGap: 2,
  3012. linearType: 'none',
  3013. linearOpacity: 1,
  3014. customColor: [],
  3015. colorStop: 0,
  3016. labelPosition: 'outside'
  3017. }, opts.extra.column);
  3018. var calPoints = [];
  3019. context.save();
  3020. var leftNum = -2;
  3021. var rightNum = xAxisPoints.length + 2;
  3022. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  3023. context.translate(opts._scrollDistance_, 0);
  3024. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  3025. rightNum = leftNum + opts.xAxis.itemCount + 4;
  3026. }
  3027. if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
  3028. drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);
  3029. }
  3030. columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
  3031. series.forEach(function (eachSeries, seriesIndex) {
  3032. var ranges, minRange, maxRange;
  3033. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3034. minRange = ranges.pop();
  3035. maxRange = ranges.shift();
  3036. // 计算0轴坐标
  3037. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  3038. var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);
  3039. var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];
  3040. eachSeries.zeroPoints = zeroPoints;
  3041. var data = eachSeries.data;
  3042. switch (columnOption.type) {
  3043. case 'group':
  3044. var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process);
  3045. var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  3046. calPoints.push(tooltipPoints);
  3047. points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
  3048. for (var i = 0; i < points.length; i++) {
  3049. var item = points[i];
  3050. //fix issues/I27B1N yyoinge & Joeshu
  3051. if (item !== null && i > leftNum && i < rightNum) {
  3052. var startX = item.x - item.width / 2;
  3053. var height = opts.height - item.y - opts.area[2];
  3054. context.beginPath();
  3055. var fillColor = item.color || eachSeries.color;
  3056. var strokeColor = item.color || eachSeries.color;
  3057. if (columnOption.linearType !== 'none') {
  3058. var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);
  3059. //透明渐变
  3060. if (columnOption.linearType == 'opacity') {
  3061. grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
  3062. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3063. } else {
  3064. grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
  3065. grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
  3066. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3067. }
  3068. fillColor = grd;
  3069. }
  3070. // 圆角边框
  3071. if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
  3072. var left = startX;
  3073. var top = item.y > zeroPoints ? zeroPoints : item.y;
  3074. var width = item.width;
  3075. var _height = Math.abs(zeroPoints - item.y);
  3076. if (columnOption.barBorderCircle) {
  3077. columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
  3078. }
  3079. if (item.y > zeroPoints) {
  3080. columnOption.barBorderRadius = [0, 0, width / 2, width / 2];
  3081. }
  3082. var _columnOption$barBord = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
  3083. r0 = _columnOption$barBord[0],
  3084. r1 = _columnOption$barBord[1],
  3085. r2 = _columnOption$barBord[2],
  3086. r3 = _columnOption$barBord[3];
  3087. var minRadius = Math.min(width / 2, _height / 2);
  3088. r0 = r0 > minRadius ? minRadius : r0;
  3089. r1 = r1 > minRadius ? minRadius : r1;
  3090. r2 = r2 > minRadius ? minRadius : r2;
  3091. r3 = r3 > minRadius ? minRadius : r3;
  3092. r0 = r0 < 0 ? 0 : r0;
  3093. r1 = r1 < 0 ? 0 : r1;
  3094. r2 = r2 < 0 ? 0 : r2;
  3095. r3 = r3 < 0 ? 0 : r3;
  3096. context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
  3097. context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
  3098. context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);
  3099. context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);
  3100. } else {
  3101. context.moveTo(startX, item.y);
  3102. context.lineTo(startX + item.width, item.y);
  3103. context.lineTo(startX + item.width, zeroPoints);
  3104. context.lineTo(startX, zeroPoints);
  3105. context.lineTo(startX, item.y);
  3106. context.setLineWidth(1);
  3107. context.setStrokeStyle(strokeColor);
  3108. }
  3109. context.setFillStyle(fillColor);
  3110. context.closePath();
  3111. //context.stroke();
  3112. context.fill();
  3113. }
  3114. }
  3115. ;
  3116. break;
  3117. case 'stack':
  3118. // 绘制堆叠数据图
  3119. var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  3120. calPoints.push(points);
  3121. points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
  3122. for (var _i16 = 0; _i16 < points.length; _i16++) {
  3123. var _item7 = points[_i16];
  3124. if (_item7 !== null && _i16 > leftNum && _i16 < rightNum) {
  3125. context.beginPath();
  3126. var fillColor = _item7.color || eachSeries.color;
  3127. var startX = _item7.x - _item7.width / 2 + 1;
  3128. var height = opts.height - _item7.y - opts.area[2];
  3129. var height0 = opts.height - _item7.y0 - opts.area[2];
  3130. if (seriesIndex > 0) {
  3131. height -= height0;
  3132. }
  3133. context.setFillStyle(fillColor);
  3134. context.moveTo(startX, _item7.y);
  3135. context.fillRect(startX, _item7.y, _item7.width, height);
  3136. context.closePath();
  3137. context.fill();
  3138. }
  3139. }
  3140. ;
  3141. break;
  3142. case 'meter':
  3143. // 绘制温度计数据图
  3144. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3145. calPoints.push(points);
  3146. points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);
  3147. for (var _i17 = 0; _i17 < points.length; _i17++) {
  3148. var _item8 = points[_i17];
  3149. if (_item8 !== null && _i17 > leftNum && _i17 < rightNum) {
  3150. //画背景颜色
  3151. context.beginPath();
  3152. if (seriesIndex == 0 && columnOption.meterBorder > 0) {
  3153. context.setStrokeStyle(eachSeries.color);
  3154. context.setLineWidth(columnOption.meterBorder * opts.pix);
  3155. }
  3156. if (seriesIndex == 0) {
  3157. context.setFillStyle(columnOption.meterFillColor);
  3158. } else {
  3159. context.setFillStyle(_item8.color || eachSeries.color);
  3160. }
  3161. var startX = _item8.x - _item8.width / 2;
  3162. var height = opts.height - _item8.y - opts.area[2];
  3163. if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
  3164. var _left = startX;
  3165. var _top = _item8.y;
  3166. var _width = _item8.width;
  3167. var _height2 = zeroPoints - _item8.y;
  3168. if (columnOption.barBorderCircle) {
  3169. columnOption.barBorderRadius = [_width / 2, _width / 2, 0, 0];
  3170. }
  3171. var _columnOption$barBord2 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
  3172. _r = _columnOption$barBord2[0],
  3173. _r2 = _columnOption$barBord2[1],
  3174. _r3 = _columnOption$barBord2[2],
  3175. _r4 = _columnOption$barBord2[3];
  3176. var _minRadius = Math.min(_width / 2, _height2 / 2);
  3177. _r = _r > _minRadius ? _minRadius : _r;
  3178. _r2 = _r2 > _minRadius ? _minRadius : _r2;
  3179. _r3 = _r3 > _minRadius ? _minRadius : _r3;
  3180. _r4 = _r4 > _minRadius ? _minRadius : _r4;
  3181. _r = _r < 0 ? 0 : _r;
  3182. _r2 = _r2 < 0 ? 0 : _r2;
  3183. _r3 = _r3 < 0 ? 0 : _r3;
  3184. _r4 = _r4 < 0 ? 0 : _r4;
  3185. context.arc(_left + _r, _top + _r, _r, -Math.PI, -Math.PI / 2);
  3186. context.arc(_left + _width - _r2, _top + _r2, _r2, -Math.PI / 2, 0);
  3187. context.arc(_left + _width - _r3, _top + _height2 - _r3, _r3, 0, Math.PI / 2);
  3188. context.arc(_left + _r4, _top + _height2 - _r4, _r4, Math.PI / 2, Math.PI);
  3189. context.fill();
  3190. } else {
  3191. context.moveTo(startX, _item8.y);
  3192. context.lineTo(startX + _item8.width, _item8.y);
  3193. context.lineTo(startX + _item8.width, zeroPoints);
  3194. context.lineTo(startX, zeroPoints);
  3195. context.lineTo(startX, _item8.y);
  3196. context.fill();
  3197. }
  3198. if (seriesIndex == 0 && columnOption.meterBorder > 0) {
  3199. context.closePath();
  3200. context.stroke();
  3201. }
  3202. }
  3203. }
  3204. break;
  3205. }
  3206. });
  3207. if (opts.dataLabel !== false && process === 1) {
  3208. series.forEach(function (eachSeries, seriesIndex) {
  3209. var ranges, minRange, maxRange;
  3210. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3211. minRange = ranges.pop();
  3212. maxRange = ranges.shift();
  3213. var data = eachSeries.data;
  3214. switch (columnOption.type) {
  3215. case 'group':
  3216. var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3217. points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
  3218. drawColumePointText(points, eachSeries, config, context, opts);
  3219. break;
  3220. case 'stack':
  3221. var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  3222. drawColumePointText(points, eachSeries, config, context, opts);
  3223. break;
  3224. case 'meter':
  3225. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3226. drawColumePointText(points, eachSeries, config, context, opts);
  3227. break;
  3228. }
  3229. });
  3230. }
  3231. context.restore();
  3232. return {
  3233. xAxisPoints: xAxisPoints,
  3234. calPoints: calPoints,
  3235. eachSpacing: eachSpacing
  3236. };
  3237. }
  3238. function drawMountDataPoints(series, opts, config, context) {
  3239. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3240. var xAxisData = opts.chartData.xAxisData,
  3241. xAxisPoints = xAxisData.xAxisPoints,
  3242. eachSpacing = xAxisData.eachSpacing;
  3243. var mountOption = assign({}, {
  3244. type: 'mount',
  3245. widthRatio: 1,
  3246. borderWidth: 1,
  3247. barBorderCircle: false,
  3248. barBorderRadius: [],
  3249. linearType: 'none',
  3250. linearOpacity: 1,
  3251. customColor: [],
  3252. colorStop: 0
  3253. }, opts.extra.mount);
  3254. mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;
  3255. mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;
  3256. var calPoints = [];
  3257. context.save();
  3258. var leftNum = -2;
  3259. var rightNum = xAxisPoints.length + 2;
  3260. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  3261. context.translate(opts._scrollDistance_, 0);
  3262. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  3263. rightNum = leftNum + opts.xAxis.itemCount + 4;
  3264. }
  3265. mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);
  3266. var ranges, minRange, maxRange;
  3267. ranges = [].concat(opts.chartData.yAxisData.ranges[0]);
  3268. minRange = ranges.pop();
  3269. maxRange = ranges.shift();
  3270. // 计算0轴坐标
  3271. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  3272. var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);
  3273. var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];
  3274. var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);
  3275. switch (mountOption.type) {
  3276. case 'bar':
  3277. for (var i = 0; i < points.length; i++) {
  3278. var item = points[i];
  3279. if (item !== null && i > leftNum && i < rightNum) {
  3280. var startX = item.x - eachSpacing * mountOption.widthRatio / 2;
  3281. var height = opts.height - item.y - opts.area[2];
  3282. context.beginPath();
  3283. var fillColor = item.color || series[i].color;
  3284. var strokeColor = item.color || series[i].color;
  3285. if (mountOption.linearType !== 'none') {
  3286. var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);
  3287. //透明渐变
  3288. if (mountOption.linearType == 'opacity') {
  3289. grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
  3290. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3291. } else {
  3292. grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));
  3293. grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));
  3294. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3295. }
  3296. fillColor = grd;
  3297. }
  3298. // 圆角边框
  3299. if (mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4 || mountOption.barBorderCircle === true) {
  3300. var left = startX;
  3301. var top = item.y > zeroPoints ? zeroPoints : item.y;
  3302. var width = item.width;
  3303. var _height3 = Math.abs(zeroPoints - item.y);
  3304. if (mountOption.barBorderCircle) {
  3305. mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];
  3306. }
  3307. if (item.y > zeroPoints) {
  3308. mountOption.barBorderRadius = [0, 0, width / 2, width / 2];
  3309. }
  3310. var _mountOption$barBorde = (0, _slicedToArray2.default)(mountOption.barBorderRadius, 4),
  3311. r0 = _mountOption$barBorde[0],
  3312. r1 = _mountOption$barBorde[1],
  3313. r2 = _mountOption$barBorde[2],
  3314. r3 = _mountOption$barBorde[3];
  3315. var minRadius = Math.min(width / 2, _height3 / 2);
  3316. r0 = r0 > minRadius ? minRadius : r0;
  3317. r1 = r1 > minRadius ? minRadius : r1;
  3318. r2 = r2 > minRadius ? minRadius : r2;
  3319. r3 = r3 > minRadius ? minRadius : r3;
  3320. r0 = r0 < 0 ? 0 : r0;
  3321. r1 = r1 < 0 ? 0 : r1;
  3322. r2 = r2 < 0 ? 0 : r2;
  3323. r3 = r3 < 0 ? 0 : r3;
  3324. context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
  3325. context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
  3326. context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);
  3327. context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);
  3328. } else {
  3329. context.moveTo(startX, item.y);
  3330. context.lineTo(startX + item.width, item.y);
  3331. context.lineTo(startX + item.width, zeroPoints);
  3332. context.lineTo(startX, zeroPoints);
  3333. context.lineTo(startX, item.y);
  3334. }
  3335. context.setStrokeStyle(strokeColor);
  3336. context.setFillStyle(fillColor);
  3337. if (mountOption.borderWidth > 0) {
  3338. context.setLineWidth(mountOption.borderWidth * opts.pix);
  3339. context.closePath();
  3340. context.stroke();
  3341. }
  3342. context.fill();
  3343. }
  3344. }
  3345. ;
  3346. break;
  3347. case 'triangle':
  3348. for (var _i18 = 0; _i18 < points.length; _i18++) {
  3349. var _item9 = points[_i18];
  3350. if (_item9 !== null && _i18 > leftNum && _i18 < rightNum) {
  3351. var startX = _item9.x - eachSpacing * mountOption.widthRatio / 2;
  3352. var height = opts.height - _item9.y - opts.area[2];
  3353. context.beginPath();
  3354. var fillColor = _item9.color || series[_i18].color;
  3355. var strokeColor = _item9.color || series[_i18].color;
  3356. if (mountOption.linearType !== 'none') {
  3357. var grd = context.createLinearGradient(startX, _item9.y, startX, zeroPoints);
  3358. //透明渐变
  3359. if (mountOption.linearType == 'opacity') {
  3360. grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
  3361. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3362. } else {
  3363. grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));
  3364. grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));
  3365. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3366. }
  3367. fillColor = grd;
  3368. }
  3369. context.moveTo(startX, zeroPoints);
  3370. context.lineTo(_item9.x, _item9.y);
  3371. context.lineTo(startX + _item9.width, zeroPoints);
  3372. context.setStrokeStyle(strokeColor);
  3373. context.setFillStyle(fillColor);
  3374. if (mountOption.borderWidth > 0) {
  3375. context.setLineWidth(mountOption.borderWidth * opts.pix);
  3376. context.stroke();
  3377. }
  3378. context.fill();
  3379. }
  3380. }
  3381. ;
  3382. break;
  3383. case 'mount':
  3384. for (var _i19 = 0; _i19 < points.length; _i19++) {
  3385. var _item10 = points[_i19];
  3386. if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {
  3387. var startX = _item10.x - eachSpacing * mountOption.widthRatio / 2;
  3388. var height = opts.height - _item10.y - opts.area[2];
  3389. context.beginPath();
  3390. var fillColor = _item10.color || series[_i19].color;
  3391. var strokeColor = _item10.color || series[_i19].color;
  3392. if (mountOption.linearType !== 'none') {
  3393. var grd = context.createLinearGradient(startX, _item10.y, startX, zeroPoints);
  3394. //透明渐变
  3395. if (mountOption.linearType == 'opacity') {
  3396. grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
  3397. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3398. } else {
  3399. grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));
  3400. grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));
  3401. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3402. }
  3403. fillColor = grd;
  3404. }
  3405. context.moveTo(startX, zeroPoints);
  3406. context.bezierCurveTo(_item10.x - _item10.width / 4, zeroPoints, _item10.x - _item10.width / 4, _item10.y, _item10.x, _item10.y);
  3407. context.bezierCurveTo(_item10.x + _item10.width / 4, _item10.y, _item10.x + _item10.width / 4, zeroPoints, startX + _item10.width, zeroPoints);
  3408. context.setStrokeStyle(strokeColor);
  3409. context.setFillStyle(fillColor);
  3410. if (mountOption.borderWidth > 0) {
  3411. context.setLineWidth(mountOption.borderWidth * opts.pix);
  3412. context.stroke();
  3413. }
  3414. context.fill();
  3415. }
  3416. }
  3417. ;
  3418. break;
  3419. case 'sharp':
  3420. for (var _i20 = 0; _i20 < points.length; _i20++) {
  3421. var _item11 = points[_i20];
  3422. if (_item11 !== null && _i20 > leftNum && _i20 < rightNum) {
  3423. var startX = _item11.x - eachSpacing * mountOption.widthRatio / 2;
  3424. var height = opts.height - _item11.y - opts.area[2];
  3425. context.beginPath();
  3426. var fillColor = _item11.color || series[_i20].color;
  3427. var strokeColor = _item11.color || series[_i20].color;
  3428. if (mountOption.linearType !== 'none') {
  3429. var grd = context.createLinearGradient(startX, _item11.y, startX, zeroPoints);
  3430. //透明渐变
  3431. if (mountOption.linearType == 'opacity') {
  3432. grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
  3433. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3434. } else {
  3435. grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));
  3436. grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));
  3437. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3438. }
  3439. fillColor = grd;
  3440. }
  3441. context.moveTo(startX, zeroPoints);
  3442. context.quadraticCurveTo(_item11.x - 0, zeroPoints - height / 4, _item11.x, _item11.y);
  3443. context.quadraticCurveTo(_item11.x + 0, zeroPoints - height / 4, startX + _item11.width, zeroPoints);
  3444. context.setStrokeStyle(strokeColor);
  3445. context.setFillStyle(fillColor);
  3446. if (mountOption.borderWidth > 0) {
  3447. context.setLineWidth(mountOption.borderWidth * opts.pix);
  3448. context.stroke();
  3449. }
  3450. context.fill();
  3451. }
  3452. }
  3453. ;
  3454. break;
  3455. }
  3456. if (opts.dataLabel !== false && process === 1) {
  3457. var _ranges, _minRange, _maxRange;
  3458. _ranges = [].concat(opts.chartData.yAxisData.ranges[0]);
  3459. _minRange = _ranges.pop();
  3460. _maxRange = _ranges.shift();
  3461. var points = getMountDataPoints(series, _minRange, _maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);
  3462. drawMountPointText(points, series, config, context, opts, zeroPoints);
  3463. }
  3464. context.restore();
  3465. return {
  3466. xAxisPoints: xAxisPoints,
  3467. calPoints: points,
  3468. eachSpacing: eachSpacing
  3469. };
  3470. }
  3471. function drawBarDataPoints(series, opts, config, context) {
  3472. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3473. var yAxisPoints = [];
  3474. var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;
  3475. for (var i = 0; i < opts.categories.length; i++) {
  3476. yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);
  3477. }
  3478. var columnOption = assign({}, {
  3479. type: 'group',
  3480. width: eachSpacing / 2,
  3481. meterBorder: 4,
  3482. meterFillColor: '#FFFFFF',
  3483. barBorderCircle: false,
  3484. barBorderRadius: [],
  3485. seriesGap: 2,
  3486. linearType: 'none',
  3487. linearOpacity: 1,
  3488. customColor: [],
  3489. colorStop: 0
  3490. }, opts.extra.bar);
  3491. var calPoints = [];
  3492. context.save();
  3493. var leftNum = -2;
  3494. var rightNum = yAxisPoints.length + 2;
  3495. if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
  3496. drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);
  3497. }
  3498. columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
  3499. series.forEach(function (eachSeries, seriesIndex) {
  3500. var ranges, minRange, maxRange;
  3501. ranges = [].concat(opts.chartData.xAxisData.ranges);
  3502. maxRange = ranges.pop();
  3503. minRange = ranges.shift();
  3504. var data = eachSeries.data;
  3505. switch (columnOption.type) {
  3506. case 'group':
  3507. var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);
  3508. var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  3509. calPoints.push(tooltipPoints);
  3510. points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);
  3511. for (var _i21 = 0; _i21 < points.length; _i21++) {
  3512. var item = points[_i21];
  3513. //fix issues/I27B1N yyoinge & Joeshu
  3514. if (item !== null && _i21 > leftNum && _i21 < rightNum) {
  3515. //var startX = item.x - item.width / 2;
  3516. var startX = opts.area[3];
  3517. var startY = item.y - item.width / 2;
  3518. var height = item.height;
  3519. context.beginPath();
  3520. var fillColor = item.color || eachSeries.color;
  3521. var strokeColor = item.color || eachSeries.color;
  3522. if (columnOption.linearType !== 'none') {
  3523. var grd = context.createLinearGradient(startX, item.y, item.x, item.y);
  3524. //透明渐变
  3525. if (columnOption.linearType == 'opacity') {
  3526. grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
  3527. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3528. } else {
  3529. grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
  3530. grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
  3531. grd.addColorStop(1, hexToRgb(fillColor, 1));
  3532. }
  3533. fillColor = grd;
  3534. }
  3535. // 圆角边框
  3536. if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
  3537. var left = startX;
  3538. var width = item.width;
  3539. var top = item.y - item.width / 2;
  3540. var _height4 = item.height;
  3541. if (columnOption.barBorderCircle) {
  3542. columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
  3543. }
  3544. var _columnOption$barBord3 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
  3545. r0 = _columnOption$barBord3[0],
  3546. r1 = _columnOption$barBord3[1],
  3547. r2 = _columnOption$barBord3[2],
  3548. r3 = _columnOption$barBord3[3];
  3549. var minRadius = Math.min(width / 2, _height4 / 2);
  3550. r0 = r0 > minRadius ? minRadius : r0;
  3551. r1 = r1 > minRadius ? minRadius : r1;
  3552. r2 = r2 > minRadius ? minRadius : r2;
  3553. r3 = r3 > minRadius ? minRadius : r3;
  3554. r0 = r0 < 0 ? 0 : r0;
  3555. r1 = r1 < 0 ? 0 : r1;
  3556. r2 = r2 < 0 ? 0 : r2;
  3557. r3 = r3 < 0 ? 0 : r3;
  3558. context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);
  3559. context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);
  3560. context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);
  3561. context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);
  3562. } else {
  3563. context.moveTo(startX, startY);
  3564. context.lineTo(item.x, startY);
  3565. context.lineTo(item.x, startY + item.width);
  3566. context.lineTo(startX, startY + item.width);
  3567. context.lineTo(startX, startY);
  3568. context.setLineWidth(1);
  3569. context.setStrokeStyle(strokeColor);
  3570. }
  3571. context.setFillStyle(fillColor);
  3572. context.closePath();
  3573. //context.stroke();
  3574. context.fill();
  3575. }
  3576. }
  3577. ;
  3578. break;
  3579. case 'stack':
  3580. // 绘制堆叠数据图
  3581. var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  3582. calPoints.push(points);
  3583. points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
  3584. for (var _i22 = 0; _i22 < points.length; _i22++) {
  3585. var _item12 = points[_i22];
  3586. if (_item12 !== null && _i22 > leftNum && _i22 < rightNum) {
  3587. context.beginPath();
  3588. var fillColor = _item12.color || eachSeries.color;
  3589. var startX = _item12.x0;
  3590. context.setFillStyle(fillColor);
  3591. context.moveTo(startX, _item12.y - _item12.width / 2);
  3592. context.fillRect(startX, _item12.y - _item12.width / 2, _item12.height, _item12.width);
  3593. context.closePath();
  3594. context.fill();
  3595. }
  3596. }
  3597. ;
  3598. break;
  3599. }
  3600. });
  3601. if (opts.dataLabel !== false && process === 1) {
  3602. series.forEach(function (eachSeries, seriesIndex) {
  3603. var ranges, minRange, maxRange;
  3604. ranges = [].concat(opts.chartData.xAxisData.ranges);
  3605. maxRange = ranges.pop();
  3606. minRange = ranges.shift();
  3607. var data = eachSeries.data;
  3608. switch (columnOption.type) {
  3609. case 'group':
  3610. var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);
  3611. points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);
  3612. drawBarPointText(points, eachSeries, config, context, opts);
  3613. break;
  3614. case 'stack':
  3615. var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  3616. drawBarPointText(points, eachSeries, config, context, opts);
  3617. break;
  3618. }
  3619. });
  3620. }
  3621. return {
  3622. yAxisPoints: yAxisPoints,
  3623. calPoints: calPoints,
  3624. eachSpacing: eachSpacing
  3625. };
  3626. }
  3627. function drawCandleDataPoints(series, seriesMA, opts, config, context) {
  3628. var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  3629. var candleOption = assign({}, {
  3630. color: {},
  3631. average: {}
  3632. }, opts.extra.candle);
  3633. candleOption.color = assign({}, {
  3634. upLine: '#f04864',
  3635. upFill: '#f04864',
  3636. downLine: '#2fc25b',
  3637. downFill: '#2fc25b'
  3638. }, candleOption.color);
  3639. candleOption.average = assign({}, {
  3640. show: false,
  3641. name: [],
  3642. day: [],
  3643. color: config.color
  3644. }, candleOption.average);
  3645. opts.extra.candle = candleOption;
  3646. var xAxisData = opts.chartData.xAxisData,
  3647. xAxisPoints = xAxisData.xAxisPoints,
  3648. eachSpacing = xAxisData.eachSpacing;
  3649. var calPoints = [];
  3650. context.save();
  3651. var leftNum = -2;
  3652. var rightNum = xAxisPoints.length + 2;
  3653. var leftSpace = 0;
  3654. var rightSpace = opts.width + eachSpacing;
  3655. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  3656. context.translate(opts._scrollDistance_, 0);
  3657. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  3658. rightNum = leftNum + opts.xAxis.itemCount + 4;
  3659. leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
  3660. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  3661. }
  3662. //画均线
  3663. if (candleOption.average.show || seriesMA) {
  3664. //Merge pull request !12 from 邱贵翔
  3665. seriesMA.forEach(function (eachSeries, seriesIndex) {
  3666. var ranges, minRange, maxRange;
  3667. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3668. minRange = ranges.pop();
  3669. maxRange = ranges.shift();
  3670. var data = eachSeries.data;
  3671. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3672. var splitPointList = splitPoints(points, eachSeries);
  3673. for (var i = 0; i < splitPointList.length; i++) {
  3674. var _points = splitPointList[i];
  3675. context.beginPath();
  3676. context.setStrokeStyle(eachSeries.color);
  3677. context.setLineWidth(1);
  3678. if (_points.length === 1) {
  3679. context.moveTo(_points[0].x, _points[0].y);
  3680. context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);
  3681. } else {
  3682. context.moveTo(_points[0].x, _points[0].y);
  3683. var startPoint = 0;
  3684. for (var j = 0; j < _points.length; j++) {
  3685. var item = _points[j];
  3686. if (startPoint == 0 && item.x > leftSpace) {
  3687. context.moveTo(item.x, item.y);
  3688. startPoint = 1;
  3689. }
  3690. if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
  3691. var ctrlPoint = createCurveControlPoints(_points, j - 1);
  3692. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
  3693. }
  3694. }
  3695. context.moveTo(_points[0].x, _points[0].y);
  3696. }
  3697. context.closePath();
  3698. context.stroke();
  3699. }
  3700. });
  3701. }
  3702. //画K线
  3703. series.forEach(function (eachSeries, seriesIndex) {
  3704. var ranges, minRange, maxRange;
  3705. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3706. minRange = ranges.pop();
  3707. maxRange = ranges.shift();
  3708. var data = eachSeries.data;
  3709. var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3710. calPoints.push(points);
  3711. var splitPointList = splitPoints(points, eachSeries);
  3712. for (var i = 0; i < splitPointList[0].length; i++) {
  3713. if (i > leftNum && i < rightNum) {
  3714. var item = splitPointList[0][i];
  3715. context.beginPath();
  3716. //如果上涨
  3717. if (data[i][1] - data[i][0] > 0) {
  3718. context.setStrokeStyle(candleOption.color.upLine);
  3719. context.setFillStyle(candleOption.color.upFill);
  3720. context.setLineWidth(1 * opts.pix);
  3721. context.moveTo(item[3].x, item[3].y); //顶点
  3722. context.lineTo(item[1].x, item[1].y); //收盘中间点
  3723. context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
  3724. context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
  3725. context.lineTo(item[0].x, item[0].y); //开盘中间点
  3726. context.lineTo(item[2].x, item[2].y); //底点
  3727. context.lineTo(item[0].x, item[0].y); //开盘中间点
  3728. context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
  3729. context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
  3730. context.lineTo(item[1].x, item[1].y); //收盘中间点
  3731. context.moveTo(item[3].x, item[3].y); //顶点
  3732. } else {
  3733. context.setStrokeStyle(candleOption.color.downLine);
  3734. context.setFillStyle(candleOption.color.downFill);
  3735. context.setLineWidth(1 * opts.pix);
  3736. context.moveTo(item[3].x, item[3].y); //顶点
  3737. context.lineTo(item[0].x, item[0].y); //开盘中间点
  3738. context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
  3739. context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
  3740. context.lineTo(item[1].x, item[1].y); //收盘中间点
  3741. context.lineTo(item[2].x, item[2].y); //底点
  3742. context.lineTo(item[1].x, item[1].y); //收盘中间点
  3743. context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
  3744. context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
  3745. context.lineTo(item[0].x, item[0].y); //开盘中间点
  3746. context.moveTo(item[3].x, item[3].y); //顶点
  3747. }
  3748. context.closePath();
  3749. context.fill();
  3750. context.stroke();
  3751. }
  3752. }
  3753. });
  3754. context.restore();
  3755. return {
  3756. xAxisPoints: xAxisPoints,
  3757. calPoints: calPoints,
  3758. eachSpacing: eachSpacing
  3759. };
  3760. }
  3761. function drawAreaDataPoints(series, opts, config, context) {
  3762. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3763. var areaOption = assign({}, {
  3764. type: 'straight',
  3765. opacity: 0.2,
  3766. addLine: false,
  3767. width: 2,
  3768. gradient: false,
  3769. activeType: 'none'
  3770. }, opts.extra.area);
  3771. var xAxisData = opts.chartData.xAxisData,
  3772. xAxisPoints = xAxisData.xAxisPoints,
  3773. eachSpacing = xAxisData.eachSpacing;
  3774. var endY = opts.height - opts.area[2];
  3775. var calPoints = [];
  3776. context.save();
  3777. var leftSpace = 0;
  3778. var rightSpace = opts.width + eachSpacing;
  3779. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  3780. context.translate(opts._scrollDistance_, 0);
  3781. leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
  3782. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  3783. }
  3784. series.forEach(function (eachSeries, seriesIndex) {
  3785. var ranges, minRange, maxRange;
  3786. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3787. minRange = ranges.pop();
  3788. maxRange = ranges.shift();
  3789. var data = eachSeries.data;
  3790. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3791. calPoints.push(points);
  3792. var splitPointList = splitPoints(points, eachSeries);
  3793. for (var i = 0; i < splitPointList.length; i++) {
  3794. var _points2 = splitPointList[i];
  3795. // 绘制区域数
  3796. context.beginPath();
  3797. context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
  3798. if (areaOption.gradient) {
  3799. var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
  3800. gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
  3801. gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
  3802. context.setFillStyle(gradient);
  3803. } else {
  3804. context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
  3805. }
  3806. context.setLineWidth(areaOption.width * opts.pix);
  3807. if (_points2.length > 1) {
  3808. var firstPoint = _points2[0];
  3809. var lastPoint = _points2[_points2.length - 1];
  3810. context.moveTo(firstPoint.x, firstPoint.y);
  3811. var startPoint = 0;
  3812. if (areaOption.type === 'curve') {
  3813. for (var j = 0; j < _points2.length; j++) {
  3814. var item = _points2[j];
  3815. if (startPoint == 0 && item.x > leftSpace) {
  3816. context.moveTo(item.x, item.y);
  3817. startPoint = 1;
  3818. }
  3819. if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
  3820. var ctrlPoint = createCurveControlPoints(_points2, j - 1);
  3821. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
  3822. }
  3823. }
  3824. ;
  3825. }
  3826. if (areaOption.type === 'straight') {
  3827. for (var _j = 0; _j < _points2.length; _j++) {
  3828. var _item13 = _points2[_j];
  3829. if (startPoint == 0 && _item13.x > leftSpace) {
  3830. context.moveTo(_item13.x, _item13.y);
  3831. startPoint = 1;
  3832. }
  3833. if (_j > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {
  3834. context.lineTo(_item13.x, _item13.y);
  3835. }
  3836. }
  3837. ;
  3838. }
  3839. if (areaOption.type === 'step') {
  3840. for (var _j2 = 0; _j2 < _points2.length; _j2++) {
  3841. var _item14 = _points2[_j2];
  3842. if (startPoint == 0 && _item14.x > leftSpace) {
  3843. context.moveTo(_item14.x, _item14.y);
  3844. startPoint = 1;
  3845. }
  3846. if (_j2 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {
  3847. context.lineTo(_item14.x, _points2[_j2 - 1].y);
  3848. context.lineTo(_item14.x, _item14.y);
  3849. }
  3850. }
  3851. ;
  3852. }
  3853. context.lineTo(lastPoint.x, endY);
  3854. context.lineTo(firstPoint.x, endY);
  3855. context.lineTo(firstPoint.x, firstPoint.y);
  3856. } else {
  3857. var _item15 = _points2[0];
  3858. context.moveTo(_item15.x - eachSpacing / 2, _item15.y);
  3859. // context.lineTo(item.x + eachSpacing / 2, item.y);
  3860. // context.lineTo(item.x + eachSpacing / 2, endY);
  3861. // context.lineTo(item.x - eachSpacing / 2, endY);
  3862. // context.moveTo(item.x - eachSpacing / 2, item.y);
  3863. }
  3864. context.closePath();
  3865. context.fill();
  3866. //画连线
  3867. if (areaOption.addLine) {
  3868. if (eachSeries.lineType == 'dash') {
  3869. var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
  3870. dashLength *= opts.pix;
  3871. context.setLineDash([dashLength, dashLength]);
  3872. }
  3873. context.beginPath();
  3874. context.setStrokeStyle(eachSeries.color);
  3875. context.setLineWidth(areaOption.width * opts.pix);
  3876. if (_points2.length === 1) {
  3877. context.moveTo(_points2[0].x, _points2[0].y);
  3878. // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
  3879. } else {
  3880. context.moveTo(_points2[0].x, _points2[0].y);
  3881. var _startPoint = 0;
  3882. if (areaOption.type === 'curve') {
  3883. for (var _j3 = 0; _j3 < _points2.length; _j3++) {
  3884. var _item16 = _points2[_j3];
  3885. if (_startPoint == 0 && _item16.x > leftSpace) {
  3886. context.moveTo(_item16.x, _item16.y);
  3887. _startPoint = 1;
  3888. }
  3889. if (_j3 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {
  3890. var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);
  3891. context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item16.x, _item16.y);
  3892. }
  3893. }
  3894. ;
  3895. }
  3896. if (areaOption.type === 'straight') {
  3897. for (var _j4 = 0; _j4 < _points2.length; _j4++) {
  3898. var _item17 = _points2[_j4];
  3899. if (_startPoint == 0 && _item17.x > leftSpace) {
  3900. context.moveTo(_item17.x, _item17.y);
  3901. _startPoint = 1;
  3902. }
  3903. if (_j4 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {
  3904. context.lineTo(_item17.x, _item17.y);
  3905. }
  3906. }
  3907. ;
  3908. }
  3909. if (areaOption.type === 'step') {
  3910. for (var _j5 = 0; _j5 < _points2.length; _j5++) {
  3911. var _item18 = _points2[_j5];
  3912. if (_startPoint == 0 && _item18.x > leftSpace) {
  3913. context.moveTo(_item18.x, _item18.y);
  3914. _startPoint = 1;
  3915. }
  3916. if (_j5 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {
  3917. context.lineTo(_item18.x, _points2[_j5 - 1].y);
  3918. context.lineTo(_item18.x, _item18.y);
  3919. }
  3920. }
  3921. ;
  3922. }
  3923. context.moveTo(_points2[0].x, _points2[0].y);
  3924. }
  3925. context.stroke();
  3926. context.setLineDash([]);
  3927. }
  3928. }
  3929. //画点
  3930. if (opts.dataPointShape !== false) {
  3931. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  3932. }
  3933. drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption, seriesIndex);
  3934. });
  3935. if (opts.dataLabel !== false && process === 1) {
  3936. series.forEach(function (eachSeries, seriesIndex) {
  3937. var ranges, minRange, maxRange;
  3938. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3939. minRange = ranges.pop();
  3940. maxRange = ranges.shift();
  3941. var data = eachSeries.data;
  3942. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3943. drawPointText(points, eachSeries, config, context, opts);
  3944. });
  3945. }
  3946. context.restore();
  3947. return {
  3948. xAxisPoints: xAxisPoints,
  3949. calPoints: calPoints,
  3950. eachSpacing: eachSpacing
  3951. };
  3952. }
  3953. function drawScatterDataPoints(series, opts, config, context) {
  3954. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  3955. var scatterOption = assign({}, {
  3956. type: 'circle'
  3957. }, opts.extra.scatter);
  3958. var xAxisData = opts.chartData.xAxisData,
  3959. xAxisPoints = xAxisData.xAxisPoints,
  3960. eachSpacing = xAxisData.eachSpacing;
  3961. var calPoints = [];
  3962. context.save();
  3963. var leftSpace = 0;
  3964. var rightSpace = opts.width + eachSpacing;
  3965. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  3966. context.translate(opts._scrollDistance_, 0);
  3967. leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
  3968. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  3969. }
  3970. series.forEach(function (eachSeries, seriesIndex) {
  3971. var ranges, minRange, maxRange;
  3972. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  3973. minRange = ranges.pop();
  3974. maxRange = ranges.shift();
  3975. var data = eachSeries.data;
  3976. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  3977. context.beginPath();
  3978. context.setStrokeStyle(eachSeries.color);
  3979. context.setFillStyle(eachSeries.color);
  3980. context.setLineWidth(1 * opts.pix);
  3981. var shape = eachSeries.pointShape;
  3982. if (shape === 'diamond') {
  3983. points.forEach(function (item, index) {
  3984. if (item !== null) {
  3985. context.moveTo(item.x, item.y - 4.5);
  3986. context.lineTo(item.x - 4.5, item.y);
  3987. context.lineTo(item.x, item.y + 4.5);
  3988. context.lineTo(item.x + 4.5, item.y);
  3989. context.lineTo(item.x, item.y - 4.5);
  3990. }
  3991. });
  3992. } else if (shape === 'circle') {
  3993. points.forEach(function (item, index) {
  3994. if (item !== null) {
  3995. context.moveTo(item.x + 2.5 * opts.pix, item.y);
  3996. context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
  3997. }
  3998. });
  3999. } else if (shape === 'square') {
  4000. points.forEach(function (item, index) {
  4001. if (item !== null) {
  4002. context.moveTo(item.x - 3.5, item.y - 3.5);
  4003. context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
  4004. }
  4005. });
  4006. } else if (shape === 'triangle') {
  4007. points.forEach(function (item, index) {
  4008. if (item !== null) {
  4009. context.moveTo(item.x, item.y - 4.5);
  4010. context.lineTo(item.x - 4.5, item.y + 4.5);
  4011. context.lineTo(item.x + 4.5, item.y + 4.5);
  4012. context.lineTo(item.x, item.y - 4.5);
  4013. }
  4014. });
  4015. } else if (shape === 'triangle') {
  4016. return;
  4017. }
  4018. context.closePath();
  4019. context.fill();
  4020. context.stroke();
  4021. });
  4022. if (opts.dataLabel !== false && process === 1) {
  4023. series.forEach(function (eachSeries, seriesIndex) {
  4024. var ranges, minRange, maxRange;
  4025. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  4026. minRange = ranges.pop();
  4027. maxRange = ranges.shift();
  4028. var data = eachSeries.data;
  4029. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  4030. drawPointText(points, eachSeries, config, context, opts);
  4031. });
  4032. }
  4033. context.restore();
  4034. return {
  4035. xAxisPoints: xAxisPoints,
  4036. calPoints: calPoints,
  4037. eachSpacing: eachSpacing
  4038. };
  4039. }
  4040. function drawBubbleDataPoints(series, opts, config, context) {
  4041. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4042. var bubbleOption = assign({}, {
  4043. opacity: 1,
  4044. border: 2
  4045. }, opts.extra.bubble);
  4046. var xAxisData = opts.chartData.xAxisData,
  4047. xAxisPoints = xAxisData.xAxisPoints,
  4048. eachSpacing = xAxisData.eachSpacing;
  4049. var calPoints = [];
  4050. context.save();
  4051. var leftSpace = 0;
  4052. var rightSpace = opts.width + eachSpacing;
  4053. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  4054. context.translate(opts._scrollDistance_, 0);
  4055. leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
  4056. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  4057. }
  4058. series.forEach(function (eachSeries, seriesIndex) {
  4059. var ranges, minRange, maxRange;
  4060. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  4061. minRange = ranges.pop();
  4062. maxRange = ranges.shift();
  4063. var data = eachSeries.data;
  4064. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  4065. context.beginPath();
  4066. context.setStrokeStyle(eachSeries.color);
  4067. context.setLineWidth(bubbleOption.border * opts.pix);
  4068. context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));
  4069. points.forEach(function (item, index) {
  4070. context.moveTo(item.x + item.r, item.y);
  4071. context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);
  4072. });
  4073. context.closePath();
  4074. context.fill();
  4075. context.stroke();
  4076. if (opts.dataLabel !== false && process === 1) {
  4077. points.forEach(function (item, index) {
  4078. context.beginPath();
  4079. var fontSize = eachSeries.textSize * opts.pix || config.fontSize;
  4080. context.setFontSize(fontSize);
  4081. context.setFillStyle(eachSeries.textColor || "#FFFFFF");
  4082. context.setTextAlign('center');
  4083. context.fillText(String(item.t), item.x, item.y + fontSize / 2);
  4084. context.closePath();
  4085. context.stroke();
  4086. context.setTextAlign('left');
  4087. });
  4088. }
  4089. });
  4090. context.restore();
  4091. return {
  4092. xAxisPoints: xAxisPoints,
  4093. calPoints: calPoints,
  4094. eachSpacing: eachSpacing
  4095. };
  4096. }
  4097. function drawLineDataPoints(series, opts, config, context) {
  4098. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4099. var lineOption = assign({}, {
  4100. type: 'straight',
  4101. width: 2,
  4102. activeType: 'none',
  4103. linearType: 'none',
  4104. onShadow: false,
  4105. animation: 'vertical'
  4106. }, opts.extra.line);
  4107. lineOption.width *= opts.pix;
  4108. var xAxisData = opts.chartData.xAxisData,
  4109. xAxisPoints = xAxisData.xAxisPoints,
  4110. eachSpacing = xAxisData.eachSpacing;
  4111. var calPoints = [];
  4112. context.save();
  4113. var leftSpace = 0;
  4114. var rightSpace = opts.width + eachSpacing;
  4115. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  4116. context.translate(opts._scrollDistance_, 0);
  4117. leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
  4118. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  4119. }
  4120. series.forEach(function (eachSeries, seriesIndex) {
  4121. // 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug
  4122. context.beginPath();
  4123. context.setStrokeStyle(eachSeries.color);
  4124. context.moveTo(-10000, -10000);
  4125. context.lineTo(-10001, -10001);
  4126. context.stroke();
  4127. var ranges, minRange, maxRange;
  4128. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  4129. minRange = ranges.pop();
  4130. maxRange = ranges.shift();
  4131. var data = eachSeries.data;
  4132. var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process);
  4133. calPoints.push(points);
  4134. var splitPointList = splitPoints(points, eachSeries);
  4135. if (eachSeries.lineType == 'dash') {
  4136. var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
  4137. dashLength *= opts.pix;
  4138. context.setLineDash([dashLength, dashLength]);
  4139. }
  4140. context.beginPath();
  4141. var strokeColor = eachSeries.color;
  4142. if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) {
  4143. var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height / 2, opts.chartData.xAxisData.endX, opts.height / 2);
  4144. for (var i = 0; i < eachSeries.linearColor.length; i++) {
  4145. grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1));
  4146. }
  4147. strokeColor = grd;
  4148. }
  4149. context.setStrokeStyle(strokeColor);
  4150. if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) {
  4151. context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]);
  4152. } else {
  4153. context.setShadow(0, 0, 0, 'rgba(0,0,0,0)');
  4154. }
  4155. context.setLineWidth(lineOption.width);
  4156. splitPointList.forEach(function (points, index) {
  4157. if (points.length === 1) {
  4158. context.moveTo(points[0].x, points[0].y);
  4159. // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
  4160. } else {
  4161. context.moveTo(points[0].x, points[0].y);
  4162. var startPoint = 0;
  4163. if (lineOption.type === 'curve') {
  4164. for (var j = 0; j < points.length; j++) {
  4165. var item = points[j];
  4166. if (startPoint == 0 && item.x > leftSpace) {
  4167. context.moveTo(item.x, item.y);
  4168. startPoint = 1;
  4169. }
  4170. if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
  4171. var ctrlPoint = createCurveControlPoints(points, j - 1);
  4172. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
  4173. }
  4174. }
  4175. ;
  4176. }
  4177. if (lineOption.type === 'straight') {
  4178. for (var _j6 = 0; _j6 < points.length; _j6++) {
  4179. var _item19 = points[_j6];
  4180. if (startPoint == 0 && _item19.x > leftSpace) {
  4181. context.moveTo(_item19.x, _item19.y);
  4182. startPoint = 1;
  4183. }
  4184. if (_j6 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {
  4185. context.lineTo(_item19.x, _item19.y);
  4186. }
  4187. }
  4188. ;
  4189. }
  4190. if (lineOption.type === 'step') {
  4191. for (var _j7 = 0; _j7 < points.length; _j7++) {
  4192. var _item20 = points[_j7];
  4193. if (startPoint == 0 && _item20.x > leftSpace) {
  4194. context.moveTo(_item20.x, _item20.y);
  4195. startPoint = 1;
  4196. }
  4197. if (_j7 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {
  4198. context.lineTo(_item20.x, points[_j7 - 1].y);
  4199. context.lineTo(_item20.x, _item20.y);
  4200. }
  4201. }
  4202. ;
  4203. }
  4204. context.moveTo(points[0].x, points[0].y);
  4205. }
  4206. });
  4207. context.stroke();
  4208. context.setLineDash([]);
  4209. if (opts.dataPointShape !== false) {
  4210. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  4211. }
  4212. drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption);
  4213. });
  4214. if (opts.dataLabel !== false && process === 1) {
  4215. series.forEach(function (eachSeries, seriesIndex) {
  4216. var ranges, minRange, maxRange;
  4217. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  4218. minRange = ranges.pop();
  4219. maxRange = ranges.shift();
  4220. var data = eachSeries.data;
  4221. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  4222. drawPointText(points, eachSeries, config, context, opts);
  4223. });
  4224. }
  4225. context.restore();
  4226. return {
  4227. xAxisPoints: xAxisPoints,
  4228. calPoints: calPoints,
  4229. eachSpacing: eachSpacing
  4230. };
  4231. }
  4232. function drawMixDataPoints(series, opts, config, context) {
  4233. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  4234. var xAxisData = opts.chartData.xAxisData,
  4235. xAxisPoints = xAxisData.xAxisPoints,
  4236. eachSpacing = xAxisData.eachSpacing;
  4237. var columnOption = assign({}, {
  4238. width: eachSpacing / 2,
  4239. barBorderCircle: false,
  4240. barBorderRadius: [],
  4241. seriesGap: 2,
  4242. linearType: 'none',
  4243. linearOpacity: 1,
  4244. customColor: [],
  4245. colorStop: 0
  4246. }, opts.extra.mix.column);
  4247. var areaOption = assign({}, {
  4248. opacity: 0.2,
  4249. gradient: false
  4250. }, opts.extra.mix.area);
  4251. var lineOption = assign({}, {
  4252. width: 2
  4253. }, opts.extra.mix.line);
  4254. var endY = opts.height - opts.area[2];
  4255. var calPoints = [];
  4256. var columnIndex = 0;
  4257. var columnLength = 0;
  4258. series.forEach(function (eachSeries, seriesIndex) {
  4259. if (eachSeries.type == 'column') {
  4260. columnLength += 1;
  4261. }
  4262. });
  4263. context.save();
  4264. var leftNum = -2;
  4265. var rightNum = xAxisPoints.length + 2;
  4266. var leftSpace = 0;
  4267. var rightSpace = opts.width + eachSpacing;
  4268. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  4269. context.translate(opts._scrollDistance_, 0);
  4270. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  4271. rightNum = leftNum + opts.xAxis.itemCount + 4;
  4272. leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
  4273. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  4274. }
  4275. columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
  4276. series.forEach(function (eachSeries, seriesIndex) {
  4277. var ranges, minRange, maxRange;
  4278. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  4279. minRange = ranges.pop();
  4280. maxRange = ranges.shift();
  4281. var data = eachSeries.data;
  4282. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  4283. calPoints.push(points);
  4284. // 绘制柱状数据图
  4285. if (eachSeries.type == 'column') {
  4286. points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
  4287. for (var i = 0; i < points.length; i++) {
  4288. var item = points[i];
  4289. if (item !== null && i > leftNum && i < rightNum) {
  4290. var startX = item.x - item.width / 2;
  4291. var height = opts.height - item.y - opts.area[2];
  4292. context.beginPath();
  4293. var fillColor = item.color || eachSeries.color;
  4294. var strokeColor = item.color || eachSeries.color;
  4295. if (columnOption.linearType !== 'none') {
  4296. var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);
  4297. //透明渐变
  4298. if (columnOption.linearType == 'opacity') {
  4299. grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
  4300. grd.addColorStop(1, hexToRgb(fillColor, 1));
  4301. } else {
  4302. grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
  4303. grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
  4304. grd.addColorStop(1, hexToRgb(fillColor, 1));
  4305. }
  4306. fillColor = grd;
  4307. }
  4308. // 圆角边框
  4309. if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {
  4310. var left = startX;
  4311. var top = item.y;
  4312. var width = item.width;
  4313. var _height5 = opts.height - opts.area[2] - item.y;
  4314. if (columnOption.barBorderCircle) {
  4315. columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
  4316. }
  4317. var _columnOption$barBord4 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
  4318. r0 = _columnOption$barBord4[0],
  4319. r1 = _columnOption$barBord4[1],
  4320. r2 = _columnOption$barBord4[2],
  4321. r3 = _columnOption$barBord4[3];
  4322. var minRadius = Math.min(width / 2, _height5 / 2);
  4323. r0 = r0 > minRadius ? minRadius : r0;
  4324. r1 = r1 > minRadius ? minRadius : r1;
  4325. r2 = r2 > minRadius ? minRadius : r2;
  4326. r3 = r3 > minRadius ? minRadius : r3;
  4327. r0 = r0 < 0 ? 0 : r0;
  4328. r1 = r1 < 0 ? 0 : r1;
  4329. r2 = r2 < 0 ? 0 : r2;
  4330. r3 = r3 < 0 ? 0 : r3;
  4331. context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
  4332. context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
  4333. context.arc(left + width - r2, top + _height5 - r2, r2, 0, Math.PI / 2);
  4334. context.arc(left + r3, top + _height5 - r3, r3, Math.PI / 2, Math.PI);
  4335. } else {
  4336. context.moveTo(startX, item.y);
  4337. context.lineTo(startX + item.width, item.y);
  4338. context.lineTo(startX + item.width, opts.height - opts.area[2]);
  4339. context.lineTo(startX, opts.height - opts.area[2]);
  4340. context.lineTo(startX, item.y);
  4341. context.setLineWidth(1);
  4342. context.setStrokeStyle(strokeColor);
  4343. }
  4344. context.setFillStyle(fillColor);
  4345. context.closePath();
  4346. context.fill();
  4347. }
  4348. }
  4349. columnIndex += 1;
  4350. }
  4351. //绘制区域图数据
  4352. if (eachSeries.type == 'area') {
  4353. var _splitPointList = splitPoints(points, eachSeries);
  4354. for (var _i23 = 0; _i23 < _splitPointList.length; _i23++) {
  4355. var _points3 = _splitPointList[_i23];
  4356. // 绘制区域数据
  4357. context.beginPath();
  4358. context.setStrokeStyle(eachSeries.color);
  4359. context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
  4360. if (areaOption.gradient) {
  4361. var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
  4362. gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
  4363. gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
  4364. context.setFillStyle(gradient);
  4365. } else {
  4366. context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
  4367. }
  4368. context.setLineWidth(2 * opts.pix);
  4369. if (_points3.length > 1) {
  4370. var firstPoint = _points3[0];
  4371. var lastPoint = _points3[_points3.length - 1];
  4372. context.moveTo(firstPoint.x, firstPoint.y);
  4373. var startPoint = 0;
  4374. if (eachSeries.style === 'curve') {
  4375. for (var j = 0; j < _points3.length; j++) {
  4376. var _item21 = _points3[j];
  4377. if (startPoint == 0 && _item21.x > leftSpace) {
  4378. context.moveTo(_item21.x, _item21.y);
  4379. startPoint = 1;
  4380. }
  4381. if (j > 0 && _item21.x > leftSpace && _item21.x < rightSpace) {
  4382. var ctrlPoint = createCurveControlPoints(_points3, j - 1);
  4383. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item21.x, _item21.y);
  4384. }
  4385. }
  4386. ;
  4387. } else {
  4388. for (var _j8 = 0; _j8 < _points3.length; _j8++) {
  4389. var _item22 = _points3[_j8];
  4390. if (startPoint == 0 && _item22.x > leftSpace) {
  4391. context.moveTo(_item22.x, _item22.y);
  4392. startPoint = 1;
  4393. }
  4394. if (_j8 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {
  4395. context.lineTo(_item22.x, _item22.y);
  4396. }
  4397. }
  4398. ;
  4399. }
  4400. context.lineTo(lastPoint.x, endY);
  4401. context.lineTo(firstPoint.x, endY);
  4402. context.lineTo(firstPoint.x, firstPoint.y);
  4403. } else {
  4404. var _item23 = _points3[0];
  4405. context.moveTo(_item23.x - eachSpacing / 2, _item23.y);
  4406. // context.lineTo(item.x + eachSpacing / 2, item.y);
  4407. // context.lineTo(item.x + eachSpacing / 2, endY);
  4408. // context.lineTo(item.x - eachSpacing / 2, endY);
  4409. // context.moveTo(item.x - eachSpacing / 2, item.y);
  4410. }
  4411. context.closePath();
  4412. context.fill();
  4413. }
  4414. }
  4415. // 绘制折线数据图
  4416. if (eachSeries.type == 'line') {
  4417. var splitPointList = splitPoints(points, eachSeries);
  4418. splitPointList.forEach(function (points, index) {
  4419. if (eachSeries.lineType == 'dash') {
  4420. var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
  4421. dashLength *= opts.pix;
  4422. context.setLineDash([dashLength, dashLength]);
  4423. }
  4424. context.beginPath();
  4425. context.setStrokeStyle(eachSeries.color);
  4426. context.setLineWidth(lineOption.width * opts.pix);
  4427. if (points.length === 1) {
  4428. context.moveTo(points[0].x, points[0].y);
  4429. // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
  4430. } else {
  4431. context.moveTo(points[0].x, points[0].y);
  4432. var _startPoint2 = 0;
  4433. if (eachSeries.style == 'curve') {
  4434. for (var _j9 = 0; _j9 < points.length; _j9++) {
  4435. var _item24 = points[_j9];
  4436. if (_startPoint2 == 0 && _item24.x > leftSpace) {
  4437. context.moveTo(_item24.x, _item24.y);
  4438. _startPoint2 = 1;
  4439. }
  4440. if (_j9 > 0 && _item24.x > leftSpace && _item24.x < rightSpace) {
  4441. var ctrlPoint = createCurveControlPoints(points, _j9 - 1);
  4442. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item24.x, _item24.y);
  4443. }
  4444. }
  4445. } else {
  4446. for (var _j10 = 0; _j10 < points.length; _j10++) {
  4447. var _item25 = points[_j10];
  4448. if (_startPoint2 == 0 && _item25.x > leftSpace) {
  4449. context.moveTo(_item25.x, _item25.y);
  4450. _startPoint2 = 1;
  4451. }
  4452. if (_j10 > 0 && _item25.x > leftSpace && _item25.x < rightSpace) {
  4453. context.lineTo(_item25.x, _item25.y);
  4454. }
  4455. }
  4456. }
  4457. context.moveTo(points[0].x, points[0].y);
  4458. }
  4459. context.stroke();
  4460. context.setLineDash([]);
  4461. });
  4462. }
  4463. // 绘制点数据图
  4464. if (eachSeries.type == 'point') {
  4465. eachSeries.addPoint = true;
  4466. }
  4467. if (eachSeries.addPoint == true && eachSeries.type !== 'column') {
  4468. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  4469. }
  4470. });
  4471. if (opts.dataLabel !== false && process === 1) {
  4472. var columnIndex = 0;
  4473. series.forEach(function (eachSeries, seriesIndex) {
  4474. var ranges, minRange, maxRange;
  4475. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  4476. minRange = ranges.pop();
  4477. maxRange = ranges.shift();
  4478. var data = eachSeries.data;
  4479. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  4480. if (eachSeries.type !== 'column') {
  4481. drawPointText(points, eachSeries, config, context, opts);
  4482. } else {
  4483. points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
  4484. drawPointText(points, eachSeries, config, context, opts);
  4485. columnIndex += 1;
  4486. }
  4487. });
  4488. }
  4489. context.restore();
  4490. return {
  4491. xAxisPoints: xAxisPoints,
  4492. calPoints: calPoints,
  4493. eachSpacing: eachSpacing
  4494. };
  4495. }
  4496. function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {
  4497. var toolTipOption = opts.extra.tooltip || {};
  4498. if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {
  4499. drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);
  4500. }
  4501. context.save();
  4502. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  4503. context.translate(opts._scrollDistance_, 0);
  4504. }
  4505. if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
  4506. drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);
  4507. }
  4508. context.restore();
  4509. }
  4510. function drawXAxis(categories, opts, config, context) {
  4511. var xAxisData = opts.chartData.xAxisData,
  4512. xAxisPoints = xAxisData.xAxisPoints,
  4513. startX = xAxisData.startX,
  4514. endX = xAxisData.endX,
  4515. eachSpacing = xAxisData.eachSpacing;
  4516. var boundaryGap = 'center';
  4517. if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {
  4518. boundaryGap = opts.xAxis.boundaryGap;
  4519. }
  4520. var startY = opts.height - opts.area[2];
  4521. var endY = opts.area[0];
  4522. //绘制滚动条
  4523. if (opts.enableScroll && opts.xAxis.scrollShow) {
  4524. var scrollY = opts.height - opts.area[2] + config.xAxisHeight;
  4525. var scrollScreenWidth = endX - startX;
  4526. var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);
  4527. if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
  4528. if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
  4529. scrollTotalWidth += (opts.extra.mount.widthRatio - 1) * eachSpacing;
  4530. }
  4531. var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;
  4532. var scrollLeft = 0;
  4533. if (opts._scrollDistance_) {
  4534. scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;
  4535. }
  4536. context.beginPath();
  4537. context.setLineCap('round');
  4538. context.setLineWidth(6 * opts.pix);
  4539. context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF");
  4540. context.moveTo(startX, scrollY);
  4541. context.lineTo(endX, scrollY);
  4542. context.stroke();
  4543. context.closePath();
  4544. context.beginPath();
  4545. context.setLineCap('round');
  4546. context.setLineWidth(6 * opts.pix);
  4547. context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6");
  4548. context.moveTo(startX + scrollLeft, scrollY);
  4549. context.lineTo(startX + scrollLeft + scrollWidth, scrollY);
  4550. context.stroke();
  4551. context.closePath();
  4552. context.setLineCap('butt');
  4553. }
  4554. context.save();
  4555. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
  4556. context.translate(opts._scrollDistance_, 0);
  4557. }
  4558. //绘制X轴刻度线
  4559. if (opts.xAxis.calibration === true) {
  4560. context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
  4561. context.setLineCap('butt');
  4562. context.setLineWidth(1 * opts.pix);
  4563. xAxisPoints.forEach(function (item, index) {
  4564. if (index > 0) {
  4565. context.beginPath();
  4566. context.moveTo(item - eachSpacing / 2, startY);
  4567. context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);
  4568. context.closePath();
  4569. context.stroke();
  4570. }
  4571. });
  4572. }
  4573. //绘制X轴网格
  4574. if (opts.xAxis.disableGrid !== true) {
  4575. context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
  4576. context.setLineCap('butt');
  4577. context.setLineWidth(1 * opts.pix);
  4578. if (opts.xAxis.gridType == 'dash') {
  4579. context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);
  4580. }
  4581. opts.xAxis.gridEval = opts.xAxis.gridEval || 1;
  4582. xAxisPoints.forEach(function (item, index) {
  4583. if (index % opts.xAxis.gridEval == 0) {
  4584. context.beginPath();
  4585. context.moveTo(item, startY);
  4586. context.lineTo(item, endY);
  4587. context.stroke();
  4588. }
  4589. });
  4590. context.setLineDash([]);
  4591. }
  4592. //绘制X轴文案
  4593. if (opts.xAxis.disabled !== true) {
  4594. // 对X轴列表做抽稀处理
  4595. //默认全部显示X轴标签
  4596. var maxXAxisListLength = categories.length;
  4597. //如果设置了X轴单屏数量
  4598. if (opts.xAxis.labelCount) {
  4599. //如果设置X轴密度
  4600. if (opts.xAxis.itemCount) {
  4601. maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);
  4602. } else {
  4603. maxXAxisListLength = opts.xAxis.labelCount;
  4604. }
  4605. maxXAxisListLength -= 1;
  4606. }
  4607. var ratio = Math.ceil(categories.length / maxXAxisListLength);
  4608. var newCategories = [];
  4609. var cgLength = categories.length;
  4610. for (var i = 0; i < cgLength; i++) {
  4611. if (i % ratio !== 0) {
  4612. newCategories.push("");
  4613. } else {
  4614. newCategories.push(categories[i]);
  4615. }
  4616. }
  4617. newCategories[cgLength - 1] = categories[cgLength - 1];
  4618. var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;
  4619. if (config._xAxisTextAngle_ === 0) {
  4620. newCategories.forEach(function (item, index) {
  4621. var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;
  4622. var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;
  4623. if (boundaryGap == 'center') {
  4624. offset += eachSpacing / 2;
  4625. }
  4626. var scrollHeight = 0;
  4627. if (opts.xAxis.scrollShow) {
  4628. scrollHeight = 6 * opts.pix;
  4629. }
  4630. // 如果在主视图区域内
  4631. var _scrollDistance_ = opts._scrollDistance_ || 0;
  4632. var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];
  4633. if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {
  4634. context.beginPath();
  4635. context.setFontSize(xAxisFontSize);
  4636. context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);
  4637. context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix);
  4638. context.closePath();
  4639. context.stroke();
  4640. }
  4641. });
  4642. } else {
  4643. newCategories.forEach(function (item, index) {
  4644. var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;
  4645. // 如果在主视图区域内
  4646. var _scrollDistance_ = opts._scrollDistance_ || 0;
  4647. var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];
  4648. if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {
  4649. context.save();
  4650. context.beginPath();
  4651. context.setFontSize(xAxisFontSize);
  4652. context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);
  4653. var textWidth = measureText(String(xitem), xAxisFontSize, context);
  4654. var offsetX = xAxisPoints[index];
  4655. if (boundaryGap == 'center') {
  4656. offsetX = xAxisPoints[index] + eachSpacing / 2;
  4657. }
  4658. var scrollHeight = 0;
  4659. if (opts.xAxis.scrollShow) {
  4660. scrollHeight = 6 * opts.pix;
  4661. }
  4662. var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));
  4663. if (opts.xAxis.rotateAngle < 0) {
  4664. offsetX -= xAxisFontSize / 2;
  4665. textWidth = 0;
  4666. } else {
  4667. offsetX += xAxisFontSize / 2;
  4668. textWidth = -textWidth;
  4669. }
  4670. context.translate(offsetX, offsetY);
  4671. context.rotate(-1 * config._xAxisTextAngle_);
  4672. context.fillText(String(xitem), textWidth, 0);
  4673. context.closePath();
  4674. context.stroke();
  4675. context.restore();
  4676. }
  4677. });
  4678. }
  4679. }
  4680. context.restore();
  4681. //画X轴标题
  4682. if (opts.xAxis.title) {
  4683. context.beginPath();
  4684. context.setFontSize(opts.xAxis.titleFontSize * opts.pix);
  4685. context.setFillStyle(opts.xAxis.titleFontColor);
  4686. context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix, opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix);
  4687. context.closePath();
  4688. context.stroke();
  4689. }
  4690. //绘制X轴轴线
  4691. if (opts.xAxis.axisLine) {
  4692. context.beginPath();
  4693. context.setStrokeStyle(opts.xAxis.axisLineColor);
  4694. context.setLineWidth(1 * opts.pix);
  4695. context.moveTo(startX, opts.height - opts.area[2]);
  4696. context.lineTo(endX, opts.height - opts.area[2]);
  4697. context.stroke();
  4698. }
  4699. }
  4700. function drawYAxisGrid(categories, opts, config, context) {
  4701. if (opts.yAxis.disableGrid === true) {
  4702. return;
  4703. }
  4704. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  4705. var eachSpacing = spacingValid / opts.yAxis.splitNumber;
  4706. var startX = opts.area[3];
  4707. var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
  4708. xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;
  4709. var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);
  4710. if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
  4711. if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
  4712. TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing;
  4713. }
  4714. var endX = startX + TotalWidth;
  4715. var points = [];
  4716. var startY = 1;
  4717. if (opts.xAxis.axisLine === false) {
  4718. startY = 0;
  4719. }
  4720. for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {
  4721. points.push(opts.height - opts.area[2] - eachSpacing * i);
  4722. }
  4723. context.save();
  4724. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
  4725. context.translate(opts._scrollDistance_, 0);
  4726. }
  4727. if (opts.yAxis.gridType == 'dash') {
  4728. context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);
  4729. }
  4730. context.setStrokeStyle(opts.yAxis.gridColor);
  4731. context.setLineWidth(1 * opts.pix);
  4732. points.forEach(function (item, index) {
  4733. context.beginPath();
  4734. context.moveTo(startX, item);
  4735. context.lineTo(endX, item);
  4736. context.stroke();
  4737. });
  4738. context.setLineDash([]);
  4739. context.restore();
  4740. }
  4741. function drawYAxis(series, opts, config, context) {
  4742. if (opts.yAxis.disabled === true) {
  4743. return;
  4744. }
  4745. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  4746. var eachSpacing = spacingValid / opts.yAxis.splitNumber;
  4747. var startX = opts.area[3];
  4748. var endX = opts.width - opts.area[1];
  4749. var endY = opts.height - opts.area[2];
  4750. // set YAxis background
  4751. context.beginPath();
  4752. context.setFillStyle(opts.background);
  4753. if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {
  4754. context.fillRect(0, 0, startX, endY + 2 * opts.pix);
  4755. }
  4756. if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {
  4757. context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix);
  4758. }
  4759. context.closePath();
  4760. context.stroke();
  4761. var tStartLeft = opts.area[3];
  4762. var tStartRight = opts.width - opts.area[1];
  4763. var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;
  4764. if (opts.yAxis.data) {
  4765. var _loop4 = function _loop4(i) {
  4766. var yData = opts.yAxis.data[i];
  4767. points = [];
  4768. if (yData.type === 'categories') {
  4769. for (var _i24 = 0; _i24 <= yData.categories.length; _i24++) {
  4770. points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i24);
  4771. }
  4772. } else {
  4773. for (var _i25 = 0; _i25 <= opts.yAxis.splitNumber; _i25++) {
  4774. points.push(opts.area[0] + eachSpacing * _i25);
  4775. }
  4776. }
  4777. if (yData.disabled !== true) {
  4778. var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];
  4779. var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;
  4780. var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];
  4781. var textAlign = yData.textAlign || "right";
  4782. //画Y轴刻度及文案
  4783. rangesFormat.forEach(function (item, index) {
  4784. var pos = points[index];
  4785. context.beginPath();
  4786. context.setFontSize(yAxisFontSize);
  4787. context.setLineWidth(1 * opts.pix);
  4788. context.setStrokeStyle(yData.axisLineColor || '#cccccc');
  4789. context.setFillStyle(yData.fontColor || opts.fontColor);
  4790. var tmpstrat = 0;
  4791. var gapwidth = 4 * opts.pix;
  4792. if (yAxisWidth.position == 'left') {
  4793. //画刻度线
  4794. if (yData.calibration == true) {
  4795. context.moveTo(tStartLeft, pos);
  4796. context.lineTo(tStartLeft - 3 * opts.pix, pos);
  4797. gapwidth += 3 * opts.pix;
  4798. }
  4799. //画文字
  4800. switch (textAlign) {
  4801. case "left":
  4802. context.setTextAlign('left');
  4803. tmpstrat = tStartLeft - yAxisWidth.width;
  4804. break;
  4805. case "right":
  4806. context.setTextAlign('right');
  4807. tmpstrat = tStartLeft - gapwidth;
  4808. break;
  4809. default:
  4810. context.setTextAlign('center');
  4811. tmpstrat = tStartLeft - yAxisWidth.width / 2;
  4812. }
  4813. context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
  4814. } else if (yAxisWidth.position == 'right') {
  4815. //画刻度线
  4816. if (yData.calibration == true) {
  4817. context.moveTo(tStartRight, pos);
  4818. context.lineTo(tStartRight + 3 * opts.pix, pos);
  4819. gapwidth += 3 * opts.pix;
  4820. }
  4821. switch (textAlign) {
  4822. case "left":
  4823. context.setTextAlign('left');
  4824. tmpstrat = tStartRight + gapwidth;
  4825. break;
  4826. case "right":
  4827. context.setTextAlign('right');
  4828. tmpstrat = tStartRight + yAxisWidth.width;
  4829. break;
  4830. default:
  4831. context.setTextAlign('center');
  4832. tmpstrat = tStartRight + yAxisWidth.width / 2;
  4833. }
  4834. context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
  4835. } else if (yAxisWidth.position == 'center') {
  4836. //画刻度线
  4837. if (yData.calibration == true) {
  4838. context.moveTo(tStartCenter, pos);
  4839. context.lineTo(tStartCenter - 3 * opts.pix, pos);
  4840. gapwidth += 3 * opts.pix;
  4841. }
  4842. //画文字
  4843. switch (textAlign) {
  4844. case "left":
  4845. context.setTextAlign('left');
  4846. tmpstrat = tStartCenter - yAxisWidth.width;
  4847. break;
  4848. case "right":
  4849. context.setTextAlign('right');
  4850. tmpstrat = tStartCenter - gapwidth;
  4851. break;
  4852. default:
  4853. context.setTextAlign('center');
  4854. tmpstrat = tStartCenter - yAxisWidth.width / 2;
  4855. }
  4856. context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
  4857. }
  4858. context.closePath();
  4859. context.stroke();
  4860. context.setTextAlign('left');
  4861. });
  4862. //画Y轴轴线
  4863. if (yData.axisLine !== false) {
  4864. context.beginPath();
  4865. context.setStrokeStyle(yData.axisLineColor || '#cccccc');
  4866. context.setLineWidth(1 * opts.pix);
  4867. if (yAxisWidth.position == 'left') {
  4868. context.moveTo(tStartLeft, opts.height - opts.area[2]);
  4869. context.lineTo(tStartLeft, opts.area[0]);
  4870. } else if (yAxisWidth.position == 'right') {
  4871. context.moveTo(tStartRight, opts.height - opts.area[2]);
  4872. context.lineTo(tStartRight, opts.area[0]);
  4873. } else if (yAxisWidth.position == 'center') {
  4874. context.moveTo(tStartCenter, opts.height - opts.area[2]);
  4875. context.lineTo(tStartCenter, opts.area[0]);
  4876. }
  4877. context.stroke();
  4878. }
  4879. //画Y轴标题
  4880. if (opts.yAxis.showTitle) {
  4881. var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;
  4882. var title = yData.title;
  4883. context.beginPath();
  4884. context.setFontSize(titleFontSize);
  4885. context.setFillStyle(yData.titleFontColor || opts.fontColor);
  4886. if (yAxisWidth.position == 'left') {
  4887. context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
  4888. } else if (yAxisWidth.position == 'right') {
  4889. context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
  4890. } else if (yAxisWidth.position == 'center') {
  4891. context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
  4892. }
  4893. context.closePath();
  4894. context.stroke();
  4895. }
  4896. if (yAxisWidth.position == 'left') {
  4897. tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;
  4898. } else {
  4899. tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;
  4900. }
  4901. }
  4902. };
  4903. for (var i = 0; i < opts.yAxis.data.length; i++) {
  4904. var points;
  4905. _loop4(i);
  4906. }
  4907. }
  4908. }
  4909. function drawLegend(series, opts, config, context, chartData) {
  4910. if (opts.legend.show === false) {
  4911. return;
  4912. }
  4913. var legendData = chartData.legendData;
  4914. var legendList = legendData.points;
  4915. var legendArea = legendData.area;
  4916. var padding = opts.legend.padding * opts.pix;
  4917. var fontSize = opts.legend.fontSize * opts.pix;
  4918. var shapeWidth = 15 * opts.pix;
  4919. var shapeRight = 5 * opts.pix;
  4920. var itemGap = opts.legend.itemGap * opts.pix;
  4921. var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);
  4922. //画背景及边框
  4923. context.beginPath();
  4924. context.setLineWidth(opts.legend.borderWidth * opts.pix);
  4925. context.setStrokeStyle(opts.legend.borderColor);
  4926. context.setFillStyle(opts.legend.backgroundColor);
  4927. context.moveTo(legendArea.start.x, legendArea.start.y);
  4928. context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);
  4929. context.closePath();
  4930. context.fill();
  4931. context.stroke();
  4932. legendList.forEach(function (itemList, listIndex) {
  4933. var width = 0;
  4934. var height = 0;
  4935. width = legendData.widthArr[listIndex];
  4936. height = legendData.heightArr[listIndex];
  4937. var startX = 0;
  4938. var startY = 0;
  4939. if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
  4940. switch (opts.legend.float) {
  4941. case 'left':
  4942. startX = legendArea.start.x + padding;
  4943. break;
  4944. case 'right':
  4945. startX = legendArea.start.x + legendArea.width - width;
  4946. break;
  4947. default:
  4948. startX = legendArea.start.x + (legendArea.width - width) / 2;
  4949. }
  4950. startY = legendArea.start.y + padding + listIndex * lineHeight;
  4951. } else {
  4952. if (listIndex == 0) {
  4953. width = 0;
  4954. } else {
  4955. width = legendData.widthArr[listIndex - 1];
  4956. }
  4957. startX = legendArea.start.x + padding + width;
  4958. startY = legendArea.start.y + padding + (legendArea.height - height) / 2;
  4959. }
  4960. context.setFontSize(config.fontSize);
  4961. for (var i = 0; i < itemList.length; i++) {
  4962. var item = itemList[i];
  4963. item.area = [0, 0, 0, 0];
  4964. item.area[0] = startX;
  4965. item.area[1] = startY;
  4966. item.area[3] = startY + lineHeight;
  4967. context.beginPath();
  4968. context.setLineWidth(1 * opts.pix);
  4969. context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);
  4970. context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);
  4971. switch (item.legendShape) {
  4972. case 'line':
  4973. context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);
  4974. context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);
  4975. break;
  4976. case 'triangle':
  4977. context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
  4978. context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
  4979. context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
  4980. context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
  4981. break;
  4982. case 'diamond':
  4983. context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
  4984. context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);
  4985. context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
  4986. context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);
  4987. context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
  4988. break;
  4989. case 'circle':
  4990. context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);
  4991. context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);
  4992. break;
  4993. case 'rect':
  4994. context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);
  4995. context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
  4996. break;
  4997. case 'square':
  4998. context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
  4999. context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);
  5000. break;
  5001. case 'none':
  5002. break;
  5003. default:
  5004. context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);
  5005. context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
  5006. }
  5007. context.closePath();
  5008. context.fill();
  5009. context.stroke();
  5010. startX += shapeWidth + shapeRight;
  5011. var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;
  5012. var legendText = item.legendText ? item.legendText : item.name;
  5013. context.beginPath();
  5014. context.setFontSize(fontSize);
  5015. context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);
  5016. context.fillText(legendText, startX, startY + fontTrans);
  5017. context.closePath();
  5018. context.stroke();
  5019. if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
  5020. startX += measureText(legendText, fontSize, context) + itemGap;
  5021. item.area[2] = startX;
  5022. } else {
  5023. item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;
  5024. ;
  5025. startX -= shapeWidth + shapeRight;
  5026. startY += lineHeight;
  5027. }
  5028. }
  5029. });
  5030. }
  5031. function drawPieDataPoints(series, opts, config, context) {
  5032. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5033. var pieOption = assign({}, {
  5034. activeOpacity: 0.5,
  5035. activeRadius: 10,
  5036. offsetAngle: 0,
  5037. labelWidth: 15,
  5038. ringWidth: 30,
  5039. customRadius: 0,
  5040. border: false,
  5041. borderWidth: 2,
  5042. borderColor: '#FFFFFF',
  5043. centerColor: '#FFFFFF',
  5044. linearType: 'none',
  5045. customColor: []
  5046. }, opts.type == "pie" ? opts.extra.pie : opts.extra.ring);
  5047. var centerPosition = {
  5048. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  5049. y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
  5050. };
  5051. if (config.pieChartLinePadding == 0) {
  5052. config.pieChartLinePadding = pieOption.activeRadius * opts.pix;
  5053. }
  5054. var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
  5055. radius = radius < 10 ? 10 : radius;
  5056. if (pieOption.customRadius > 0) {
  5057. radius = pieOption.customRadius * opts.pix;
  5058. }
  5059. series = getPieDataPoints(series, radius, process);
  5060. var activeRadius = pieOption.activeRadius * opts.pix;
  5061. pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);
  5062. series = series.map(function (eachSeries) {
  5063. eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;
  5064. return eachSeries;
  5065. });
  5066. series.forEach(function (eachSeries, seriesIndex) {
  5067. if (opts.tooltip) {
  5068. if (opts.tooltip.index == seriesIndex) {
  5069. context.beginPath();
  5070. context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));
  5071. context.moveTo(centerPosition.x, centerPosition.y);
  5072. context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
  5073. context.closePath();
  5074. context.fill();
  5075. }
  5076. }
  5077. context.beginPath();
  5078. context.setLineWidth(pieOption.borderWidth * opts.pix);
  5079. context.lineJoin = "round";
  5080. context.setStrokeStyle(pieOption.borderColor);
  5081. var fillcolor = eachSeries.color;
  5082. if (pieOption.linearType == 'custom') {
  5083. var grd;
  5084. if (context.createCircularGradient) {
  5085. grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);
  5086. } else {
  5087. grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);
  5088. }
  5089. grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));
  5090. grd.addColorStop(1, hexToRgb(eachSeries.color, 1));
  5091. fillcolor = grd;
  5092. }
  5093. context.setFillStyle(fillcolor);
  5094. context.moveTo(centerPosition.x, centerPosition.y);
  5095. context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
  5096. context.closePath();
  5097. context.fill();
  5098. if (pieOption.border == true) {
  5099. context.stroke();
  5100. }
  5101. });
  5102. if (opts.type === 'ring') {
  5103. var innerPieWidth = radius * 0.6;
  5104. if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {
  5105. innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);
  5106. }
  5107. context.beginPath();
  5108. context.setFillStyle(pieOption.centerColor);
  5109. context.moveTo(centerPosition.x, centerPosition.y);
  5110. context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
  5111. context.closePath();
  5112. context.fill();
  5113. }
  5114. if (opts.dataLabel !== false && process === 1) {
  5115. drawPieText(series, opts, config, context, radius, centerPosition);
  5116. }
  5117. if (process === 1 && opts.type === 'ring') {
  5118. drawRingTitle(opts, config, context, centerPosition);
  5119. }
  5120. return {
  5121. center: centerPosition,
  5122. radius: radius,
  5123. series: series
  5124. };
  5125. }
  5126. function drawRoseDataPoints(series, opts, config, context) {
  5127. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5128. var roseOption = assign({}, {
  5129. type: 'area',
  5130. activeOpacity: 0.5,
  5131. activeRadius: 10,
  5132. offsetAngle: 0,
  5133. labelWidth: 15,
  5134. border: false,
  5135. borderWidth: 2,
  5136. borderColor: '#FFFFFF',
  5137. linearType: 'none',
  5138. customColor: []
  5139. }, opts.extra.rose);
  5140. if (config.pieChartLinePadding == 0) {
  5141. config.pieChartLinePadding = roseOption.activeRadius * opts.pix;
  5142. }
  5143. var centerPosition = {
  5144. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  5145. y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
  5146. };
  5147. var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
  5148. radius = radius < 10 ? 10 : radius;
  5149. var minRadius = roseOption.minRadius || radius * 0.5;
  5150. if (radius < minRadius) {
  5151. radius = minRadius + 10;
  5152. }
  5153. series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);
  5154. var activeRadius = roseOption.activeRadius * opts.pix;
  5155. roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);
  5156. series = series.map(function (eachSeries) {
  5157. eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;
  5158. return eachSeries;
  5159. });
  5160. series.forEach(function (eachSeries, seriesIndex) {
  5161. if (opts.tooltip) {
  5162. if (opts.tooltip.index == seriesIndex) {
  5163. context.beginPath();
  5164. context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));
  5165. context.moveTo(centerPosition.x, centerPosition.y);
  5166. context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
  5167. context.closePath();
  5168. context.fill();
  5169. }
  5170. }
  5171. context.beginPath();
  5172. context.setLineWidth(roseOption.borderWidth * opts.pix);
  5173. context.lineJoin = "round";
  5174. context.setStrokeStyle(roseOption.borderColor);
  5175. var fillcolor = eachSeries.color;
  5176. if (roseOption.linearType == 'custom') {
  5177. var grd;
  5178. if (context.createCircularGradient) {
  5179. grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);
  5180. } else {
  5181. grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);
  5182. }
  5183. grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));
  5184. grd.addColorStop(1, hexToRgb(eachSeries.color, 1));
  5185. fillcolor = grd;
  5186. }
  5187. context.setFillStyle(fillcolor);
  5188. context.moveTo(centerPosition.x, centerPosition.y);
  5189. context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
  5190. context.closePath();
  5191. context.fill();
  5192. if (roseOption.border == true) {
  5193. context.stroke();
  5194. }
  5195. });
  5196. if (opts.dataLabel !== false && process === 1) {
  5197. drawPieText(series, opts, config, context, radius, centerPosition);
  5198. }
  5199. return {
  5200. center: centerPosition,
  5201. radius: radius,
  5202. series: series
  5203. };
  5204. }
  5205. function drawArcbarDataPoints(series, opts, config, context) {
  5206. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5207. var arcbarOption = assign({}, {
  5208. startAngle: 0.75,
  5209. endAngle: 0.25,
  5210. type: 'default',
  5211. direction: 'cw',
  5212. lineCap: 'round',
  5213. width: 12,
  5214. gap: 2,
  5215. linearType: 'none',
  5216. customColor: []
  5217. }, opts.extra.arcbar);
  5218. series = getArcbarDataPoints(series, arcbarOption, process);
  5219. var centerPosition;
  5220. if (arcbarOption.centerX || arcbarOption.centerY) {
  5221. centerPosition = {
  5222. x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,
  5223. y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2
  5224. };
  5225. } else {
  5226. centerPosition = {
  5227. x: opts.width / 2,
  5228. y: opts.height / 2
  5229. };
  5230. }
  5231. var radius;
  5232. if (arcbarOption.radius) {
  5233. radius = arcbarOption.radius;
  5234. } else {
  5235. radius = Math.min(centerPosition.x, centerPosition.y);
  5236. radius -= 5 * opts.pix;
  5237. radius -= arcbarOption.width / 2;
  5238. }
  5239. radius = radius < 10 ? 10 : radius;
  5240. arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);
  5241. for (var i = 0; i < series.length; i++) {
  5242. var eachSeries = series[i];
  5243. //背景颜色
  5244. context.setLineWidth(arcbarOption.width * opts.pix);
  5245. context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');
  5246. context.setLineCap(arcbarOption.lineCap);
  5247. context.beginPath();
  5248. if (arcbarOption.type == 'default') {
  5249. context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw');
  5250. } else {
  5251. context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw');
  5252. }
  5253. context.stroke();
  5254. //进度条
  5255. var fillColor = eachSeries.color;
  5256. if (arcbarOption.linearType == 'custom') {
  5257. var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);
  5258. grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));
  5259. grd.addColorStop(0, hexToRgb(eachSeries.color, 1));
  5260. fillColor = grd;
  5261. }
  5262. context.setLineWidth(arcbarOption.width * opts.pix);
  5263. context.setStrokeStyle(fillColor);
  5264. context.setLineCap(arcbarOption.lineCap);
  5265. context.beginPath();
  5266. context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw');
  5267. context.stroke();
  5268. }
  5269. drawRingTitle(opts, config, context, centerPosition);
  5270. return {
  5271. center: centerPosition,
  5272. radius: radius,
  5273. series: series
  5274. };
  5275. }
  5276. function drawGaugeDataPoints(categories, series, opts, config, context) {
  5277. var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  5278. var gaugeOption = assign({}, {
  5279. type: 'default',
  5280. startAngle: 0.75,
  5281. endAngle: 0.25,
  5282. width: 15,
  5283. labelOffset: 13,
  5284. splitLine: {
  5285. fixRadius: 0,
  5286. splitNumber: 10,
  5287. width: 15,
  5288. color: '#FFFFFF',
  5289. childNumber: 5,
  5290. childWidth: 5
  5291. },
  5292. pointer: {
  5293. width: 15,
  5294. color: 'auto'
  5295. }
  5296. }, opts.extra.gauge);
  5297. if (gaugeOption.oldAngle == undefined) {
  5298. gaugeOption.oldAngle = gaugeOption.startAngle;
  5299. }
  5300. if (gaugeOption.oldData == undefined) {
  5301. gaugeOption.oldData = 0;
  5302. }
  5303. categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);
  5304. var centerPosition = {
  5305. x: opts.width / 2,
  5306. y: opts.height / 2
  5307. };
  5308. var radius = Math.min(centerPosition.x, centerPosition.y);
  5309. radius -= 5 * opts.pix;
  5310. radius -= gaugeOption.width / 2;
  5311. radius = radius < 10 ? 10 : radius;
  5312. var innerRadius = radius - gaugeOption.width;
  5313. var totalAngle = 0;
  5314. //判断仪表盘的样式:default百度样式,progress新样式
  5315. if (gaugeOption.type == 'progress') {
  5316. //## 第一步画中心圆形背景和进度条背景
  5317. //中心圆形背景
  5318. var pieRadius = radius - gaugeOption.width * 3;
  5319. context.beginPath();
  5320. var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);
  5321. //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)
  5322. gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));
  5323. gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
  5324. context.setFillStyle(gradient);
  5325. context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);
  5326. context.fill();
  5327. //画进度条背景
  5328. context.setLineWidth(gaugeOption.width);
  5329. context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
  5330. context.setLineCap('round');
  5331. context.beginPath();
  5332. context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);
  5333. context.stroke();
  5334. //## 第二步画刻度线
  5335. if (gaugeOption.endAngle < gaugeOption.startAngle) {
  5336. totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
  5337. } else {
  5338. totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
  5339. }
  5340. var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
  5341. var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
  5342. var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
  5343. var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
  5344. context.save();
  5345. context.translate(centerPosition.x, centerPosition.y);
  5346. context.rotate((gaugeOption.startAngle - 1) * Math.PI);
  5347. var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;
  5348. var proc = series[0].data * process;
  5349. for (var i = 0; i < len; i++) {
  5350. context.beginPath();
  5351. //刻度线随进度变色
  5352. if (proc > i / len) {
  5353. context.setStrokeStyle(hexToRgb(series[0].color, 1));
  5354. } else {
  5355. context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
  5356. }
  5357. context.setLineWidth(3 * opts.pix);
  5358. context.moveTo(startX, 0);
  5359. context.lineTo(endX, 0);
  5360. context.stroke();
  5361. context.rotate(childAngle * Math.PI);
  5362. }
  5363. context.restore();
  5364. //## 第三步画进度条
  5365. series = getGaugeArcbarDataPoints(series, gaugeOption, process);
  5366. context.setLineWidth(gaugeOption.width);
  5367. context.setStrokeStyle(series[0].color);
  5368. context.setLineCap('round');
  5369. context.beginPath();
  5370. context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);
  5371. context.stroke();
  5372. //## 第四步画指针
  5373. var pointerRadius = radius - gaugeOption.width * 2.5;
  5374. context.save();
  5375. context.translate(centerPosition.x, centerPosition.y);
  5376. context.rotate((series[0]._proportion_ - 1) * Math.PI);
  5377. context.beginPath();
  5378. context.setLineWidth(gaugeOption.width / 3);
  5379. var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);
  5380. gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));
  5381. gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));
  5382. gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));
  5383. context.setStrokeStyle(gradient3);
  5384. context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);
  5385. context.stroke();
  5386. context.beginPath();
  5387. context.setLineWidth(1);
  5388. context.setStrokeStyle(series[0].color);
  5389. context.setFillStyle(series[0].color);
  5390. context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
  5391. context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);
  5392. context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);
  5393. context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
  5394. context.stroke();
  5395. context.fill();
  5396. context.restore();
  5397. //default百度样式
  5398. } else {
  5399. //画背景
  5400. context.setLineWidth(gaugeOption.width);
  5401. context.setLineCap('butt');
  5402. for (var _i26 = 0; _i26 < categories.length; _i26++) {
  5403. var eachCategories = categories[_i26];
  5404. context.beginPath();
  5405. context.setStrokeStyle(eachCategories.color);
  5406. context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);
  5407. context.stroke();
  5408. }
  5409. context.save();
  5410. //画刻度线
  5411. if (gaugeOption.endAngle < gaugeOption.startAngle) {
  5412. totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
  5413. } else {
  5414. totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
  5415. }
  5416. var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
  5417. var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
  5418. var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
  5419. var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
  5420. var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;
  5421. context.translate(centerPosition.x, centerPosition.y);
  5422. context.rotate((gaugeOption.startAngle - 1) * Math.PI);
  5423. for (var _i27 = 0; _i27 < gaugeOption.splitLine.splitNumber + 1; _i27++) {
  5424. context.beginPath();
  5425. context.setStrokeStyle(gaugeOption.splitLine.color);
  5426. context.setLineWidth(2 * opts.pix);
  5427. context.moveTo(_startX2, 0);
  5428. context.lineTo(_endX, 0);
  5429. context.stroke();
  5430. context.rotate(_splitAngle * Math.PI);
  5431. }
  5432. context.restore();
  5433. context.save();
  5434. context.translate(centerPosition.x, centerPosition.y);
  5435. context.rotate((gaugeOption.startAngle - 1) * Math.PI);
  5436. for (var _i28 = 0; _i28 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i28++) {
  5437. context.beginPath();
  5438. context.setStrokeStyle(gaugeOption.splitLine.color);
  5439. context.setLineWidth(1 * opts.pix);
  5440. context.moveTo(_startX2, 0);
  5441. context.lineTo(childendX, 0);
  5442. context.stroke();
  5443. context.rotate(_childAngle * Math.PI);
  5444. }
  5445. context.restore();
  5446. //画指针
  5447. series = getGaugeDataPoints(series, categories, gaugeOption, process);
  5448. for (var _i29 = 0; _i29 < series.length; _i29++) {
  5449. var eachSeries = series[_i29];
  5450. context.save();
  5451. context.translate(centerPosition.x, centerPosition.y);
  5452. context.rotate((eachSeries._proportion_ - 1) * Math.PI);
  5453. context.beginPath();
  5454. context.setFillStyle(eachSeries.color);
  5455. context.moveTo(gaugeOption.pointer.width, 0);
  5456. context.lineTo(0, -gaugeOption.pointer.width / 2);
  5457. context.lineTo(-innerRadius, 0);
  5458. context.lineTo(0, gaugeOption.pointer.width / 2);
  5459. context.lineTo(gaugeOption.pointer.width, 0);
  5460. context.closePath();
  5461. context.fill();
  5462. context.beginPath();
  5463. context.setFillStyle('#FFFFFF');
  5464. context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);
  5465. context.fill();
  5466. context.restore();
  5467. }
  5468. if (opts.dataLabel !== false) {
  5469. drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);
  5470. }
  5471. }
  5472. //画仪表盘标题,副标题
  5473. drawRingTitle(opts, config, context, centerPosition);
  5474. if (process === 1 && opts.type === 'gauge') {
  5475. opts.extra.gauge.oldAngle = series[0]._proportion_;
  5476. opts.extra.gauge.oldData = series[0].data;
  5477. }
  5478. return {
  5479. center: centerPosition,
  5480. radius: radius,
  5481. innerRadius: innerRadius,
  5482. categories: categories,
  5483. totalAngle: totalAngle
  5484. };
  5485. }
  5486. function drawRadarDataPoints(series, opts, config, context) {
  5487. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5488. var radarOption = assign({}, {
  5489. gridColor: '#cccccc',
  5490. gridType: 'radar',
  5491. gridEval: 1,
  5492. axisLabel: false,
  5493. axisLabelTofix: 0,
  5494. labelShow: true,
  5495. labelColor: '#666666',
  5496. labelPointShow: false,
  5497. labelPointRadius: 3,
  5498. labelPointColor: '#cccccc',
  5499. opacity: 0.2,
  5500. gridCount: 3,
  5501. border: false,
  5502. borderWidth: 2,
  5503. linearType: 'none',
  5504. customColor: []
  5505. }, opts.extra.radar);
  5506. var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
  5507. var centerPosition = {
  5508. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  5509. y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
  5510. };
  5511. var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;
  5512. var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;
  5513. var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);
  5514. radius -= config.radarLabelTextMargin * opts.pix;
  5515. radius = radius < 10 ? 10 : radius;
  5516. radius = radarOption.radius ? radarOption.radius : radius;
  5517. // 画分割线
  5518. context.beginPath();
  5519. context.setLineWidth(1 * opts.pix);
  5520. context.setStrokeStyle(radarOption.gridColor);
  5521. coordinateAngle.forEach(function (angle, index) {
  5522. var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
  5523. context.moveTo(centerPosition.x, centerPosition.y);
  5524. if (index % radarOption.gridEval == 0) {
  5525. context.lineTo(pos.x, pos.y);
  5526. }
  5527. });
  5528. context.stroke();
  5529. context.closePath();
  5530. // 画背景网格
  5531. var _loop = function _loop(i) {
  5532. var startPos = {};
  5533. context.beginPath();
  5534. context.setLineWidth(1 * opts.pix);
  5535. context.setStrokeStyle(radarOption.gridColor);
  5536. if (radarOption.gridType == 'radar') {
  5537. coordinateAngle.forEach(function (angle, index) {
  5538. var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);
  5539. if (index === 0) {
  5540. startPos = pos;
  5541. context.moveTo(pos.x, pos.y);
  5542. } else {
  5543. context.lineTo(pos.x, pos.y);
  5544. }
  5545. });
  5546. context.lineTo(startPos.x, startPos.y);
  5547. } else {
  5548. var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);
  5549. context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);
  5550. }
  5551. context.stroke();
  5552. context.closePath();
  5553. };
  5554. for (var i = 1; i <= radarOption.gridCount; i++) {
  5555. _loop(i);
  5556. }
  5557. radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);
  5558. var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
  5559. radarDataPoints.forEach(function (eachSeries, seriesIndex) {
  5560. // 绘制区域数据
  5561. context.beginPath();
  5562. context.setLineWidth(radarOption.borderWidth * opts.pix);
  5563. context.setStrokeStyle(eachSeries.color);
  5564. var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);
  5565. if (radarOption.linearType == 'custom') {
  5566. var grd;
  5567. if (context.createCircularGradient) {
  5568. grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius);
  5569. } else {
  5570. grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, radius);
  5571. }
  5572. grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity));
  5573. grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity));
  5574. fillcolor = grd;
  5575. }
  5576. context.setFillStyle(fillcolor);
  5577. eachSeries.data.forEach(function (item, index) {
  5578. if (index === 0) {
  5579. context.moveTo(item.position.x, item.position.y);
  5580. } else {
  5581. context.lineTo(item.position.x, item.position.y);
  5582. }
  5583. });
  5584. context.closePath();
  5585. context.fill();
  5586. if (radarOption.border === true) {
  5587. context.stroke();
  5588. }
  5589. context.closePath();
  5590. if (opts.dataPointShape !== false) {
  5591. var points = eachSeries.data.map(function (item) {
  5592. return item.position;
  5593. });
  5594. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  5595. }
  5596. });
  5597. // 画刻度值
  5598. if (radarOption.axisLabel === true) {
  5599. var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
  5600. var stepLength = radius / radarOption.gridCount;
  5601. var fontSize = opts.fontSize * opts.pix;
  5602. context.setFontSize(fontSize);
  5603. context.setFillStyle(opts.fontColor);
  5604. context.setTextAlign('left');
  5605. for (var i = 0; i < radarOption.gridCount + 1; i++) {
  5606. var label = i * maxData / radarOption.gridCount;
  5607. label = label.toFixed(radarOption.axisLabelTofix);
  5608. context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);
  5609. }
  5610. }
  5611. // draw label text
  5612. drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
  5613. // draw dataLabel
  5614. if (opts.dataLabel !== false && process === 1) {
  5615. radarDataPoints.forEach(function (eachSeries, seriesIndex) {
  5616. context.beginPath();
  5617. var fontSize = eachSeries.textSize * opts.pix || config.fontSize;
  5618. context.setFontSize(fontSize);
  5619. context.setFillStyle(eachSeries.textColor || opts.fontColor);
  5620. eachSeries.data.forEach(function (item, index) {
  5621. //如果是中心点垂直的上下点位
  5622. if (Math.abs(item.position.x - centerPosition.x) < 2) {
  5623. //如果在上面
  5624. if (item.position.y < centerPosition.y) {
  5625. context.setTextAlign('center');
  5626. context.fillText(item.value, item.position.x, item.position.y - 4);
  5627. } else {
  5628. context.setTextAlign('center');
  5629. context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);
  5630. }
  5631. } else {
  5632. //如果在左侧
  5633. if (item.position.x < centerPosition.x) {
  5634. context.setTextAlign('right');
  5635. context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);
  5636. } else {
  5637. context.setTextAlign('left');
  5638. context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);
  5639. }
  5640. }
  5641. });
  5642. context.closePath();
  5643. context.stroke();
  5644. });
  5645. context.setTextAlign('left');
  5646. }
  5647. return {
  5648. center: centerPosition,
  5649. radius: radius,
  5650. angleList: coordinateAngle
  5651. };
  5652. }
  5653. // 经纬度转墨卡托
  5654. function lonlat2mercator(longitude, latitude) {
  5655. var mercator = Array(2);
  5656. var x = longitude * 20037508.34 / 180;
  5657. var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);
  5658. y = y * 20037508.34 / 180;
  5659. mercator[0] = x;
  5660. mercator[1] = y;
  5661. return mercator;
  5662. }
  5663. // 墨卡托转经纬度
  5664. function mercator2lonlat(longitude, latitude) {
  5665. var lonlat = Array(2);
  5666. var x = longitude / 20037508.34 * 180;
  5667. var y = latitude / 20037508.34 * 180;
  5668. y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);
  5669. lonlat[0] = x;
  5670. lonlat[1] = y;
  5671. return lonlat;
  5672. }
  5673. function getBoundingBox(data) {
  5674. var bounds = {},
  5675. coords;
  5676. bounds.xMin = 180;
  5677. bounds.xMax = 0;
  5678. bounds.yMin = 90;
  5679. bounds.yMax = 0;
  5680. for (var i = 0; i < data.length; i++) {
  5681. var coorda = data[i].geometry.coordinates;
  5682. for (var k = 0; k < coorda.length; k++) {
  5683. coords = coorda[k];
  5684. if (coords.length == 1) {
  5685. coords = coords[0];
  5686. }
  5687. for (var j = 0; j < coords.length; j++) {
  5688. var longitude = coords[j][0];
  5689. var latitude = coords[j][1];
  5690. var point = {
  5691. x: longitude,
  5692. y: latitude
  5693. };
  5694. bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;
  5695. bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;
  5696. bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;
  5697. bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;
  5698. }
  5699. }
  5700. }
  5701. return bounds;
  5702. }
  5703. function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {
  5704. return {
  5705. x: (longitude - bounds.xMin) * scale + xoffset,
  5706. y: (bounds.yMax - latitude) * scale + yoffset
  5707. };
  5708. }
  5709. function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {
  5710. return {
  5711. x: (pointX - xoffset) / scale + bounds.xMin,
  5712. y: bounds.yMax - (pointY - yoffset) / scale
  5713. };
  5714. }
  5715. function isRayIntersectsSegment(poi, s_poi, e_poi) {
  5716. if (s_poi[1] == e_poi[1]) {
  5717. return false;
  5718. }
  5719. if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {
  5720. return false;
  5721. }
  5722. if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {
  5723. return false;
  5724. }
  5725. if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {
  5726. return false;
  5727. }
  5728. if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {
  5729. return false;
  5730. }
  5731. if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {
  5732. return false;
  5733. }
  5734. var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);
  5735. if (xseg < poi[0]) {
  5736. return false;
  5737. } else {
  5738. return true;
  5739. }
  5740. }
  5741. function isPoiWithinPoly(poi, poly, mercator) {
  5742. var sinsc = 0;
  5743. for (var i = 0; i < poly.length; i++) {
  5744. var epoly = poly[i][0];
  5745. if (poly.length == 1) {
  5746. epoly = poly[i][0];
  5747. }
  5748. for (var j = 0; j < epoly.length - 1; j++) {
  5749. var s_poi = epoly[j];
  5750. var e_poi = epoly[j + 1];
  5751. if (mercator) {
  5752. s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);
  5753. e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);
  5754. }
  5755. if (isRayIntersectsSegment(poi, s_poi, e_poi)) {
  5756. sinsc += 1;
  5757. }
  5758. }
  5759. }
  5760. if (sinsc % 2 == 1) {
  5761. return true;
  5762. } else {
  5763. return false;
  5764. }
  5765. }
  5766. function drawMapDataPoints(series, opts, config, context) {
  5767. var mapOption = assign({}, {
  5768. border: true,
  5769. mercator: false,
  5770. borderWidth: 1,
  5771. active: true,
  5772. borderColor: '#666666',
  5773. fillOpacity: 0.6,
  5774. activeBorderColor: '#f04864',
  5775. activeFillColor: '#facc14',
  5776. activeFillOpacity: 1
  5777. }, opts.extra.map);
  5778. var coords, point;
  5779. var data = series;
  5780. var bounds = getBoundingBox(data);
  5781. if (mapOption.mercator) {
  5782. var max = lonlat2mercator(bounds.xMax, bounds.yMax);
  5783. var min = lonlat2mercator(bounds.xMin, bounds.yMin);
  5784. bounds.xMax = max[0];
  5785. bounds.yMax = max[1];
  5786. bounds.xMin = min[0];
  5787. bounds.yMin = min[1];
  5788. }
  5789. var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);
  5790. var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);
  5791. var scale = xScale < yScale ? xScale : yScale;
  5792. var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;
  5793. var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;
  5794. for (var i = 0; i < data.length; i++) {
  5795. context.beginPath();
  5796. context.setLineWidth(mapOption.borderWidth * opts.pix);
  5797. context.setStrokeStyle(mapOption.borderColor);
  5798. context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity || mapOption.fillOpacity));
  5799. if (mapOption.active == true && opts.tooltip) {
  5800. if (opts.tooltip.index == i) {
  5801. context.setStrokeStyle(mapOption.activeBorderColor);
  5802. context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));
  5803. }
  5804. }
  5805. var coorda = data[i].geometry.coordinates;
  5806. for (var k = 0; k < coorda.length; k++) {
  5807. coords = coorda[k];
  5808. if (coords.length == 1) {
  5809. coords = coords[0];
  5810. }
  5811. for (var j = 0; j < coords.length; j++) {
  5812. var gaosi = Array(2);
  5813. if (mapOption.mercator) {
  5814. gaosi = lonlat2mercator(coords[j][0], coords[j][1]);
  5815. } else {
  5816. gaosi = coords[j];
  5817. }
  5818. point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);
  5819. if (j === 0) {
  5820. context.beginPath();
  5821. context.moveTo(point.x, point.y);
  5822. } else {
  5823. context.lineTo(point.x, point.y);
  5824. }
  5825. }
  5826. context.fill();
  5827. if (mapOption.border == true) {
  5828. context.stroke();
  5829. }
  5830. }
  5831. }
  5832. if (opts.dataLabel == true) {
  5833. for (var i = 0; i < data.length; i++) {
  5834. var centerPoint = data[i].properties.centroid;
  5835. if (centerPoint) {
  5836. if (mapOption.mercator) {
  5837. centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);
  5838. }
  5839. point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);
  5840. var fontSize = data[i].textSize * opts.pix || config.fontSize;
  5841. var fontColor = data[i].textColor || opts.fontColor;
  5842. if (mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i) {
  5843. fontColor = mapOption.activeTextColor;
  5844. }
  5845. var text = data[i].properties.name;
  5846. context.beginPath();
  5847. context.setFontSize(fontSize);
  5848. context.setFillStyle(fontColor);
  5849. context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);
  5850. context.closePath();
  5851. context.stroke();
  5852. }
  5853. }
  5854. }
  5855. opts.chartData.mapData = {
  5856. bounds: bounds,
  5857. scale: scale,
  5858. xoffset: xoffset,
  5859. yoffset: yoffset,
  5860. mercator: mapOption.mercator
  5861. };
  5862. drawToolTipBridge(opts, config, context, 1);
  5863. context.draw();
  5864. }
  5865. function normalInt(min, max, iter) {
  5866. iter = iter == 0 ? 1 : iter;
  5867. var arr = [];
  5868. for (var i = 0; i < iter; i++) {
  5869. arr[i] = Math.random();
  5870. }
  5871. ;
  5872. return Math.floor(arr.reduce(function (i, j) {
  5873. return i + j;
  5874. }) / iter * (max - min)) + min;
  5875. }
  5876. ;
  5877. function collisionNew(area, points, width, height) {
  5878. var isIn = false;
  5879. for (var i = 0; i < points.length; i++) {
  5880. if (points[i].area) {
  5881. if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {
  5882. if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {
  5883. isIn = true;
  5884. break;
  5885. } else {
  5886. isIn = false;
  5887. }
  5888. } else {
  5889. isIn = true;
  5890. break;
  5891. }
  5892. }
  5893. }
  5894. return isIn;
  5895. }
  5896. ;
  5897. function getWordCloudPoint(opts, type, context) {
  5898. var points = opts.series;
  5899. switch (type) {
  5900. case 'normal':
  5901. for (var i = 0; i < points.length; i++) {
  5902. var text = points[i].name;
  5903. var tHeight = points[i].textSize * opts.pix;
  5904. var tWidth = measureText(text, tHeight, context);
  5905. var x = void 0,
  5906. y = void 0;
  5907. var area = void 0;
  5908. var breaknum = 0;
  5909. while (true) {
  5910. breaknum++;
  5911. x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;
  5912. y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;
  5913. area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];
  5914. var isCollision = collisionNew(area, points, opts.width, opts.height);
  5915. if (!isCollision) break;
  5916. if (breaknum == 1000) {
  5917. area = [-100, -100, -100, -100];
  5918. break;
  5919. }
  5920. }
  5921. ;
  5922. points[i].area = area;
  5923. }
  5924. break;
  5925. case 'vertical':
  5926. var Spin = function Spin() {
  5927. //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)
  5928. if (Math.random() > 0.7) {
  5929. return true;
  5930. } else {
  5931. return false;
  5932. }
  5933. ;
  5934. };
  5935. ;
  5936. for (var _i30 = 0; _i30 < points.length; _i30++) {
  5937. var _text = points[_i30].name;
  5938. var _tHeight = points[_i30].textSize * opts.pix;
  5939. var _tWidth = measureText(_text, _tHeight, context);
  5940. var isSpin = Spin();
  5941. var _x = void 0,
  5942. _y = void 0,
  5943. _area = void 0,
  5944. areav = void 0;
  5945. var _breaknum = 0;
  5946. while (true) {
  5947. _breaknum++;
  5948. var _isCollision = void 0;
  5949. if (isSpin) {
  5950. _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
  5951. _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
  5952. _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];
  5953. areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];
  5954. _isCollision = collisionNew(areav, points, opts.height, opts.width);
  5955. } else {
  5956. _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
  5957. _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
  5958. _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];
  5959. _isCollision = collisionNew(_area, points, opts.width, opts.height);
  5960. }
  5961. if (!_isCollision) break;
  5962. if (_breaknum == 1000) {
  5963. _area = [-1000, -1000, -1000, -1000];
  5964. break;
  5965. }
  5966. }
  5967. ;
  5968. if (isSpin) {
  5969. points[_i30].area = areav;
  5970. points[_i30].areav = _area;
  5971. } else {
  5972. points[_i30].area = _area;
  5973. }
  5974. points[_i30].rotate = isSpin;
  5975. }
  5976. ;
  5977. break;
  5978. }
  5979. return points;
  5980. }
  5981. function drawWordCloudDataPoints(series, opts, config, context) {
  5982. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  5983. var wordOption = assign({}, {
  5984. type: 'normal',
  5985. autoColors: true
  5986. }, opts.extra.word);
  5987. if (!opts.chartData.wordCloudData) {
  5988. opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);
  5989. }
  5990. context.beginPath();
  5991. context.setFillStyle(opts.background);
  5992. context.rect(0, 0, opts.width, opts.height);
  5993. context.fill();
  5994. context.save();
  5995. var points = opts.chartData.wordCloudData;
  5996. context.translate(opts.width / 2, opts.height / 2);
  5997. for (var i = 0; i < points.length; i++) {
  5998. context.save();
  5999. if (points[i].rotate) {
  6000. context.rotate(90 * Math.PI / 180);
  6001. }
  6002. var text = points[i].name;
  6003. var tHeight = points[i].textSize * opts.pix;
  6004. var tWidth = measureText(text, tHeight, context);
  6005. context.beginPath();
  6006. context.setStrokeStyle(points[i].color);
  6007. context.setFillStyle(points[i].color);
  6008. context.setFontSize(tHeight);
  6009. if (points[i].rotate) {
  6010. if (points[i].areav[0] > 0) {
  6011. if (opts.tooltip) {
  6012. if (opts.tooltip.index == i) {
  6013. context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
  6014. } else {
  6015. context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
  6016. }
  6017. } else {
  6018. context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
  6019. }
  6020. }
  6021. } else {
  6022. if (points[i].area[0] > 0) {
  6023. if (opts.tooltip) {
  6024. if (opts.tooltip.index == i) {
  6025. context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
  6026. } else {
  6027. context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
  6028. }
  6029. } else {
  6030. context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
  6031. }
  6032. }
  6033. }
  6034. context.stroke();
  6035. context.restore();
  6036. }
  6037. context.restore();
  6038. }
  6039. function drawFunnelDataPoints(series, opts, config, context) {
  6040. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  6041. var funnelOption = assign({}, {
  6042. type: 'funnel',
  6043. activeWidth: 10,
  6044. activeOpacity: 0.3,
  6045. border: false,
  6046. borderWidth: 2,
  6047. borderColor: '#FFFFFF',
  6048. fillOpacity: 1,
  6049. minSize: 0,
  6050. labelAlign: 'right',
  6051. linearType: 'none',
  6052. customColor: []
  6053. }, opts.extra.funnel);
  6054. var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;
  6055. var centerPosition = {
  6056. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  6057. y: opts.height - opts.area[2]
  6058. };
  6059. var activeWidth = funnelOption.activeWidth * opts.pix;
  6060. var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);
  6061. var seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process);
  6062. context.save();
  6063. context.translate(centerPosition.x, centerPosition.y);
  6064. funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);
  6065. if (funnelOption.type == 'pyramid') {
  6066. for (var i = 0; i < seriesNew.length; i++) {
  6067. if (i == seriesNew.length - 1) {
  6068. if (opts.tooltip) {
  6069. if (opts.tooltip.index == i) {
  6070. context.beginPath();
  6071. context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));
  6072. context.moveTo(-activeWidth, -eachSpacing);
  6073. context.lineTo(-seriesNew[i].radius - activeWidth, 0);
  6074. context.lineTo(seriesNew[i].radius + activeWidth, 0);
  6075. context.lineTo(activeWidth, -eachSpacing);
  6076. context.lineTo(-activeWidth, -eachSpacing);
  6077. context.closePath();
  6078. context.fill();
  6079. }
  6080. }
  6081. seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];
  6082. context.beginPath();
  6083. context.setLineWidth(funnelOption.borderWidth * opts.pix);
  6084. context.setStrokeStyle(funnelOption.borderColor);
  6085. var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);
  6086. if (funnelOption.linearType == 'custom') {
  6087. var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);
  6088. grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
  6089. grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));
  6090. grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
  6091. fillColor = grd;
  6092. }
  6093. context.setFillStyle(fillColor);
  6094. context.moveTo(0, -eachSpacing);
  6095. context.lineTo(-seriesNew[i].radius, 0);
  6096. context.lineTo(seriesNew[i].radius, 0);
  6097. context.lineTo(0, -eachSpacing);
  6098. context.closePath();
  6099. context.fill();
  6100. if (funnelOption.border == true) {
  6101. context.stroke();
  6102. }
  6103. } else {
  6104. if (opts.tooltip) {
  6105. if (opts.tooltip.index == i) {
  6106. context.beginPath();
  6107. context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));
  6108. context.moveTo(0, 0);
  6109. context.lineTo(-seriesNew[i].radius - activeWidth, 0);
  6110. context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing);
  6111. context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing);
  6112. context.lineTo(seriesNew[i].radius + activeWidth, 0);
  6113. context.lineTo(0, 0);
  6114. context.closePath();
  6115. context.fill();
  6116. }
  6117. }
  6118. seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];
  6119. context.beginPath();
  6120. context.setLineWidth(funnelOption.borderWidth * opts.pix);
  6121. context.setStrokeStyle(funnelOption.borderColor);
  6122. var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);
  6123. if (funnelOption.linearType == 'custom') {
  6124. var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);
  6125. grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
  6126. grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));
  6127. grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
  6128. fillColor = grd;
  6129. }
  6130. context.setFillStyle(fillColor);
  6131. context.moveTo(0, 0);
  6132. context.lineTo(-seriesNew[i].radius, 0);
  6133. context.lineTo(-seriesNew[i + 1].radius, -eachSpacing);
  6134. context.lineTo(seriesNew[i + 1].radius, -eachSpacing);
  6135. context.lineTo(seriesNew[i].radius, 0);
  6136. context.lineTo(0, 0);
  6137. context.closePath();
  6138. context.fill();
  6139. if (funnelOption.border == true) {
  6140. context.stroke();
  6141. }
  6142. }
  6143. context.translate(0, -eachSpacing);
  6144. }
  6145. } else {
  6146. context.translate(0, -(seriesNew.length - 1) * eachSpacing);
  6147. for (var _i31 = 0; _i31 < seriesNew.length; _i31++) {
  6148. if (_i31 == seriesNew.length - 1) {
  6149. if (opts.tooltip) {
  6150. if (opts.tooltip.index == _i31) {
  6151. context.beginPath();
  6152. context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));
  6153. context.moveTo(-activeWidth - funnelOption.minSize / 2, 0);
  6154. context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);
  6155. context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);
  6156. context.lineTo(activeWidth + funnelOption.minSize / 2, 0);
  6157. context.lineTo(-activeWidth - funnelOption.minSize / 2, 0);
  6158. context.closePath();
  6159. context.fill();
  6160. }
  6161. }
  6162. seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[_i31].radius, centerPosition.y];
  6163. context.beginPath();
  6164. context.setLineWidth(funnelOption.borderWidth * opts.pix);
  6165. context.setStrokeStyle(funnelOption.borderColor);
  6166. var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);
  6167. if (funnelOption.linearType == 'custom') {
  6168. var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);
  6169. grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
  6170. grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));
  6171. grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
  6172. fillColor = grd;
  6173. }
  6174. context.setFillStyle(fillColor);
  6175. context.moveTo(0, 0);
  6176. context.lineTo(-funnelOption.minSize / 2, 0);
  6177. context.lineTo(-seriesNew[_i31].radius, -eachSpacing);
  6178. context.lineTo(seriesNew[_i31].radius, -eachSpacing);
  6179. context.lineTo(funnelOption.minSize / 2, 0);
  6180. context.lineTo(0, 0);
  6181. context.closePath();
  6182. context.fill();
  6183. if (funnelOption.border == true) {
  6184. context.stroke();
  6185. }
  6186. } else {
  6187. if (opts.tooltip) {
  6188. if (opts.tooltip.index == _i31) {
  6189. context.beginPath();
  6190. context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));
  6191. context.moveTo(0, 0);
  6192. context.lineTo(-seriesNew[_i31 + 1].radius - activeWidth, 0);
  6193. context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);
  6194. context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);
  6195. context.lineTo(seriesNew[_i31 + 1].radius + activeWidth, 0);
  6196. context.lineTo(0, 0);
  6197. context.closePath();
  6198. context.fill();
  6199. }
  6200. }
  6201. seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31), centerPosition.x + seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31 - 1)];
  6202. context.beginPath();
  6203. context.setLineWidth(funnelOption.borderWidth * opts.pix);
  6204. context.setStrokeStyle(funnelOption.borderColor);
  6205. var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);
  6206. if (funnelOption.linearType == 'custom') {
  6207. var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);
  6208. grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
  6209. grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));
  6210. grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
  6211. fillColor = grd;
  6212. }
  6213. context.setFillStyle(fillColor);
  6214. context.moveTo(0, 0);
  6215. context.lineTo(-seriesNew[_i31 + 1].radius, 0);
  6216. context.lineTo(-seriesNew[_i31].radius, -eachSpacing);
  6217. context.lineTo(seriesNew[_i31].radius, -eachSpacing);
  6218. context.lineTo(seriesNew[_i31 + 1].radius, 0);
  6219. context.lineTo(0, 0);
  6220. context.closePath();
  6221. context.fill();
  6222. if (funnelOption.border == true) {
  6223. context.stroke();
  6224. }
  6225. }
  6226. context.translate(0, eachSpacing);
  6227. }
  6228. }
  6229. context.restore();
  6230. if (opts.dataLabel !== false && process === 1) {
  6231. drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
  6232. }
  6233. if (process === 1) {
  6234. drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
  6235. }
  6236. return {
  6237. center: centerPosition,
  6238. radius: radius,
  6239. series: seriesNew
  6240. };
  6241. }
  6242. function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {
  6243. for (var i = 0; i < series.length; i++) {
  6244. var item = series[i];
  6245. if (item.labelShow === false) {
  6246. continue;
  6247. }
  6248. var startX = void 0,
  6249. endX = void 0,
  6250. startY = void 0,
  6251. fontSize = void 0;
  6252. var text = item.formatter ? item.formatter(item, i, series, opts) : util.toFixed(item._proportion_ * 100) + '%';
  6253. text = item.labelText ? item.labelText : text;
  6254. if (labelAlign == 'right') {
  6255. if (i == series.length - 1) {
  6256. startX = (item.funnelArea[2] + centerPosition.x) / 2;
  6257. } else {
  6258. startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;
  6259. }
  6260. endX = startX + activeWidth * 2;
  6261. startY = item.funnelArea[1] + eachSpacing / 2;
  6262. fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;
  6263. context.setLineWidth(1 * opts.pix);
  6264. context.setStrokeStyle(item.color);
  6265. context.setFillStyle(item.color);
  6266. context.beginPath();
  6267. context.moveTo(startX, startY);
  6268. context.lineTo(endX, startY);
  6269. context.stroke();
  6270. context.closePath();
  6271. context.beginPath();
  6272. context.moveTo(endX, startY);
  6273. context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);
  6274. context.closePath();
  6275. context.fill();
  6276. context.beginPath();
  6277. context.setFontSize(fontSize);
  6278. context.setFillStyle(item.textColor || opts.fontColor);
  6279. context.fillText(text, endX + 5, startY + fontSize / 2 - 2);
  6280. context.closePath();
  6281. context.stroke();
  6282. context.closePath();
  6283. }
  6284. if (labelAlign == 'left') {
  6285. if (i == series.length - 1) {
  6286. startX = (item.funnelArea[0] + centerPosition.x) / 2;
  6287. } else {
  6288. startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;
  6289. }
  6290. endX = startX - activeWidth * 2;
  6291. startY = item.funnelArea[1] + eachSpacing / 2;
  6292. fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;
  6293. context.setLineWidth(1 * opts.pix);
  6294. context.setStrokeStyle(item.color);
  6295. context.setFillStyle(item.color);
  6296. context.beginPath();
  6297. context.moveTo(startX, startY);
  6298. context.lineTo(endX, startY);
  6299. context.stroke();
  6300. context.closePath();
  6301. context.beginPath();
  6302. context.moveTo(endX, startY);
  6303. context.arc(endX, startY, 2, 0, 2 * Math.PI);
  6304. context.closePath();
  6305. context.fill();
  6306. context.beginPath();
  6307. context.setFontSize(fontSize);
  6308. context.setFillStyle(item.textColor || opts.fontColor);
  6309. context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);
  6310. context.closePath();
  6311. context.stroke();
  6312. context.closePath();
  6313. }
  6314. }
  6315. }
  6316. function drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {
  6317. for (var i = 0; i < series.length; i++) {
  6318. var item = series[i];
  6319. var startY = void 0,
  6320. fontSize = void 0;
  6321. if (item.centerText) {
  6322. startY = item.funnelArea[1] + eachSpacing / 2;
  6323. fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix;
  6324. context.beginPath();
  6325. context.setFontSize(fontSize);
  6326. context.setFillStyle(item.centerTextColor || "#FFFFFF");
  6327. context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2);
  6328. context.closePath();
  6329. context.stroke();
  6330. context.closePath();
  6331. }
  6332. }
  6333. }
  6334. function drawCanvas(opts, context) {
  6335. context.save();
  6336. context.translate(0, 0.5);
  6337. context.restore();
  6338. context.draw();
  6339. }
  6340. var Timing = {
  6341. easeIn: function easeIn(pos) {
  6342. return Math.pow(pos, 3);
  6343. },
  6344. easeOut: function easeOut(pos) {
  6345. return Math.pow(pos - 1, 3) + 1;
  6346. },
  6347. easeInOut: function easeInOut(pos) {
  6348. if ((pos /= 0.5) < 1) {
  6349. return 0.5 * Math.pow(pos, 3);
  6350. } else {
  6351. return 0.5 * (Math.pow(pos - 2, 3) + 2);
  6352. }
  6353. },
  6354. linear: function linear(pos) {
  6355. return pos;
  6356. }
  6357. };
  6358. function Animation(opts) {
  6359. this.isStop = false;
  6360. opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;
  6361. opts.timing = opts.timing || 'easeInOut';
  6362. var delay = 17;
  6363. function createAnimationFrame() {
  6364. if (typeof setTimeout !== 'undefined') {
  6365. return function (step, delay) {
  6366. setTimeout(function () {
  6367. var timeStamp = +new Date();
  6368. step(timeStamp);
  6369. }, delay);
  6370. };
  6371. } else if (typeof requestAnimationFrame !== 'undefined') {
  6372. return requestAnimationFrame;
  6373. } else {
  6374. return function (step) {
  6375. step(null);
  6376. };
  6377. }
  6378. }
  6379. ;
  6380. var animationFrame = createAnimationFrame();
  6381. var startTimeStamp = null;
  6382. var _step = function step(timestamp) {
  6383. if (timestamp === null || this.isStop === true) {
  6384. opts.onProcess && opts.onProcess(1);
  6385. opts.onAnimationFinish && opts.onAnimationFinish();
  6386. return;
  6387. }
  6388. if (startTimeStamp === null) {
  6389. startTimeStamp = timestamp;
  6390. }
  6391. if (timestamp - startTimeStamp < opts.duration) {
  6392. var process = (timestamp - startTimeStamp) / opts.duration;
  6393. var timingFunction = Timing[opts.timing];
  6394. process = timingFunction(process);
  6395. opts.onProcess && opts.onProcess(process);
  6396. animationFrame(_step, delay);
  6397. } else {
  6398. opts.onProcess && opts.onProcess(1);
  6399. opts.onAnimationFinish && opts.onAnimationFinish();
  6400. }
  6401. };
  6402. _step = _step.bind(this);
  6403. animationFrame(_step, delay);
  6404. }
  6405. Animation.prototype.stop = function () {
  6406. this.isStop = true;
  6407. };
  6408. function drawCharts(type, opts, config, context) {
  6409. var _this2 = this;
  6410. var _this = this;
  6411. var series = opts.series;
  6412. //兼容ECharts饼图类数据格式
  6413. if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {
  6414. series = fixPieSeries(series, opts, config);
  6415. }
  6416. var categories = opts.categories;
  6417. if (type === 'mount') {
  6418. categories = [];
  6419. for (var j = 0; j < series.length; j++) {
  6420. if (series[j].show !== false) categories.push(series[j].name);
  6421. }
  6422. opts.categories = categories;
  6423. }
  6424. series = fillSeries(series, opts, config);
  6425. var duration = opts.animation ? opts.duration : 0;
  6426. _this.animationInstance && _this.animationInstance.stop();
  6427. var seriesMA = null;
  6428. if (type == 'candle') {
  6429. var average = assign({}, opts.extra.candle.average);
  6430. if (average.show) {
  6431. seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);
  6432. seriesMA = fillSeries(seriesMA, opts, config);
  6433. opts.seriesMA = seriesMA;
  6434. } else if (opts.seriesMA) {
  6435. seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);
  6436. } else {
  6437. seriesMA = series;
  6438. }
  6439. } else {
  6440. seriesMA = series;
  6441. }
  6442. /* 过滤掉show=false的series */
  6443. opts._series_ = series = filterSeries(series);
  6444. //重新计算图表区域
  6445. opts.area = new Array(4);
  6446. //复位绘图区域
  6447. for (var _j11 = 0; _j11 < 4; _j11++) {
  6448. opts.area[_j11] = opts.padding[_j11] * opts.pix;
  6449. }
  6450. //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域
  6451. var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),
  6452. legendHeight = _calLegendData.area.wholeHeight,
  6453. legendWidth = _calLegendData.area.wholeWidth;
  6454. switch (opts.legend.position) {
  6455. case 'top':
  6456. opts.area[0] += legendHeight;
  6457. break;
  6458. case 'bottom':
  6459. opts.area[2] += legendHeight;
  6460. break;
  6461. case 'left':
  6462. opts.area[3] += legendWidth;
  6463. break;
  6464. case 'right':
  6465. opts.area[1] += legendWidth;
  6466. break;
  6467. }
  6468. var _calYAxisData = {},
  6469. yAxisWidth = 0;
  6470. if (opts.type === 'line' || opts.type === 'column' || opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {
  6471. _calYAxisData = calYAxisData(series, opts, config, context);
  6472. yAxisWidth = _calYAxisData.yAxisWidth;
  6473. //如果显示Y轴标题
  6474. if (opts.yAxis.showTitle) {
  6475. var maxTitleHeight = 0;
  6476. for (var i = 0; i < opts.yAxis.data.length; i++) {
  6477. maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);
  6478. }
  6479. opts.area[0] += maxTitleHeight;
  6480. }
  6481. var rightIndex = 0,
  6482. leftIndex = 0;
  6483. //计算主绘图区域左右位置
  6484. for (var _i32 = 0; _i32 < yAxisWidth.length; _i32++) {
  6485. if (yAxisWidth[_i32].position == 'left') {
  6486. if (leftIndex > 0) {
  6487. opts.area[3] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;
  6488. } else {
  6489. opts.area[3] += yAxisWidth[_i32].width;
  6490. }
  6491. leftIndex += 1;
  6492. } else if (yAxisWidth[_i32].position == 'right') {
  6493. if (rightIndex > 0) {
  6494. opts.area[1] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;
  6495. } else {
  6496. opts.area[1] += yAxisWidth[_i32].width;
  6497. }
  6498. rightIndex += 1;
  6499. }
  6500. }
  6501. } else {
  6502. config.yAxisWidth = yAxisWidth;
  6503. }
  6504. opts.chartData.yAxisData = _calYAxisData;
  6505. if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {
  6506. opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);
  6507. var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),
  6508. xAxisHeight = _calCategoriesData.xAxisHeight,
  6509. angle = _calCategoriesData.angle;
  6510. config.xAxisHeight = xAxisHeight;
  6511. config._xAxisTextAngle_ = angle;
  6512. opts.area[2] += xAxisHeight;
  6513. opts.chartData.categoriesData = _calCategoriesData;
  6514. } else {
  6515. if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {
  6516. opts.chartData.xAxisData = calXAxisData(series, opts, config, context);
  6517. categories = opts.chartData.xAxisData.rangesFormat;
  6518. var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),
  6519. _xAxisHeight = _calCategoriesData2.xAxisHeight,
  6520. _angle = _calCategoriesData2.angle;
  6521. config.xAxisHeight = _xAxisHeight;
  6522. config._xAxisTextAngle_ = _angle;
  6523. opts.area[2] += _xAxisHeight;
  6524. opts.chartData.categoriesData = _calCategoriesData2;
  6525. } else {
  6526. opts.chartData.xAxisData = {
  6527. xAxisPoints: []
  6528. };
  6529. }
  6530. }
  6531. //计算右对齐偏移距离
  6532. if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {
  6533. var offsetLeft = 0,
  6534. xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
  6535. startX = opts.chartData.xAxisData.startX,
  6536. endX = opts.chartData.xAxisData.endX,
  6537. eachSpacing = opts.chartData.xAxisData.eachSpacing;
  6538. var totalWidth = eachSpacing * (xAxisPoints.length - 1);
  6539. var screenWidth = endX - startX;
  6540. offsetLeft = screenWidth - totalWidth;
  6541. _this.scrollOption.currentOffset = offsetLeft;
  6542. _this.scrollOption.startTouchX = offsetLeft;
  6543. _this.scrollOption.distance = 0;
  6544. _this.scrollOption.lastMoveTime = 0;
  6545. opts._scrollDistance_ = offsetLeft;
  6546. }
  6547. if (type === 'pie' || type === 'ring' || type === 'rose') {
  6548. config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);
  6549. }
  6550. switch (type) {
  6551. case 'word':
  6552. this.animationInstance = new Animation({
  6553. timing: opts.timing,
  6554. duration: duration,
  6555. onProcess: function onProcess(process) {
  6556. context.clearRect(0, 0, opts.width, opts.height);
  6557. if (opts.rotate) {
  6558. contextRotate(context, opts);
  6559. }
  6560. drawWordCloudDataPoints(series, opts, config, context, process);
  6561. drawCanvas(opts, context);
  6562. },
  6563. onAnimationFinish: function onAnimationFinish() {
  6564. _this.uevent.trigger('renderComplete');
  6565. }
  6566. });
  6567. break;
  6568. case 'map':
  6569. context.clearRect(0, 0, opts.width, opts.height);
  6570. drawMapDataPoints(series, opts, config, context);
  6571. setTimeout(function () {
  6572. _this2.uevent.trigger('renderComplete');
  6573. }, 50);
  6574. break;
  6575. case 'funnel':
  6576. this.animationInstance = new Animation({
  6577. timing: opts.timing,
  6578. duration: duration,
  6579. onProcess: function onProcess(process) {
  6580. context.clearRect(0, 0, opts.width, opts.height);
  6581. if (opts.rotate) {
  6582. contextRotate(context, opts);
  6583. }
  6584. opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);
  6585. drawLegend(opts.series, opts, config, context, opts.chartData);
  6586. drawToolTipBridge(opts, config, context, process);
  6587. drawCanvas(opts, context);
  6588. },
  6589. onAnimationFinish: function onAnimationFinish() {
  6590. _this.uevent.trigger('renderComplete');
  6591. }
  6592. });
  6593. break;
  6594. case 'line':
  6595. this.animationInstance = new Animation({
  6596. timing: opts.timing,
  6597. duration: duration,
  6598. onProcess: function onProcess(process) {
  6599. context.clearRect(0, 0, opts.width, opts.height);
  6600. if (opts.rotate) {
  6601. contextRotate(context, opts);
  6602. }
  6603. drawYAxisGrid(categories, opts, config, context);
  6604. drawXAxis(categories, opts, config, context);
  6605. var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),
  6606. xAxisPoints = _drawLineDataPoints.xAxisPoints,
  6607. calPoints = _drawLineDataPoints.calPoints,
  6608. eachSpacing = _drawLineDataPoints.eachSpacing;
  6609. opts.chartData.xAxisPoints = xAxisPoints;
  6610. opts.chartData.calPoints = calPoints;
  6611. opts.chartData.eachSpacing = eachSpacing;
  6612. drawYAxis(series, opts, config, context);
  6613. if (opts.enableMarkLine !== false && process === 1) {
  6614. drawMarkLine(opts, config, context);
  6615. }
  6616. drawLegend(opts.series, opts, config, context, opts.chartData);
  6617. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6618. drawCanvas(opts, context);
  6619. },
  6620. onAnimationFinish: function onAnimationFinish() {
  6621. _this.uevent.trigger('renderComplete');
  6622. }
  6623. });
  6624. break;
  6625. case 'scatter':
  6626. this.animationInstance = new Animation({
  6627. timing: opts.timing,
  6628. duration: duration,
  6629. onProcess: function onProcess(process) {
  6630. context.clearRect(0, 0, opts.width, opts.height);
  6631. if (opts.rotate) {
  6632. contextRotate(context, opts);
  6633. }
  6634. drawYAxisGrid(categories, opts, config, context);
  6635. drawXAxis(categories, opts, config, context);
  6636. var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),
  6637. xAxisPoints = _drawScatterDataPoints.xAxisPoints,
  6638. calPoints = _drawScatterDataPoints.calPoints,
  6639. eachSpacing = _drawScatterDataPoints.eachSpacing;
  6640. opts.chartData.xAxisPoints = xAxisPoints;
  6641. opts.chartData.calPoints = calPoints;
  6642. opts.chartData.eachSpacing = eachSpacing;
  6643. drawYAxis(series, opts, config, context);
  6644. if (opts.enableMarkLine !== false && process === 1) {
  6645. drawMarkLine(opts, config, context);
  6646. }
  6647. drawLegend(opts.series, opts, config, context, opts.chartData);
  6648. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6649. drawCanvas(opts, context);
  6650. },
  6651. onAnimationFinish: function onAnimationFinish() {
  6652. _this.uevent.trigger('renderComplete');
  6653. }
  6654. });
  6655. break;
  6656. case 'bubble':
  6657. this.animationInstance = new Animation({
  6658. timing: opts.timing,
  6659. duration: duration,
  6660. onProcess: function onProcess(process) {
  6661. context.clearRect(0, 0, opts.width, opts.height);
  6662. if (opts.rotate) {
  6663. contextRotate(context, opts);
  6664. }
  6665. drawYAxisGrid(categories, opts, config, context);
  6666. drawXAxis(categories, opts, config, context);
  6667. var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),
  6668. xAxisPoints = _drawBubbleDataPoints.xAxisPoints,
  6669. calPoints = _drawBubbleDataPoints.calPoints,
  6670. eachSpacing = _drawBubbleDataPoints.eachSpacing;
  6671. opts.chartData.xAxisPoints = xAxisPoints;
  6672. opts.chartData.calPoints = calPoints;
  6673. opts.chartData.eachSpacing = eachSpacing;
  6674. drawYAxis(series, opts, config, context);
  6675. if (opts.enableMarkLine !== false && process === 1) {
  6676. drawMarkLine(opts, config, context);
  6677. }
  6678. drawLegend(opts.series, opts, config, context, opts.chartData);
  6679. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6680. drawCanvas(opts, context);
  6681. },
  6682. onAnimationFinish: function onAnimationFinish() {
  6683. _this.uevent.trigger('renderComplete');
  6684. }
  6685. });
  6686. break;
  6687. case 'mix':
  6688. this.animationInstance = new Animation({
  6689. timing: opts.timing,
  6690. duration: duration,
  6691. onProcess: function onProcess(process) {
  6692. context.clearRect(0, 0, opts.width, opts.height);
  6693. if (opts.rotate) {
  6694. contextRotate(context, opts);
  6695. }
  6696. drawYAxisGrid(categories, opts, config, context);
  6697. drawXAxis(categories, opts, config, context);
  6698. var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),
  6699. xAxisPoints = _drawMixDataPoints.xAxisPoints,
  6700. calPoints = _drawMixDataPoints.calPoints,
  6701. eachSpacing = _drawMixDataPoints.eachSpacing;
  6702. opts.chartData.xAxisPoints = xAxisPoints;
  6703. opts.chartData.calPoints = calPoints;
  6704. opts.chartData.eachSpacing = eachSpacing;
  6705. drawYAxis(series, opts, config, context);
  6706. if (opts.enableMarkLine !== false && process === 1) {
  6707. drawMarkLine(opts, config, context);
  6708. }
  6709. drawLegend(opts.series, opts, config, context, opts.chartData);
  6710. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6711. drawCanvas(opts, context);
  6712. },
  6713. onAnimationFinish: function onAnimationFinish() {
  6714. _this.uevent.trigger('renderComplete');
  6715. }
  6716. });
  6717. break;
  6718. case 'column':
  6719. this.animationInstance = new Animation({
  6720. timing: opts.timing,
  6721. duration: duration,
  6722. onProcess: function onProcess(process) {
  6723. context.clearRect(0, 0, opts.width, opts.height);
  6724. if (opts.rotate) {
  6725. contextRotate(context, opts);
  6726. }
  6727. drawYAxisGrid(categories, opts, config, context);
  6728. drawXAxis(categories, opts, config, context);
  6729. var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),
  6730. xAxisPoints = _drawColumnDataPoints.xAxisPoints,
  6731. calPoints = _drawColumnDataPoints.calPoints,
  6732. eachSpacing = _drawColumnDataPoints.eachSpacing;
  6733. opts.chartData.xAxisPoints = xAxisPoints;
  6734. opts.chartData.calPoints = calPoints;
  6735. opts.chartData.eachSpacing = eachSpacing;
  6736. drawYAxis(series, opts, config, context);
  6737. if (opts.enableMarkLine !== false && process === 1) {
  6738. drawMarkLine(opts, config, context);
  6739. }
  6740. drawLegend(opts.series, opts, config, context, opts.chartData);
  6741. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6742. drawCanvas(opts, context);
  6743. },
  6744. onAnimationFinish: function onAnimationFinish() {
  6745. _this.uevent.trigger('renderComplete');
  6746. }
  6747. });
  6748. break;
  6749. case 'mount':
  6750. this.animationInstance = new Animation({
  6751. timing: opts.timing,
  6752. duration: duration,
  6753. onProcess: function onProcess(process) {
  6754. context.clearRect(0, 0, opts.width, opts.height);
  6755. if (opts.rotate) {
  6756. contextRotate(context, opts);
  6757. }
  6758. drawYAxisGrid(categories, opts, config, context);
  6759. drawXAxis(categories, opts, config, context);
  6760. var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),
  6761. xAxisPoints = _drawMountDataPoints.xAxisPoints,
  6762. calPoints = _drawMountDataPoints.calPoints,
  6763. eachSpacing = _drawMountDataPoints.eachSpacing;
  6764. opts.chartData.xAxisPoints = xAxisPoints;
  6765. opts.chartData.calPoints = calPoints;
  6766. opts.chartData.eachSpacing = eachSpacing;
  6767. drawYAxis(series, opts, config, context);
  6768. if (opts.enableMarkLine !== false && process === 1) {
  6769. drawMarkLine(opts, config, context);
  6770. }
  6771. drawLegend(opts.series, opts, config, context, opts.chartData);
  6772. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6773. drawCanvas(opts, context);
  6774. },
  6775. onAnimationFinish: function onAnimationFinish() {
  6776. _this.uevent.trigger('renderComplete');
  6777. }
  6778. });
  6779. break;
  6780. case 'bar':
  6781. this.animationInstance = new Animation({
  6782. timing: opts.timing,
  6783. duration: duration,
  6784. onProcess: function onProcess(process) {
  6785. context.clearRect(0, 0, opts.width, opts.height);
  6786. if (opts.rotate) {
  6787. contextRotate(context, opts);
  6788. }
  6789. drawXAxis(categories, opts, config, context);
  6790. var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),
  6791. yAxisPoints = _drawBarDataPoints.yAxisPoints,
  6792. calPoints = _drawBarDataPoints.calPoints,
  6793. eachSpacing = _drawBarDataPoints.eachSpacing;
  6794. opts.chartData.yAxisPoints = yAxisPoints;
  6795. opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;
  6796. opts.chartData.calPoints = calPoints;
  6797. opts.chartData.eachSpacing = eachSpacing;
  6798. drawYAxis(series, opts, config, context);
  6799. if (opts.enableMarkLine !== false && process === 1) {
  6800. drawMarkLine(opts, config, context);
  6801. }
  6802. drawLegend(opts.series, opts, config, context, opts.chartData);
  6803. drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);
  6804. drawCanvas(opts, context);
  6805. },
  6806. onAnimationFinish: function onAnimationFinish() {
  6807. _this.uevent.trigger('renderComplete');
  6808. }
  6809. });
  6810. break;
  6811. case 'area':
  6812. this.animationInstance = new Animation({
  6813. timing: opts.timing,
  6814. duration: duration,
  6815. onProcess: function onProcess(process) {
  6816. context.clearRect(0, 0, opts.width, opts.height);
  6817. if (opts.rotate) {
  6818. contextRotate(context, opts);
  6819. }
  6820. drawYAxisGrid(categories, opts, config, context);
  6821. drawXAxis(categories, opts, config, context);
  6822. var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),
  6823. xAxisPoints = _drawAreaDataPoints.xAxisPoints,
  6824. calPoints = _drawAreaDataPoints.calPoints,
  6825. eachSpacing = _drawAreaDataPoints.eachSpacing;
  6826. opts.chartData.xAxisPoints = xAxisPoints;
  6827. opts.chartData.calPoints = calPoints;
  6828. opts.chartData.eachSpacing = eachSpacing;
  6829. drawYAxis(series, opts, config, context);
  6830. if (opts.enableMarkLine !== false && process === 1) {
  6831. drawMarkLine(opts, config, context);
  6832. }
  6833. drawLegend(opts.series, opts, config, context, opts.chartData);
  6834. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6835. drawCanvas(opts, context);
  6836. },
  6837. onAnimationFinish: function onAnimationFinish() {
  6838. _this.uevent.trigger('renderComplete');
  6839. }
  6840. });
  6841. break;
  6842. case 'ring':
  6843. this.animationInstance = new Animation({
  6844. timing: opts.timing,
  6845. duration: duration,
  6846. onProcess: function onProcess(process) {
  6847. context.clearRect(0, 0, opts.width, opts.height);
  6848. if (opts.rotate) {
  6849. contextRotate(context, opts);
  6850. }
  6851. opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
  6852. drawLegend(opts.series, opts, config, context, opts.chartData);
  6853. drawToolTipBridge(opts, config, context, process);
  6854. drawCanvas(opts, context);
  6855. },
  6856. onAnimationFinish: function onAnimationFinish() {
  6857. _this.uevent.trigger('renderComplete');
  6858. }
  6859. });
  6860. break;
  6861. case 'pie':
  6862. this.animationInstance = new Animation({
  6863. timing: opts.timing,
  6864. duration: duration,
  6865. onProcess: function onProcess(process) {
  6866. context.clearRect(0, 0, opts.width, opts.height);
  6867. if (opts.rotate) {
  6868. contextRotate(context, opts);
  6869. }
  6870. opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
  6871. drawLegend(opts.series, opts, config, context, opts.chartData);
  6872. drawToolTipBridge(opts, config, context, process);
  6873. drawCanvas(opts, context);
  6874. },
  6875. onAnimationFinish: function onAnimationFinish() {
  6876. _this.uevent.trigger('renderComplete');
  6877. }
  6878. });
  6879. break;
  6880. case 'rose':
  6881. this.animationInstance = new Animation({
  6882. timing: opts.timing,
  6883. duration: duration,
  6884. onProcess: function onProcess(process) {
  6885. context.clearRect(0, 0, opts.width, opts.height);
  6886. if (opts.rotate) {
  6887. contextRotate(context, opts);
  6888. }
  6889. opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);
  6890. drawLegend(opts.series, opts, config, context, opts.chartData);
  6891. drawToolTipBridge(opts, config, context, process);
  6892. drawCanvas(opts, context);
  6893. },
  6894. onAnimationFinish: function onAnimationFinish() {
  6895. _this.uevent.trigger('renderComplete');
  6896. }
  6897. });
  6898. break;
  6899. case 'radar':
  6900. this.animationInstance = new Animation({
  6901. timing: opts.timing,
  6902. duration: duration,
  6903. onProcess: function onProcess(process) {
  6904. context.clearRect(0, 0, opts.width, opts.height);
  6905. if (opts.rotate) {
  6906. contextRotate(context, opts);
  6907. }
  6908. opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);
  6909. drawLegend(opts.series, opts, config, context, opts.chartData);
  6910. drawToolTipBridge(opts, config, context, process);
  6911. drawCanvas(opts, context);
  6912. },
  6913. onAnimationFinish: function onAnimationFinish() {
  6914. _this.uevent.trigger('renderComplete');
  6915. }
  6916. });
  6917. break;
  6918. case 'arcbar':
  6919. this.animationInstance = new Animation({
  6920. timing: opts.timing,
  6921. duration: duration,
  6922. onProcess: function onProcess(process) {
  6923. context.clearRect(0, 0, opts.width, opts.height);
  6924. if (opts.rotate) {
  6925. contextRotate(context, opts);
  6926. }
  6927. opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);
  6928. drawCanvas(opts, context);
  6929. },
  6930. onAnimationFinish: function onAnimationFinish() {
  6931. _this.uevent.trigger('renderComplete');
  6932. }
  6933. });
  6934. break;
  6935. case 'gauge':
  6936. this.animationInstance = new Animation({
  6937. timing: opts.timing,
  6938. duration: duration,
  6939. onProcess: function onProcess(process) {
  6940. context.clearRect(0, 0, opts.width, opts.height);
  6941. if (opts.rotate) {
  6942. contextRotate(context, opts);
  6943. }
  6944. opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);
  6945. drawCanvas(opts, context);
  6946. },
  6947. onAnimationFinish: function onAnimationFinish() {
  6948. _this.uevent.trigger('renderComplete');
  6949. }
  6950. });
  6951. break;
  6952. case 'candle':
  6953. this.animationInstance = new Animation({
  6954. timing: opts.timing,
  6955. duration: duration,
  6956. onProcess: function onProcess(process) {
  6957. context.clearRect(0, 0, opts.width, opts.height);
  6958. if (opts.rotate) {
  6959. contextRotate(context, opts);
  6960. }
  6961. drawYAxisGrid(categories, opts, config, context);
  6962. drawXAxis(categories, opts, config, context);
  6963. var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),
  6964. xAxisPoints = _drawCandleDataPoints.xAxisPoints,
  6965. calPoints = _drawCandleDataPoints.calPoints,
  6966. eachSpacing = _drawCandleDataPoints.eachSpacing;
  6967. opts.chartData.xAxisPoints = xAxisPoints;
  6968. opts.chartData.calPoints = calPoints;
  6969. opts.chartData.eachSpacing = eachSpacing;
  6970. drawYAxis(series, opts, config, context);
  6971. if (opts.enableMarkLine !== false && process === 1) {
  6972. drawMarkLine(opts, config, context);
  6973. }
  6974. if (seriesMA) {
  6975. drawLegend(seriesMA, opts, config, context, opts.chartData);
  6976. } else {
  6977. drawLegend(opts.series, opts, config, context, opts.chartData);
  6978. }
  6979. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  6980. drawCanvas(opts, context);
  6981. },
  6982. onAnimationFinish: function onAnimationFinish() {
  6983. _this.uevent.trigger('renderComplete');
  6984. }
  6985. });
  6986. break;
  6987. }
  6988. }
  6989. function uChartsEvent() {
  6990. this.events = {};
  6991. }
  6992. uChartsEvent.prototype.addEventListener = function (type, listener) {
  6993. this.events[type] = this.events[type] || [];
  6994. this.events[type].push(listener);
  6995. };
  6996. uChartsEvent.prototype.delEventListener = function (type) {
  6997. this.events[type] = [];
  6998. };
  6999. uChartsEvent.prototype.trigger = function () {
  7000. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  7001. args[_key] = arguments[_key];
  7002. }
  7003. var type = args[0];
  7004. var params = args.slice(1);
  7005. if (!!this.events[type]) {
  7006. this.events[type].forEach(function (listener) {
  7007. try {
  7008. listener.apply(null, params);
  7009. } catch (e) {
  7010. //console.log('[uCharts] '+e);
  7011. }
  7012. });
  7013. }
  7014. };
  7015. var uCharts = function uCharts(opts) {
  7016. opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;
  7017. opts.fontSize = opts.fontSize ? opts.fontSize : 13;
  7018. opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;
  7019. if (opts.background == "" || opts.background == "none") {
  7020. opts.background = "#FFFFFF";
  7021. }
  7022. opts.title = assign({}, opts.title);
  7023. opts.subtitle = assign({}, opts.subtitle);
  7024. opts.duration = opts.duration ? opts.duration : 1000;
  7025. opts.yAxis = assign({}, {
  7026. data: [],
  7027. showTitle: false,
  7028. disabled: false,
  7029. disableGrid: false,
  7030. gridSet: 'number',
  7031. splitNumber: 5,
  7032. gridType: 'solid',
  7033. dashLength: 4 * opts.pix,
  7034. gridColor: '#cccccc',
  7035. padding: 10,
  7036. fontColor: '#666666'
  7037. }, opts.yAxis);
  7038. opts.xAxis = assign({}, {
  7039. rotateLabel: false,
  7040. rotateAngle: 45,
  7041. disabled: false,
  7042. disableGrid: false,
  7043. splitNumber: 5,
  7044. calibration: false,
  7045. fontColor: '#666666',
  7046. fontSize: 13,
  7047. lineHeight: 20,
  7048. marginTop: 0,
  7049. gridType: 'solid',
  7050. dashLength: 4,
  7051. scrollAlign: 'left',
  7052. boundaryGap: 'center',
  7053. axisLine: true,
  7054. axisLineColor: '#cccccc',
  7055. titleFontSize: 13,
  7056. titleOffsetY: 0,
  7057. titleOffsetX: 0,
  7058. titleFontColor: '#666666'
  7059. }, opts.xAxis);
  7060. opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;
  7061. opts.legend = assign({}, {
  7062. show: true,
  7063. position: 'bottom',
  7064. float: 'center',
  7065. backgroundColor: 'rgba(0,0,0,0)',
  7066. borderColor: 'rgba(0,0,0,0)',
  7067. borderWidth: 0,
  7068. padding: 5,
  7069. margin: 5,
  7070. itemGap: 10,
  7071. fontSize: opts.fontSize,
  7072. lineHeight: opts.fontSize,
  7073. fontColor: opts.fontColor,
  7074. formatter: {},
  7075. hiddenColor: '#CECECE'
  7076. }, opts.legend);
  7077. opts.extra = assign({
  7078. tooltip: {
  7079. legendShape: 'auto'
  7080. }
  7081. }, opts.extra);
  7082. opts.rotate = opts.rotate ? true : false;
  7083. opts.animation = opts.animation ? true : false;
  7084. opts.rotate = opts.rotate ? true : false;
  7085. opts.canvas2d = opts.canvas2d ? true : false;
  7086. var config$$1 = assign({}, config);
  7087. config$$1.color = opts.color ? opts.color : config$$1.color;
  7088. if (opts.type == 'pie') {
  7089. config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
  7090. }
  7091. if (opts.type == 'ring') {
  7092. config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
  7093. }
  7094. if (opts.type == 'rose') {
  7095. config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
  7096. }
  7097. config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;
  7098. //屏幕旋转
  7099. config$$1.rotate = opts.rotate;
  7100. if (opts.rotate) {
  7101. var tempWidth = opts.width;
  7102. var tempHeight = opts.height;
  7103. opts.width = tempHeight;
  7104. opts.height = tempWidth;
  7105. }
  7106. //适配高分屏
  7107. opts.padding = opts.padding ? opts.padding : config$$1.padding;
  7108. config$$1.yAxisWidth = config.yAxisWidth * opts.pix;
  7109. config$$1.fontSize = opts.fontSize * opts.pix;
  7110. config$$1.titleFontSize = config.titleFontSize * opts.pix;
  7111. config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;
  7112. if (!opts.context) {
  7113. throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');
  7114. }
  7115. this.context = opts.context;
  7116. if (!this.context.setTextAlign) {
  7117. this.context.setStrokeStyle = function (e) {
  7118. return this.strokeStyle = e;
  7119. };
  7120. this.context.setLineWidth = function (e) {
  7121. return this.lineWidth = e;
  7122. };
  7123. this.context.setLineCap = function (e) {
  7124. return this.lineCap = e;
  7125. };
  7126. this.context.setFontSize = function (e) {
  7127. return this.font = e + "px sans-serif";
  7128. };
  7129. this.context.setFillStyle = function (e) {
  7130. return this.fillStyle = e;
  7131. };
  7132. this.context.setTextAlign = function (e) {
  7133. return this.textAlign = e;
  7134. };
  7135. this.context.setTextBaseline = function (e) {
  7136. return this.textBaseline = e;
  7137. };
  7138. this.context.setShadow = function (offsetX, offsetY, blur, color) {
  7139. this.shadowColor = color;
  7140. this.shadowOffsetX = offsetX;
  7141. this.shadowOffsetY = offsetY;
  7142. this.shadowBlur = blur;
  7143. };
  7144. this.context.draw = function () {};
  7145. }
  7146. //兼容NVUEsetLineDash
  7147. if (!this.context.setLineDash) {
  7148. this.context.setLineDash = function (e) {};
  7149. }
  7150. opts.chartData = {};
  7151. this.uevent = new uChartsEvent();
  7152. this.scrollOption = {
  7153. currentOffset: 0,
  7154. startTouchX: 0,
  7155. distance: 0,
  7156. lastMoveTime: 0
  7157. };
  7158. this.opts = opts;
  7159. this.config = config$$1;
  7160. drawCharts.call(this, opts.type, opts, config$$1, this.context);
  7161. };
  7162. uCharts.prototype.updateData = function () {
  7163. var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  7164. this.opts = assign({}, this.opts, data);
  7165. this.opts.updateData = true;
  7166. var scrollPosition = data.scrollPosition || 'current';
  7167. switch (scrollPosition) {
  7168. case 'current':
  7169. this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  7170. break;
  7171. case 'left':
  7172. this.opts._scrollDistance_ = 0;
  7173. this.scrollOption = {
  7174. currentOffset: 0,
  7175. startTouchX: 0,
  7176. distance: 0,
  7177. lastMoveTime: 0
  7178. };
  7179. break;
  7180. case 'right':
  7181. var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),
  7182. yAxisWidth = _calYAxisData.yAxisWidth;
  7183. this.config.yAxisWidth = yAxisWidth;
  7184. var offsetLeft = 0;
  7185. var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
  7186. xAxisPoints = _getXAxisPoints0.xAxisPoints,
  7187. startX = _getXAxisPoints0.startX,
  7188. endX = _getXAxisPoints0.endX,
  7189. eachSpacing = _getXAxisPoints0.eachSpacing;
  7190. var totalWidth = eachSpacing * (xAxisPoints.length - 1);
  7191. var screenWidth = endX - startX;
  7192. offsetLeft = screenWidth - totalWidth;
  7193. this.scrollOption = {
  7194. currentOffset: offsetLeft,
  7195. startTouchX: offsetLeft,
  7196. distance: 0,
  7197. lastMoveTime: 0
  7198. };
  7199. this.opts._scrollDistance_ = offsetLeft;
  7200. break;
  7201. }
  7202. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  7203. };
  7204. uCharts.prototype.zoom = function () {
  7205. var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
  7206. if (this.opts.enableScroll !== true) {
  7207. console.log('[uCharts] 请启用滚动条后使用');
  7208. return;
  7209. }
  7210. //当前屏幕中间点
  7211. var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);
  7212. this.opts.animation = false;
  7213. this.opts.xAxis.itemCount = val.itemCount;
  7214. //重新计算x轴偏移距离
  7215. var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),
  7216. yAxisWidth = _calYAxisData.yAxisWidth;
  7217. this.config.yAxisWidth = yAxisWidth;
  7218. var offsetLeft = 0;
  7219. var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
  7220. xAxisPoints = _getXAxisPoints0.xAxisPoints,
  7221. startX = _getXAxisPoints0.startX,
  7222. endX = _getXAxisPoints0.endX,
  7223. eachSpacing = _getXAxisPoints0.eachSpacing;
  7224. var centerLeft = eachSpacing * centerPoint;
  7225. var screenWidth = endX - startX;
  7226. var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
  7227. offsetLeft = screenWidth / 2 - centerLeft;
  7228. if (offsetLeft > 0) {
  7229. offsetLeft = 0;
  7230. }
  7231. if (offsetLeft < MaxLeft) {
  7232. offsetLeft = MaxLeft;
  7233. }
  7234. this.scrollOption = {
  7235. currentOffset: offsetLeft,
  7236. startTouchX: 0,
  7237. distance: 0,
  7238. lastMoveTime: 0
  7239. };
  7240. calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);
  7241. this.opts._scrollDistance_ = offsetLeft;
  7242. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  7243. };
  7244. uCharts.prototype.dobuleZoom = function (e) {
  7245. if (this.opts.enableScroll !== true) {
  7246. console.log('[uCharts] 请启用滚动条后使用');
  7247. return;
  7248. }
  7249. var tcs = e.changedTouches;
  7250. if (tcs.length < 2) {
  7251. return;
  7252. }
  7253. for (var i = 0; i < tcs.length; i++) {
  7254. tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;
  7255. tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;
  7256. }
  7257. var ntcs = [getTouches(tcs[0], this.opts, e), getTouches(tcs[1], this.opts, e)];
  7258. var xlength = Math.abs(ntcs[0].x - ntcs[1].x);
  7259. // 记录初始的两指之间的数据
  7260. if (!this.scrollOption.moveCount) {
  7261. var cts0 = {
  7262. changedTouches: [{
  7263. x: tcs[0].x,
  7264. y: this.opts.area[0] / this.opts.pix + 2
  7265. }]
  7266. };
  7267. var cts1 = {
  7268. changedTouches: [{
  7269. x: tcs[1].x,
  7270. y: this.opts.area[0] / this.opts.pix + 2
  7271. }]
  7272. };
  7273. if (this.opts.rotate) {
  7274. cts0 = {
  7275. changedTouches: [{
  7276. x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,
  7277. y: tcs[0].y
  7278. }]
  7279. };
  7280. cts1 = {
  7281. changedTouches: [{
  7282. x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,
  7283. y: tcs[1].y
  7284. }]
  7285. };
  7286. }
  7287. var moveCurrent1 = this.getCurrentDataIndex(cts0).index;
  7288. var moveCurrent2 = this.getCurrentDataIndex(cts1).index;
  7289. var moveCount = Math.abs(moveCurrent1 - moveCurrent2);
  7290. this.scrollOption.moveCount = moveCount;
  7291. this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);
  7292. this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);
  7293. return;
  7294. }
  7295. var currentEachSpacing = xlength / this.scrollOption.moveCount;
  7296. var itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;
  7297. itemCount = itemCount <= 2 ? 2 : itemCount;
  7298. itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;
  7299. this.opts.animation = false;
  7300. this.opts.xAxis.itemCount = itemCount;
  7301. // 重新计算滚动条偏移距离
  7302. var offsetLeft = 0;
  7303. var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
  7304. xAxisPoints = _getXAxisPoints0.xAxisPoints,
  7305. startX = _getXAxisPoints0.startX,
  7306. endX = _getXAxisPoints0.endX,
  7307. eachSpacing = _getXAxisPoints0.eachSpacing;
  7308. var currentLeft = eachSpacing * this.scrollOption.moveCurrent1;
  7309. var screenWidth = endX - startX;
  7310. var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
  7311. offsetLeft = -currentLeft + Math.min(ntcs[0].x, ntcs[1].x) - this.opts.area[3] - eachSpacing;
  7312. if (offsetLeft > 0) {
  7313. offsetLeft = 0;
  7314. }
  7315. if (offsetLeft < MaxLeft) {
  7316. offsetLeft = MaxLeft;
  7317. }
  7318. this.scrollOption.currentOffset = offsetLeft;
  7319. this.scrollOption.startTouchX = 0;
  7320. this.scrollOption.distance = 0;
  7321. calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);
  7322. this.opts._scrollDistance_ = offsetLeft;
  7323. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  7324. };
  7325. uCharts.prototype.stopAnimation = function () {
  7326. this.animationInstance && this.animationInstance.stop();
  7327. };
  7328. uCharts.prototype.addEventListener = function (type, listener) {
  7329. this.uevent.addEventListener(type, listener);
  7330. };
  7331. uCharts.prototype.delEventListener = function (type) {
  7332. this.uevent.delEventListener(type);
  7333. };
  7334. uCharts.prototype.getCurrentDataIndex = function (e) {
  7335. var touches = null;
  7336. if (e.changedTouches) {
  7337. touches = e.changedTouches[0];
  7338. } else {
  7339. touches = e.mp.changedTouches[0];
  7340. }
  7341. if (touches) {
  7342. var _touches$ = getTouches(touches, this.opts, e);
  7343. if (this.opts.type === 'pie' || this.opts.type === 'ring') {
  7344. return findPieChartCurrentIndex({
  7345. x: _touches$.x,
  7346. y: _touches$.y
  7347. }, this.opts.chartData.pieData, this.opts);
  7348. } else if (this.opts.type === 'rose') {
  7349. return findRoseChartCurrentIndex({
  7350. x: _touches$.x,
  7351. y: _touches$.y
  7352. }, this.opts.chartData.pieData, this.opts);
  7353. } else if (this.opts.type === 'radar') {
  7354. return findRadarChartCurrentIndex({
  7355. x: _touches$.x,
  7356. y: _touches$.y
  7357. }, this.opts.chartData.radarData, this.opts.categories.length);
  7358. } else if (this.opts.type === 'funnel') {
  7359. return findFunnelChartCurrentIndex({
  7360. x: _touches$.x,
  7361. y: _touches$.y
  7362. }, this.opts.chartData.funnelData);
  7363. } else if (this.opts.type === 'map') {
  7364. return findMapChartCurrentIndex({
  7365. x: _touches$.x,
  7366. y: _touches$.y
  7367. }, this.opts);
  7368. } else if (this.opts.type === 'word') {
  7369. return findWordChartCurrentIndex({
  7370. x: _touches$.x,
  7371. y: _touches$.y
  7372. }, this.opts.chartData.wordCloudData);
  7373. } else if (this.opts.type === 'bar') {
  7374. return findBarChartCurrentIndex({
  7375. x: _touches$.x,
  7376. y: _touches$.y
  7377. }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
  7378. } else {
  7379. return findCurrentIndex({
  7380. x: _touches$.x,
  7381. y: _touches$.y
  7382. }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
  7383. }
  7384. }
  7385. return -1;
  7386. };
  7387. uCharts.prototype.getLegendDataIndex = function (e) {
  7388. var touches = null;
  7389. if (e.changedTouches) {
  7390. touches = e.changedTouches[0];
  7391. } else {
  7392. touches = e.mp.changedTouches[0];
  7393. }
  7394. if (touches) {
  7395. var _touches$ = getTouches(touches, this.opts, e);
  7396. return findLegendIndex({
  7397. x: _touches$.x,
  7398. y: _touches$.y
  7399. }, this.opts.chartData.legendData);
  7400. }
  7401. return -1;
  7402. };
  7403. uCharts.prototype.touchLegend = function (e) {
  7404. var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  7405. var touches = null;
  7406. if (e.changedTouches) {
  7407. touches = e.changedTouches[0];
  7408. } else {
  7409. touches = e.mp.changedTouches[0];
  7410. }
  7411. if (touches) {
  7412. var _touches$ = getTouches(touches, this.opts, e);
  7413. var index = this.getLegendDataIndex(e);
  7414. if (index >= 0) {
  7415. if (this.opts.type == 'candle') {
  7416. this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;
  7417. } else {
  7418. this.opts.series[index].show = !this.opts.series[index].show;
  7419. }
  7420. this.opts.animation = option.animation ? true : false;
  7421. this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  7422. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  7423. }
  7424. }
  7425. };
  7426. uCharts.prototype.showToolTip = function (e) {
  7427. var _this3 = this;
  7428. var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  7429. var touches = null;
  7430. if (e.changedTouches) {
  7431. touches = e.changedTouches[0];
  7432. } else {
  7433. touches = e.mp.changedTouches[0];
  7434. }
  7435. if (!touches) {
  7436. console.log("[uCharts] 未获取到event坐标信息");
  7437. }
  7438. var _touches$ = getTouches(touches, this.opts, e);
  7439. var currentOffset = this.scrollOption.currentOffset;
  7440. var opts = assign({}, this.opts, {
  7441. _scrollDistance_: currentOffset,
  7442. animation: false
  7443. });
  7444. if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {
  7445. var current = this.getCurrentDataIndex(e);
  7446. var index = option.index == undefined ? current.index : option.index;
  7447. if (index > -1 || index.length > 0) {
  7448. var seriesData = getSeriesDataItem(this.opts.series, index, current.group);
  7449. if (seriesData.length !== 0) {
  7450. var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),
  7451. textList = _getToolTipData.textList,
  7452. offset = _getToolTipData.offset;
  7453. offset.y = _touches$.y;
  7454. opts.tooltip = {
  7455. textList: option.textList !== undefined ? option.textList : textList,
  7456. offset: option.offset !== undefined ? option.offset : offset,
  7457. option: option,
  7458. index: index,
  7459. group: current.group
  7460. };
  7461. }
  7462. }
  7463. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7464. }
  7465. if (this.opts.type === 'mount') {
  7466. var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;
  7467. if (index > -1) {
  7468. var opts = assign({}, this.opts, {
  7469. animation: false
  7470. });
  7471. var seriesData = assign({}, opts._series_[index]);
  7472. var textList = [{
  7473. text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,
  7474. color: seriesData.color,
  7475. legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
  7476. }];
  7477. var offset = {
  7478. x: opts.chartData.calPoints[index].x,
  7479. y: _touches$.y
  7480. };
  7481. opts.tooltip = {
  7482. textList: option.textList ? option.textList : textList,
  7483. offset: option.offset !== undefined ? option.offset : offset,
  7484. option: option,
  7485. index: index
  7486. };
  7487. }
  7488. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7489. }
  7490. if (this.opts.type === 'bar') {
  7491. var current = this.getCurrentDataIndex(e);
  7492. var index = option.index == undefined ? current.index : option.index;
  7493. if (index > -1 || index.length > 0) {
  7494. var seriesData = getSeriesDataItem(this.opts.series, index, current.group);
  7495. if (seriesData.length !== 0) {
  7496. var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),
  7497. textList = _getToolTipData.textList,
  7498. offset = _getToolTipData.offset;
  7499. offset.x = _touches$.x;
  7500. opts.tooltip = {
  7501. textList: option.textList !== undefined ? option.textList : textList,
  7502. offset: option.offset !== undefined ? option.offset : offset,
  7503. option: option,
  7504. index: index
  7505. };
  7506. }
  7507. }
  7508. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7509. }
  7510. if (this.opts.type === 'mix') {
  7511. var current = this.getCurrentDataIndex(e);
  7512. var index = option.index == undefined ? current.index : option.index;
  7513. if (index > -1) {
  7514. var currentOffset = this.scrollOption.currentOffset;
  7515. var opts = assign({}, this.opts, {
  7516. _scrollDistance_: currentOffset,
  7517. animation: false
  7518. });
  7519. var seriesData = getSeriesDataItem(this.opts.series, index);
  7520. if (seriesData.length !== 0) {
  7521. var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),
  7522. textList = _getMixToolTipData.textList,
  7523. offset = _getMixToolTipData.offset;
  7524. offset.y = _touches$.y;
  7525. opts.tooltip = {
  7526. textList: option.textList ? option.textList : textList,
  7527. offset: option.offset !== undefined ? option.offset : offset,
  7528. option: option,
  7529. index: index
  7530. };
  7531. }
  7532. }
  7533. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7534. }
  7535. if (this.opts.type === 'candle') {
  7536. var current = this.getCurrentDataIndex(e);
  7537. var index = option.index == undefined ? current.index : option.index;
  7538. if (index > -1) {
  7539. var currentOffset = this.scrollOption.currentOffset;
  7540. var opts = assign({}, this.opts, {
  7541. _scrollDistance_: currentOffset,
  7542. animation: false
  7543. });
  7544. var seriesData = getSeriesDataItem(this.opts.series, index);
  7545. if (seriesData.length !== 0) {
  7546. var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),
  7547. textList = _getToolTipData.textList,
  7548. offset = _getToolTipData.offset;
  7549. offset.y = _touches$.y;
  7550. opts.tooltip = {
  7551. textList: option.textList ? option.textList : textList,
  7552. offset: option.offset !== undefined ? option.offset : offset,
  7553. option: option,
  7554. index: index
  7555. };
  7556. }
  7557. }
  7558. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7559. }
  7560. if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {
  7561. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  7562. if (index > -1) {
  7563. var opts = assign({}, this.opts, {
  7564. animation: false
  7565. });
  7566. var seriesData = assign({}, opts._series_[index]);
  7567. var textList = [{
  7568. text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,
  7569. color: seriesData.color,
  7570. legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
  7571. }];
  7572. var offset = {
  7573. x: _touches$.x,
  7574. y: _touches$.y
  7575. };
  7576. opts.tooltip = {
  7577. textList: option.textList ? option.textList : textList,
  7578. offset: option.offset !== undefined ? option.offset : offset,
  7579. option: option,
  7580. index: index
  7581. };
  7582. }
  7583. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7584. }
  7585. if (this.opts.type === 'map') {
  7586. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  7587. if (index > -1) {
  7588. var opts = assign({}, this.opts, {
  7589. animation: false
  7590. });
  7591. var seriesData = assign({}, this.opts.series[index]);
  7592. seriesData.name = seriesData.properties.name;
  7593. var textList = [{
  7594. text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,
  7595. color: seriesData.color,
  7596. legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
  7597. }];
  7598. var offset = {
  7599. x: _touches$.x,
  7600. y: _touches$.y
  7601. };
  7602. opts.tooltip = {
  7603. textList: option.textList ? option.textList : textList,
  7604. offset: option.offset !== undefined ? option.offset : offset,
  7605. option: option,
  7606. index: index
  7607. };
  7608. }
  7609. opts.updateData = false;
  7610. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7611. }
  7612. if (this.opts.type === 'word') {
  7613. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  7614. if (index > -1) {
  7615. var opts = assign({}, this.opts, {
  7616. animation: false
  7617. });
  7618. var seriesData = assign({}, this.opts.series[index]);
  7619. var textList = [{
  7620. text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,
  7621. color: seriesData.color,
  7622. legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
  7623. }];
  7624. var offset = {
  7625. x: _touches$.x,
  7626. y: _touches$.y
  7627. };
  7628. opts.tooltip = {
  7629. textList: option.textList ? option.textList : textList,
  7630. offset: option.offset !== undefined ? option.offset : offset,
  7631. option: option,
  7632. index: index
  7633. };
  7634. }
  7635. opts.updateData = false;
  7636. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7637. }
  7638. if (this.opts.type === 'radar') {
  7639. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  7640. if (index > -1) {
  7641. var opts = assign({}, this.opts, {
  7642. animation: false
  7643. });
  7644. var seriesData = getSeriesDataItem(this.opts.series, index);
  7645. if (seriesData.length !== 0) {
  7646. var textList = seriesData.map(function (item) {
  7647. return {
  7648. text: option.formatter ? option.formatter(item, _this3.opts.categories[index], index, _this3.opts) : item.name + ': ' + item.data,
  7649. color: item.color,
  7650. legendShape: _this3.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : _this3.opts.extra.tooltip.legendShape
  7651. };
  7652. });
  7653. var offset = {
  7654. x: _touches$.x,
  7655. y: _touches$.y
  7656. };
  7657. opts.tooltip = {
  7658. textList: option.textList ? option.textList : textList,
  7659. offset: option.offset !== undefined ? option.offset : offset,
  7660. option: option,
  7661. index: index
  7662. };
  7663. }
  7664. }
  7665. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7666. }
  7667. };
  7668. uCharts.prototype.translate = function (distance) {
  7669. this.scrollOption = {
  7670. currentOffset: distance,
  7671. startTouchX: distance,
  7672. distance: 0,
  7673. lastMoveTime: 0
  7674. };
  7675. var opts = assign({}, this.opts, {
  7676. _scrollDistance_: distance,
  7677. animation: false
  7678. });
  7679. drawCharts.call(this, this.opts.type, opts, this.config, this.context);
  7680. };
  7681. uCharts.prototype.scrollStart = function (e) {
  7682. var touches = null;
  7683. if (e.changedTouches) {
  7684. touches = e.changedTouches[0];
  7685. } else {
  7686. touches = e.mp.changedTouches[0];
  7687. }
  7688. var _touches$ = getTouches(touches, this.opts, e);
  7689. if (touches && this.opts.enableScroll === true) {
  7690. this.scrollOption.startTouchX = _touches$.x;
  7691. }
  7692. };
  7693. uCharts.prototype.scroll = function (e) {
  7694. if (this.scrollOption.lastMoveTime === 0) {
  7695. this.scrollOption.lastMoveTime = Date.now();
  7696. }
  7697. var Limit = this.opts.touchMoveLimit || 60;
  7698. var currMoveTime = Date.now();
  7699. var duration = currMoveTime - this.scrollOption.lastMoveTime;
  7700. if (duration < Math.floor(1000 / Limit)) return;
  7701. if (this.scrollOption.startTouchX == 0) return;
  7702. this.scrollOption.lastMoveTime = currMoveTime;
  7703. var touches = null;
  7704. if (e.changedTouches) {
  7705. touches = e.changedTouches[0];
  7706. } else {
  7707. touches = e.mp.changedTouches[0];
  7708. }
  7709. if (touches && this.opts.enableScroll === true) {
  7710. var _touches$ = getTouches(touches, this.opts, e);
  7711. var _distance;
  7712. _distance = _touches$.x - this.scrollOption.startTouchX;
  7713. var currentOffset = this.scrollOption.currentOffset;
  7714. var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);
  7715. this.scrollOption.distance = _distance = validDistance - currentOffset;
  7716. var opts = assign({}, this.opts, {
  7717. _scrollDistance_: currentOffset + _distance,
  7718. animation: false
  7719. });
  7720. this.opts = opts;
  7721. drawCharts.call(this, opts.type, opts, this.config, this.context);
  7722. return currentOffset + _distance;
  7723. }
  7724. };
  7725. uCharts.prototype.scrollEnd = function (e) {
  7726. if (this.opts.enableScroll === true) {
  7727. var _scrollOption = this.scrollOption,
  7728. currentOffset = _scrollOption.currentOffset,
  7729. distance = _scrollOption.distance;
  7730. this.scrollOption.currentOffset = currentOffset + distance;
  7731. this.scrollOption.distance = 0;
  7732. this.scrollOption.moveCount = 0;
  7733. }
  7734. };
  7735. var _default = uCharts;
  7736. exports.default = _default;
  7737. /***/ }),
  7738. /***/ 1203:
  7739. /*!****************************************************************************************************************!*\
  7740. !*** D:/work/work/boman/school/qs_cfschool/mine/components/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
  7741. \****************************************************************************************************************/
  7742. /*! no static exports found */
  7743. /***/ (function(module, exports, __webpack_require__) {
  7744. "use strict";
  7745. Object.defineProperty(exports, "__esModule", {
  7746. value: true
  7747. });
  7748. exports.default = void 0;
  7749. /*
  7750. * uCharts®
  7751. * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台
  7752. * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
  7753. * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  7754. * 复制使用请保留本段注释,感谢支持开源!
  7755. *
  7756. * uCharts®官方网站
  7757. * https://www.uCharts.cn
  7758. *
  7759. * 开源地址:
  7760. * https://gitee.com/uCharts/uCharts
  7761. *
  7762. * uni-app插件市场地址:
  7763. * http://ext.dcloud.net.cn/plugin?id=271
  7764. *
  7765. */
  7766. // 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
  7767. var color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
  7768. //事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
  7769. var formatDateTime = function formatDateTime(timeStamp, returnType) {
  7770. var date = new Date();
  7771. date.setTime(timeStamp * 1000);
  7772. var y = date.getFullYear();
  7773. var m = date.getMonth() + 1;
  7774. m = m < 10 ? '0' + m : m;
  7775. var d = date.getDate();
  7776. d = d < 10 ? '0' + d : d;
  7777. var h = date.getHours();
  7778. h = h < 10 ? '0' + h : h;
  7779. var minute = date.getMinutes();
  7780. var second = date.getSeconds();
  7781. minute = minute < 10 ? '0' + minute : minute;
  7782. second = second < 10 ? '0' + second : second;
  7783. if (returnType == 'full') {
  7784. return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
  7785. }
  7786. if (returnType == 'y-m-d') {
  7787. return y + '-' + m + '-' + d;
  7788. }
  7789. if (returnType == 'h:m') {
  7790. return h + ':' + minute;
  7791. }
  7792. if (returnType == 'h:m:s') {
  7793. return h + ':' + minute + ':' + second;
  7794. }
  7795. return [y, m, d, h, minute, second];
  7796. };
  7797. var cfu = {
  7798. //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
  7799. "type": ["pie", "ring", "rose", "word", "funnel", "map", "arcbar", "line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "tline", "tarea", "scatter", "bubble", "demotype"],
  7800. "range": ["饼状图", "圆环图", "玫瑰图", "词云图", "漏斗图", "地图", "圆弧进度条", "折线图", "柱状图", "山峰图", "条状图", "区域图", "雷达图", "仪表盘", "K线图", "混合图", "时间轴折线", "时间轴区域", "散点图", "气泡图", "自定义类型"],
  7801. //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
  7802. //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
  7803. "categories": ["line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "demotype"],
  7804. //instance为实例变量承载属性,不要删除
  7805. "instance": {},
  7806. //option为opts及eopts承载属性,不要删除
  7807. "option": {},
  7808. //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
  7809. "formatter": {
  7810. "yAxisDemo1": function yAxisDemo1(val, index, opts) {
  7811. return val + '元';
  7812. },
  7813. "yAxisDemo2": function yAxisDemo2(val, index, opts) {
  7814. return val.toFixed(2);
  7815. },
  7816. "xAxisDemo1": function xAxisDemo1(val, index, opts) {
  7817. return val + '年';
  7818. },
  7819. "xAxisDemo2": function xAxisDemo2(val, index, opts) {
  7820. return formatDateTime(val, 'h:m');
  7821. },
  7822. "seriesDemo1": function seriesDemo1(val, index, series, opts) {
  7823. return val + '元';
  7824. },
  7825. "tooltipDemo1": function tooltipDemo1(item, category, index, opts) {
  7826. if (index == 0) {
  7827. return '随便用' + item.data + '年';
  7828. } else {
  7829. return '其他我没改' + item.data + '天';
  7830. }
  7831. },
  7832. "pieDemo": function pieDemo(val, index, series, opts) {
  7833. if (index !== undefined) {
  7834. return series[index].name + ':' + series[index].data + '元';
  7835. }
  7836. },
  7837. // 超出换行
  7838. "overwarp": function overwarp(value) {
  7839. console.log(value, 7);
  7840. var str = "";
  7841. var num = 2; //每行显示字数
  7842. var valLength = value.length; //该项x轴字数
  7843. var rowNum = Math.ceil(valLength / num); // 行数
  7844. console.log(rowNum);
  7845. if (rowNum > 1) {
  7846. for (var i = 0; i < rowNum; i++) {
  7847. var temp = "";
  7848. var start = i * num;
  7849. var end = start + num;
  7850. temp = value.substring(start, end) + "\n";
  7851. str += temp;
  7852. }
  7853. return str;
  7854. } else {
  7855. return value;
  7856. }
  7857. }
  7858. },
  7859. //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
  7860. "demotype": {
  7861. //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
  7862. "type": "line",
  7863. "color": color,
  7864. "padding": [15, 10, 0, 15],
  7865. "xAxis": {
  7866. "disableGrid": true
  7867. },
  7868. "yAxis": {
  7869. "gridType": "dash",
  7870. "dashLength": 2
  7871. },
  7872. "legend": {},
  7873. "extra": {
  7874. "line": {
  7875. "type": "curve",
  7876. "width": 2
  7877. }
  7878. }
  7879. },
  7880. //下面是自定义配置,请添加项目所需的通用配置
  7881. "pie": {
  7882. "type": "pie",
  7883. "color": color,
  7884. "padding": [5, 5, 5, 5],
  7885. "extra": {
  7886. "pie": {
  7887. "activeOpacity": 0.5,
  7888. "activeRadius": 10,
  7889. "offsetAngle": 0,
  7890. "labelWidth": 15,
  7891. "border": true,
  7892. "borderWidth": 3,
  7893. "borderColor": "#FFFFFF"
  7894. }
  7895. }
  7896. },
  7897. "ring": {
  7898. "type": "ring",
  7899. "color": color,
  7900. "padding": [5, 5, 5, 5],
  7901. "rotate": false,
  7902. "dataLabel": true,
  7903. "legend": {
  7904. "show": true,
  7905. "position": "right",
  7906. "lineHeight": 25
  7907. },
  7908. "title": {
  7909. "name": "收益率",
  7910. "fontSize": 15,
  7911. "color": "#666666"
  7912. },
  7913. "subtitle": {
  7914. "name": "70%",
  7915. "fontSize": 25,
  7916. "color": "#7cb5ec"
  7917. },
  7918. "extra": {
  7919. "ring": {
  7920. "ringWidth": 30,
  7921. "activeOpacity": 0.5,
  7922. "activeRadius": 10,
  7923. "offsetAngle": 0,
  7924. "labelWidth": 15,
  7925. "border": true,
  7926. "borderWidth": 3,
  7927. "borderColor": "#FFFFFF"
  7928. }
  7929. }
  7930. },
  7931. "rose": {
  7932. "type": "rose",
  7933. "color": color,
  7934. "padding": [5, 5, 5, 5],
  7935. "legend": {
  7936. "show": true,
  7937. "position": "left",
  7938. "lineHeight": 25
  7939. },
  7940. "extra": {
  7941. "rose": {
  7942. "type": "area",
  7943. "minRadius": 50,
  7944. "activeOpacity": 0.5,
  7945. "activeRadius": 10,
  7946. "offsetAngle": 0,
  7947. "labelWidth": 15,
  7948. "border": false,
  7949. "borderWidth": 2,
  7950. "borderColor": "#FFFFFF"
  7951. }
  7952. }
  7953. },
  7954. "word": {
  7955. "type": "word",
  7956. "color": color,
  7957. "extra": {
  7958. "word": {
  7959. "type": "normal",
  7960. "autoColors": false
  7961. }
  7962. }
  7963. },
  7964. "funnel": {
  7965. "type": "funnel",
  7966. "color": color,
  7967. "padding": [15, 15, 0, 15],
  7968. "extra": {
  7969. "funnel": {
  7970. "activeOpacity": 0.3,
  7971. "activeWidth": 10,
  7972. "border": true,
  7973. "borderWidth": 2,
  7974. "borderColor": "#FFFFFF",
  7975. "fillOpacity": 1,
  7976. "labelAlign": "right"
  7977. }
  7978. }
  7979. },
  7980. "map": {
  7981. "type": "map",
  7982. "color": color,
  7983. "padding": [0, 0, 0, 0],
  7984. "dataLabel": true,
  7985. "extra": {
  7986. "map": {
  7987. "border": true,
  7988. "borderWidth": 1,
  7989. "borderColor": "#666666",
  7990. "fillOpacity": 0.6,
  7991. "activeBorderColor": "#F04864",
  7992. "activeFillColor": "#FACC14",
  7993. "activeFillOpacity": 1
  7994. }
  7995. }
  7996. },
  7997. "arcbar": {
  7998. "type": "arcbar",
  7999. "color": color,
  8000. "title": {
  8001. "name": "百分比",
  8002. "fontSize": 25,
  8003. "color": "#00FF00"
  8004. },
  8005. "subtitle": {
  8006. "name": "默认标题",
  8007. "fontSize": 15,
  8008. "color": "#666666"
  8009. },
  8010. "extra": {
  8011. "arcbar": {
  8012. "type": "default",
  8013. "width": 12,
  8014. "backgroundColor": "#E9E9E9",
  8015. "startAngle": 0.75,
  8016. "endAngle": 0.25,
  8017. "gap": 2
  8018. }
  8019. }
  8020. },
  8021. "line": {
  8022. "type": "line",
  8023. "color": color,
  8024. "padding": [15, 10, 0, 15],
  8025. "xAxis": {
  8026. "disableGrid": true
  8027. },
  8028. "yAxis": {
  8029. "gridType": "dash",
  8030. "dashLength": 2
  8031. },
  8032. "legend": {},
  8033. "extra": {
  8034. "line": {
  8035. "type": "straight",
  8036. "width": 2,
  8037. "activeType": "hollow"
  8038. }
  8039. }
  8040. },
  8041. "tline": {
  8042. "type": "line",
  8043. "color": color,
  8044. "padding": [15, 10, 0, 15],
  8045. "xAxis": {
  8046. "disableGrid": false,
  8047. "boundaryGap": "justify"
  8048. },
  8049. "yAxis": {
  8050. "gridType": "dash",
  8051. "dashLength": 2,
  8052. "data": [{
  8053. "min": 0,
  8054. "max": 80
  8055. }]
  8056. },
  8057. "legend": {},
  8058. "extra": {
  8059. "line": {
  8060. "type": "curve",
  8061. "width": 2,
  8062. "activeType": "hollow"
  8063. }
  8064. }
  8065. },
  8066. "tarea": {
  8067. "type": "area",
  8068. "color": color,
  8069. "padding": [15, 10, 0, 15],
  8070. "xAxis": {
  8071. "disableGrid": true,
  8072. "boundaryGap": "justify"
  8073. },
  8074. "yAxis": {
  8075. "gridType": "dash",
  8076. "dashLength": 2,
  8077. "data": [{
  8078. "min": 0,
  8079. "max": 80
  8080. }]
  8081. },
  8082. "legend": {},
  8083. "extra": {
  8084. "area": {
  8085. "type": "curve",
  8086. "opacity": 0.2,
  8087. "addLine": true,
  8088. "width": 2,
  8089. "gradient": true,
  8090. "activeType": "hollow"
  8091. }
  8092. }
  8093. },
  8094. "column": {
  8095. "type": "column",
  8096. "color": color,
  8097. "padding": [15, 15, 0, 5],
  8098. "xAxis": {
  8099. "disableGrid": true
  8100. },
  8101. "yAxis": {
  8102. "data": [{
  8103. "min": 0
  8104. }]
  8105. },
  8106. "legend": {},
  8107. "extra": {
  8108. "column": {
  8109. "type": "group",
  8110. "width": 30,
  8111. "activeBgColor": "#000000",
  8112. "activeBgOpacity": 0.08
  8113. }
  8114. }
  8115. },
  8116. "mount": {
  8117. "type": "mount",
  8118. "color": color,
  8119. "padding": [15, 15, 0, 5],
  8120. "xAxis": {
  8121. "disableGrid": true
  8122. },
  8123. "yAxis": {
  8124. "data": [{
  8125. "min": 0
  8126. }]
  8127. },
  8128. "legend": {},
  8129. "extra": {
  8130. "mount": {
  8131. "type": "mount",
  8132. "widthRatio": 1.5
  8133. }
  8134. }
  8135. },
  8136. "bar": {
  8137. "type": "bar",
  8138. "color": color,
  8139. "padding": [15, 30, 0, 5],
  8140. "xAxis": {
  8141. "boundaryGap": "justify",
  8142. "disableGrid": false,
  8143. "min": 0,
  8144. "axisLine": false
  8145. },
  8146. "yAxis": {},
  8147. "legend": {},
  8148. "extra": {
  8149. "bar": {
  8150. "type": "group",
  8151. "width": 30,
  8152. "meterBorde": 1,
  8153. "meterFillColor": "#FFFFFF",
  8154. "activeBgColor": "#000000",
  8155. "activeBgOpacity": 0.08
  8156. }
  8157. }
  8158. },
  8159. "area": {
  8160. "type": "area",
  8161. "color": color,
  8162. "padding": [15, 15, 0, 15],
  8163. "xAxis": {
  8164. "disableGrid": true
  8165. },
  8166. "yAxis": {
  8167. "gridType": "dash",
  8168. "dashLength": 2
  8169. },
  8170. "legend": {},
  8171. "extra": {
  8172. "area": {
  8173. "type": "straight",
  8174. "opacity": 0.2,
  8175. "addLine": true,
  8176. "width": 2,
  8177. "gradient": false,
  8178. "activeType": "hollow"
  8179. }
  8180. }
  8181. },
  8182. "radar": {
  8183. "type": "radar",
  8184. "color": color,
  8185. "padding": [5, 5, 5, 5],
  8186. "dataLabel": false,
  8187. "legend": {
  8188. "show": true,
  8189. "position": "right",
  8190. "lineHeight": 25
  8191. },
  8192. "extra": {
  8193. "radar": {
  8194. "gridType": "radar",
  8195. "gridColor": "#CCCCCC",
  8196. "gridCount": 3,
  8197. "opacity": 0.2,
  8198. "max": 200,
  8199. "labelShow": true
  8200. }
  8201. }
  8202. },
  8203. "gauge": {
  8204. "type": "gauge",
  8205. "color": color,
  8206. "title": {
  8207. "name": "66Km/H",
  8208. "fontSize": 25,
  8209. "color": "#2fc25b",
  8210. "offsetY": 50
  8211. },
  8212. "subtitle": {
  8213. "name": "实时速度",
  8214. "fontSize": 15,
  8215. "color": "#1890ff",
  8216. "offsetY": -50
  8217. },
  8218. "extra": {
  8219. "gauge": {
  8220. "type": "default",
  8221. "width": 30,
  8222. "labelColor": "#666666",
  8223. "startAngle": 0.75,
  8224. "endAngle": 0.25,
  8225. "startNumber": 0,
  8226. "endNumber": 100,
  8227. "labelFormat": "",
  8228. "splitLine": {
  8229. "fixRadius": 0,
  8230. "splitNumber": 10,
  8231. "width": 30,
  8232. "color": "#FFFFFF",
  8233. "childNumber": 5,
  8234. "childWidth": 12
  8235. },
  8236. "pointer": {
  8237. "width": 24,
  8238. "color": "auto"
  8239. }
  8240. }
  8241. }
  8242. },
  8243. "candle": {
  8244. "type": "candle",
  8245. "color": color,
  8246. "padding": [15, 15, 0, 15],
  8247. "enableScroll": true,
  8248. "enableMarkLine": true,
  8249. "dataLabel": false,
  8250. "xAxis": {
  8251. "labelCount": 4,
  8252. "itemCount": 40,
  8253. "disableGrid": true,
  8254. "gridColor": "#CCCCCC",
  8255. "gridType": "solid",
  8256. "dashLength": 4,
  8257. "scrollShow": true,
  8258. "scrollAlign": "left",
  8259. "scrollColor": "#A6A6A6",
  8260. "scrollBackgroundColor": "#EFEBEF"
  8261. },
  8262. "yAxis": {},
  8263. "legend": {},
  8264. "extra": {
  8265. "candle": {
  8266. "color": {
  8267. "upLine": "#f04864",
  8268. "upFill": "#f04864",
  8269. "downLine": "#2fc25b",
  8270. "downFill": "#2fc25b"
  8271. },
  8272. "average": {
  8273. "show": true,
  8274. "name": ["MA5", "MA10", "MA30"],
  8275. "day": [5, 10, 20],
  8276. "color": ["#1890ff", "#2fc25b", "#facc14"]
  8277. }
  8278. },
  8279. "markLine": {
  8280. "type": "dash",
  8281. "dashLength": 5,
  8282. "data": [{
  8283. "value": 2150,
  8284. "lineColor": "#f04864",
  8285. "showLabel": true
  8286. }, {
  8287. "value": 2350,
  8288. "lineColor": "#f04864",
  8289. "showLabel": true
  8290. }]
  8291. }
  8292. }
  8293. },
  8294. "mix": {
  8295. "type": "mix",
  8296. "color": color,
  8297. "padding": [15, 15, 0, 15],
  8298. "xAxis": {
  8299. "disableGrid": true
  8300. },
  8301. "yAxis": {
  8302. "disabled": false,
  8303. "disableGrid": false,
  8304. "splitNumber": 5,
  8305. "gridType": "dash",
  8306. "dashLength": 4,
  8307. "gridColor": "#CCCCCC",
  8308. "padding": 10,
  8309. "showTitle": true,
  8310. "data": []
  8311. },
  8312. "legend": {},
  8313. "extra": {
  8314. "mix": {
  8315. "column": {
  8316. "width": 20
  8317. }
  8318. }
  8319. }
  8320. },
  8321. "scatter": {
  8322. "type": "scatter",
  8323. "color": color,
  8324. "padding": [15, 15, 0, 15],
  8325. "dataLabel": false,
  8326. "xAxis": {
  8327. "disableGrid": false,
  8328. "gridType": "dash",
  8329. "splitNumber": 5,
  8330. "boundaryGap": "justify",
  8331. "min": 0
  8332. },
  8333. "yAxis": {
  8334. "disableGrid": false,
  8335. "gridType": "dash"
  8336. },
  8337. "legend": {},
  8338. "extra": {
  8339. "scatter": {}
  8340. }
  8341. },
  8342. "bubble": {
  8343. "type": "bubble",
  8344. "color": color,
  8345. "padding": [15, 15, 0, 15],
  8346. "xAxis": {
  8347. "disableGrid": false,
  8348. "gridType": "dash",
  8349. "splitNumber": 5,
  8350. "boundaryGap": "justify",
  8351. "min": 0,
  8352. "max": 250
  8353. },
  8354. "yAxis": {
  8355. "disableGrid": false,
  8356. "gridType": "dash",
  8357. "data": [{
  8358. "min": 0,
  8359. "max": 150
  8360. }]
  8361. },
  8362. "legend": {},
  8363. "extra": {
  8364. "bubble": {
  8365. "border": 2,
  8366. "opacity": 0.5
  8367. }
  8368. }
  8369. }
  8370. };
  8371. var _default = cfu;
  8372. exports.default = _default;
  8373. /***/ }),
  8374. /***/ 1290:
  8375. /*!************************************************************************************!*\
  8376. !*** D:/work/work/boman/school/qs_cfschool/mine/components/zb-table/js/summary.js ***!
  8377. \************************************************************************************/
  8378. /*! no static exports found */
  8379. /***/ (function(module, exports, __webpack_require__) {
  8380. "use strict";
  8381. Object.defineProperty(exports, "__esModule", {
  8382. value: true
  8383. });
  8384. exports.default = void 0;
  8385. var _default2 = {
  8386. props: {
  8387. scrollbarSize: {
  8388. type: Number,
  8389. default: 0
  8390. },
  8391. fixedLeftColumns: {
  8392. type: Array,
  8393. default: function _default() {
  8394. return [];
  8395. }
  8396. },
  8397. data: {
  8398. type: Array,
  8399. default: function _default() {
  8400. return [];
  8401. }
  8402. },
  8403. transColumns: {
  8404. type: Array,
  8405. default: function _default() {
  8406. return [];
  8407. }
  8408. },
  8409. border: {
  8410. type: Boolean,
  8411. default: false
  8412. },
  8413. showSummary: {
  8414. type: Boolean,
  8415. default: false
  8416. },
  8417. summaryMethod: {
  8418. type: Function
  8419. },
  8420. sumText: {
  8421. type: String,
  8422. default: '合计'
  8423. },
  8424. headerFooterTableLeft: {
  8425. type: Number,
  8426. default: 0
  8427. },
  8428. handleFooterTableScrollLeft: Function
  8429. },
  8430. data: function data() {
  8431. return {
  8432. sums: []
  8433. };
  8434. },
  8435. watch: {
  8436. 'data': {
  8437. deep: true,
  8438. immediate: true,
  8439. handler: function handler(newValue, oldValue) {
  8440. var _this = this;
  8441. var sums = [];
  8442. if (this.summaryMethod) {
  8443. sums = this.summaryMethod({
  8444. columns: this.transColumns,
  8445. data: this.data
  8446. });
  8447. } else {
  8448. this.transColumns.forEach(function (column, index) {
  8449. if (index === 0) {
  8450. sums[index] = _this.sumText;
  8451. return;
  8452. }
  8453. var values = _this.data.map(function (item) {
  8454. return Number(item[column.name]);
  8455. });
  8456. var precisions = [];
  8457. var notNumber = true;
  8458. values.forEach(function (value) {
  8459. if (!isNaN(value)) {
  8460. notNumber = false;
  8461. var decimal = ('' + value).split('.')[1];
  8462. precisions.push(decimal ? decimal.length : 0);
  8463. }
  8464. });
  8465. var precision = Math.max.apply(null, precisions);
  8466. if (!notNumber) {
  8467. sums[index] = values.reduce(function (prev, curr) {
  8468. var value = Number(curr);
  8469. if (!isNaN(value)) {
  8470. return parseFloat((prev + curr).toFixed(Math.min(precision, 20)));
  8471. } else {
  8472. return prev;
  8473. }
  8474. }, 0);
  8475. } else {
  8476. sums[index] = '';
  8477. }
  8478. });
  8479. }
  8480. this.sums = sums;
  8481. }
  8482. }
  8483. }
  8484. };
  8485. exports.default = _default2;
  8486. /***/ }),
  8487. /***/ 436:
  8488. /*!*************************************************************************!*\
  8489. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/mzicon.png ***!
  8490. \*************************************************************************/
  8491. /*! no static exports found */
  8492. /***/ (function(module, exports) {
  8493. module.exports = "data:image/png;base64,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"
  8494. /***/ }),
  8495. /***/ 461:
  8496. /*!************************************************************************!*\
  8497. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/word.png ***!
  8498. \************************************************************************/
  8499. /*! no static exports found */
  8500. /***/ (function(module, exports) {
  8501. module.exports = "data:image/png;base64,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"
  8502. /***/ }),
  8503. /***/ 478:
  8504. /*!************************************************************************!*\
  8505. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/addw.png ***!
  8506. \************************************************************************/
  8507. /*! no static exports found */
  8508. /***/ (function(module, exports) {
  8509. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAARVBMVEUAAABHdepPbu5HdepHdetHdutHdupGdetGdepGdetGc+lHdepHdepHdOpGdepGdepGdOlHdOpFdepFdfJGdOpGc+xHdeqKTaPWAAAAFnRSTlMAawj6ZJpHTulzHvXq23puZlhVEpEoGiHVBAAAAHBJREFUGNOt0DkOgDAMRNExmGzsm+9/VBARIYkiRMEvXLzCsoyrhZImr10dJwJfFTcLVspzVQ2SvOZUftW26QpqsRSUoT4rQafaDsy8w03Mowm64ckGNbNSymE9p+7TvSP0j5dJUDP0t8KWfgaASnoAbWwWhwFdwMcAAAAASUVORK5CYII="
  8510. /***/ }),
  8511. /***/ 487:
  8512. /*!************************************************************************!*\
  8513. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/hello.png ***!
  8514. \************************************************************************/
  8515. /*! no static exports found */
  8516. /***/ (function(module, exports) {
  8517. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAbCAMAAACNxMtTAAAAgVBMVEUAAABHdepGdOhHdepGdOpEdexEculHdepHdepGdOpFdOpHdOpFdOtGdepGcOdCd/A+bO1HdepGdepHdetGdepHdetGdepGdepGdepGdOpHdOtGdOpHdepHdepHdOtGdetHdepCdexGdOpGdepGdOpHdepHdOpGdOpId+lGdOxHder+7/p5AAAAKnRSTlMA/RberikL8ul5UcMgTxwSCPXo8GyzYX515aOJ1ZtWu8cm9M834DCTR0O5wJNSAAACgElEQVRIx7WXDZeqIBCGRXSwVNS01LS07WN3/f8/8ApoczG66d3tPadz4hXOAzIMoxW4QqfIUopOss3Ff+6i0NT7GywUcDfcCYUuB7QR41oOFaqzWNpxVsv2Ieq7HCgKTewvNbVQsVs4tPSESuoUrnqsYWqrJV2vJAfpQ56IJtnalmVvSYdCE/tL6RYKdueU4OD0vBufIya1fNmFrQb8iknfESRHw6OJ/aXQ0ujZdTL8mgGuPpVW+zb8mnZT0TU+9YRB/CX47Xw8DiYsZQTnPyjczMWTD2/jCW320Xx8WCpk2uRF3qSqUYaT1TcjvhjwxQM+2R/DtdQlno2HKlH0nAMAzxU/qUBbPft8vXpW4ImZjbebTsVWIJuBonTN+PZPVA6pBB6XGB73yQM+57ZUtAAfUG25kDMVfMH4HPG4wf3vg0zxpN46QtuDPR9/UVufFjEetF7lxYzXpeNH0WAeHve2844YakKbUMOn+Us8agkecfp0xpPPGyKau7fiEYftcUz3N56gnuKvv7h6e58yxuiAx/iqydO0c/7B3h8n04Hdqld2k3g8XTx/nna+4P8jv9AiXzggFI/4ez/2r9sFzQIM1vNzXyUYPprMWU/H/zzrtZj1lMDmAY9m4DHnf4HxIjBY9+WyKgCA4CHnR5lTU//zNvfGU7FnvAYN1j32CGuromoVHSPP+qZEzvgVXj95xiLAWBdwf2wmLBn/+nx5tYOiJrxjGyxx1AzVznAMEeO/DQ9ZOaGXmWBoZUU7p9LFl28sfw2Wiq5JpZtF07REmiV1vs+Nxb/BGuv85l7nN6LOR/H9deOV52zJV84pNpjcaClBcBu+cm4BWJr4d++68AcyldpO18CCuAAAAABJRU5ErkJggg=="
  8518. /***/ }),
  8519. /***/ 488:
  8520. /*!*************************************************************************!*\
  8521. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/mjicon.png ***!
  8522. \*************************************************************************/
  8523. /*! no static exports found */
  8524. /***/ (function(module, exports) {
  8525. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADTCAMAAADzl6z0AAAC8VBMVEUAAAD/367836/936/936/84K/83a/6zqT936/836/936/836/736793q/936/94K/936/84K/836/84bb+3632hX7836/836/836/94K/83q/836/84K/83q/94K/9367836/836783q73hn7837D836//7uX837D/7OP3hn/84K/3hn//7OP2hn/3hoD/8On/7OP3hYD3hX7/6+P2hX7/6+H2hH//6uT937D2eXL+6t35pp32d3H91cz836//7OPXm4mtbVr3hn/329D/19//////7OT/7uX94nD/6uLXmojWmYf73q73g3z328763K2sbFn96+L+6t//5uKra1j/7+fUmIX9189CAGKraVf837Kub1z/6NPIlHf86N/42KrjtpT5mpPYnYvz0aX94Wz43NL/4+HWm4ezdWD64tj/2N/21ajbpozrxp3erI/3gXq+hGv/3+A+AF+xcF3/8OX439X8x8D/+fX/9Oj/7+T/8ejYoYn/3OD//Pv6q6TwzaLqwpv4j4n/7OL/2t/85tz63bjitqfuyJ/3iIH63bvgqpv84onReGv55NriyNDtzMDWrZ7nv5nmuJjXnoj/8+vs1Nby183Vtsb63cD5pp7cpJPZn47dso3Fj3TBim9GBGT+5t7/69rqxrnKmorSo4P84XZQEmu4fWi2emT/9PL75Nr+6M/+58r428n43MTpv7HarIlxOYL5hoDKlnn34d3x0MPhsaDgr5HOnH3+5nD45t/qw7Xlu5fQopTyhHz2enL2eHHZfHC6f2rEdGXy1MjjvK76sqySYZh7RYnFjnxjJ3m/h3bnwmv+6ef95MHMq8D7v7v95Zzdp5aFUo/sgnnifnS6cWC1cF7737X5nJXOk4FcHnT42m7huWjEj1/+7u315uDy3Nr80czAm7f957Tx0rH6trGxiq6cbp/etGq9mLaofqfy0nLasGbTpWS2elzEorv956z636HkvqHll4v84n6+hlzFo7u5k7TMnGPLmWP85L48AAAAPnRSTlMABvff0csYFHORilInNuxE8Lf7IQ79q4J35PO6vqKefWhf8+s82DuX38qiopN1T3Lo2Li2jIE4KvLkuaysdIcLypIAABHjSURBVHja3NZJbuJAGAXgvzyAwRMYxBim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"
  8526. /***/ }),
  8527. /***/ 489:
  8528. /*!*************************************************************************!*\
  8529. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/mticon.png ***!
  8530. \*************************************************************************/
  8531. /*! no static exports found */
  8532. /***/ (function(module, exports) {
  8533. module.exports = "data:image/png;base64,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"
  8534. /***/ }),
  8535. /***/ 490:
  8536. /*!**************************************************************************!*\
  8537. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/mxgicon.png ***!
  8538. \**************************************************************************/
  8539. /*! no static exports found */
  8540. /***/ (function(module, exports) {
  8541. module.exports = "data:image/png;base64,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"
  8542. /***/ }),
  8543. /***/ 491:
  8544. /*!**************************************************************************!*\
  8545. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/shwicon.png ***!
  8546. \**************************************************************************/
  8547. /*! no static exports found */
  8548. /***/ (function(module, exports) {
  8549. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAe1BMVEUAAABGdetGdepFcutBd+xHdOpGdepHdelHdepGdepHdOpHdeo+beZGdepEdO5GdepHdepGdetGdetGdOtGcOpHdOpFdOlEc+pEdepHdetFdepAgP9HdepBcuxGdOtGdepGdepGdOlFdOlHdOpEc+tGdOlGdOpGdetHdeqAJ8LnAAAAKHRSTlMA4YEfB/zvQfTsxZkQ0w68zstjORPWZzw0MjAEoxq9tJFdUU0lroZx9XNJogAAAQZJREFUKM+FUtlywyAMFNgQnzEEnNO52rTd///CDsKasTvTdl8QrLToIsFJD6qq1KBPtMamAWDq2gBoNguibAGlDx1Rd9AKaEthooPdX+R22Vu4OMd4jMVSvRjhc1yLvmOXZzt9vpLV9Wg5A9hi9u3vtXlj2yLl0mBHxOeTqPN2my47NERnKGaO+Mga73xVOJOGpuz3lSlW5OcbAtvbFys9kJMNuJEy6UlwNHfKnkZRVS8Zq6TCulpRV2aEWgk+cnoiOCCQwJlSzICBsxSMEIqfuWT568qHlMyNkgRDipJGSXsZFdcr7ZWhMKYp0nIoVDr061H2cLNy9D8XwMff1+afZftjRb8BPGwVH6n9sVwAAAAASUVORK5CYII="
  8550. /***/ }),
  8551. /***/ 492:
  8552. /*!**********************************************************************!*\
  8553. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/tip.png ***!
  8554. \**********************************************************************/
  8555. /*! no static exports found */
  8556. /***/ (function(module, exports) {
  8557. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAeCAMAAAB+ITwmAAAAclBMVEUAAABGdetHdetIdetGdepGdepCcexHdetHdepGdepHdOpDce9GdepHdetGdOpGdepGdOpGdOpGdetGdepGdetGdOtGdetGdetHdepFc+s6aPRHdepHdOtGdOpFdOhHdepFdepGc+dEcupEc+xGduxHdeplmheAAAAAJXRSTlMATLCk3Ygb/duQFQ/31Me5tqxC6eOndGQ9NgfynZZ6a1VJMSBq/htRZwAAAL5JREFUOMvV08kOgjAUheFbK1LK0IF5nrzv/4qSYqRxYWPUhf+Kk3zkJiRAkfh4lAV9ak0/KTiAeWIipzKO8F4US5oLZt5lG2k7wsHUVB5DjD0d7puTrsXzRhRYzYizvZUhJ7AiiMTepxekrF2kxCh0EB3FjesQbxyHiiAIHIcSRLx8TELPSeDPCHF+OtMvCF8qXa8HWWtdLfxB5JRn+3+SimFEHAeRmulndJKGOPoaoXYKtxS16+GpK2MlvN8NSWYtefR/6CAAAAAASUVORK5CYII="
  8558. /***/ }),
  8559. /***/ 509:
  8560. /*!***************************************************************!*\
  8561. !*** D:/work/work/boman/school/qs_cfschool/api/mine/class.js ***!
  8562. \***************************************************************/
  8563. /*! no static exports found */
  8564. /***/ (function(module, exports, __webpack_require__) {
  8565. "use strict";
  8566. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
  8567. Object.defineProperty(exports, "__esModule", {
  8568. value: true
  8569. });
  8570. exports.getclassAddFn = getclassAddFn;
  8571. exports.getclassDelFn = getclassDelFn;
  8572. exports.getclassDetFn = getclassDetFn;
  8573. exports.getclassListFn = getclassListFn;
  8574. exports.getclassPutFn = getclassPutFn;
  8575. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 44));
  8576. // 获取查询老师-班级 列表 formal:class:list
  8577. function getclassListFn(data) {
  8578. return (0, _request.default)({
  8579. 'url': '/formal/class/list',
  8580. 'method': 'get',
  8581. 'data': data
  8582. });
  8583. }
  8584. // 老师-班级详情 formal:class:list
  8585. function getclassDetFn(data) {
  8586. return (0, _request.default)({
  8587. 'url': '/formal/class/' + data,
  8588. 'method': 'get'
  8589. });
  8590. }
  8591. // 老师-班级新增 formal:class:add
  8592. function getclassAddFn(data) {
  8593. return (0, _request.default)({
  8594. 'url': '/formal/class',
  8595. 'method': 'post',
  8596. 'data': data
  8597. });
  8598. }
  8599. // 老师-班级修改 formal:class:edit
  8600. function getclassPutFn(data) {
  8601. return (0, _request.default)({
  8602. 'url': '/formal/class/put',
  8603. 'method': 'post',
  8604. 'data': data
  8605. });
  8606. }
  8607. //删除老师-班级formal/class:remove
  8608. function getclassDelFn(data) {
  8609. return (0, _request.default)({
  8610. 'url': '/formal/class/delete/' + data,
  8611. 'method': 'get'
  8612. });
  8613. }
  8614. /***/ }),
  8615. /***/ 510:
  8616. /*!**********************************************************************!*\
  8617. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/del.png ***!
  8618. \**********************************************************************/
  8619. /*! no static exports found */
  8620. /***/ (function(module, exports) {
  8621. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAY1BMVEUAAAD+Wg3/Wg3/VgP+WQ3+WQ3/WQz/PwD/Wg7/Wg7+Wg7+Wg7/Vgz/Vg7/VQD+WQ7/Wg7/Vwn+Wg3/Wg7+WQ3+Wgz/WQ39WQz/WA3+WQ7+WQ3+Wg3/WQ79WQ3/WQ77WAv+Wg6bt9NBAAAAIHRSTlMAem4M54xWBKUz3uEVEQncxxvvp5lQTUEn89SzpodZQ1SPMpIAAACXSURBVCjPzZLZDoIwEEWHbljQLojg7v3/r3SwIdQAib4Yz8Nt05N0JpmhDA0oSYvsAWxpovVVXSVOrIZ7zSgVqMEaZMUFKMQcQ0RFqmAPxMR7yelM5ByVa9ATlR7Fq9dzpiRgWCno1Oua2nykdv+h5A+V+1LlHw4DU7i9qyMfQjvOro2cYVLXzmb0/JLUAwuEcTVneC7xBNzQHxmqxI0/AAAAAElFTkSuQmCC"
  8622. /***/ }),
  8623. /***/ 511:
  8624. /*!*************************************************************************!*\
  8625. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/update.png ***!
  8626. \*************************************************************************/
  8627. /*! no static exports found */
  8628. /***/ (function(module, exports) {
  8629. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAZCAMAAAAYAM5SAAAAbFBMVEUAAABGdepHdepHdeo/butHdetHdepHdOpDces+YeVGdepGdepGdepGdelDdOtGdepHdOpHdepHdepGdetGc+1FdOlHdOlGdepGdelGdepGdepHdupHdOlHdOlGdOpGc+pGdOxHduxFdutHdervoBctAAAAI3RSTlMAlfiRDN/QnhQH1It4dCnrw72AaVRNIvfHta6ppZqEX0I2Gom0/aAAAACgSURBVCjPpdJJDoMwEETRImYyYyBA5rHuf8c0siNh1Mkmf9d6i94UmoSLEgtXXjXYMij3UjDBniyy6NPgJSVbbHjAuliEo1C0Fjs/GaCQ7UTu0OgosoNGZycKZSI1NLqK9NDIiNwgPWsbUilSYq5lFVBP+ismzZIqkQwaTSIXqPQiT9AJjxoKBf1LqUKTo3kAQcaYlCzR8UujjE2XCD96AzK9Ga0RNNuYAAAAAElFTkSuQmCC"
  8630. /***/ }),
  8631. /***/ 553:
  8632. /*!*****************************************************************************!*\
  8633. !*** D:/work/work/boman/school/qs_cfschool/mine/static/trends/taddicon.png ***!
  8634. \*****************************************************************************/
  8635. /*! no static exports found */
  8636. /***/ (function(module, exports) {
  8637. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAABuCAMAAADxhdbJAAAARVBMVEX09PTz8/Pz8/Opqamnp6fp6em0tLT19fWwsLDi4uLt7e26urqsrKzs7Oyzs7Px8fHy8vLm5ua4uLjMzMza2trY2NjCwsLD3av6AAAAAnRSTlP38JDTSF4AAAEYSURBVGje7drNjsIgFIbhDj/2tOUAdtT7v9SBaaNyGhMXQKL5XtPNt3nCBpOmw8/Qr4ypjg3gwIEDBw4cOHDgwCkFDhy4141bStaGi2yZ0xPF3oizC3nvabFib8SdyeToLPZWnDdaa+M7cfb0z52s2MGBA5cCB24s451jsdfh4sxz0bT/I0zlzHOswfFtXYpWp3NOzjeuwI1MRh9yx8kQj204l59WnH/zdL4e58RPH6ZanCUj2k8nZ7I1OF4dlektsbqVK3AqTKILmXw2ukyi0OISe7pVlKgJd78zBfehVzS4FDhw4FLfwXV/FeByvU4Xrr+5axB7Iy6GrahE3/HGDxw4GThw4FLgwIFLgQMHLgUO3IPr/An9H/heaJLYr7hoAAAAAElFTkSuQmCC"
  8638. /***/ }),
  8639. /***/ 578:
  8640. /*!**********************************************************************!*\
  8641. !*** D:/work/work/boman/school/qs_cfschool/static/images/ysicon.png ***!
  8642. \**********************************************************************/
  8643. /*! no static exports found */
  8644. /***/ (function(module, exports) {
  8645. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAdCAYAAABSZrcyAAAAAXNSR0IArs4c6QAABKJJREFUSEu1Vm+IVFUU/5331pXddluc3r0jkmVFf5GgQijU6IMllGih9kGyiMggBEWk2AWlMlbdiugPEhVUZFD2ByqKSjT6UBRo2Aezf0apmXPum2m23dh22rknzvBGXrM7b8ay++m9e8/v/M4599xzDqHN1dfXN6Ozs/NeIloJ4FIAnQAqInIQwK5qtbqjVCr93qa6mhi1I2yMWQjgVSKa1UxeRI5671cWi8Uv2tHZFnk+n1/kvX+fiKbVlYpImYiOichsIupLkY157xfGcby/HQMyPe/t7T2rq6vrEACjykTkWyJax8x7AfyloY+iaHEQBE8DOCchPOK9nxvH8UgrAzLJrbWPANiYEB+qVCrzh4eHf2tUaq3NA/gMwPl65r3fHMfxliiKLiKiBwGcQUSS6CEiOj4+Pt6fRR5aa38BoIpV4bw4jvc180avR0R2J+c/MfN51tq3ASydCiMiA03JrbWXA/gqAR5g5itahdFa+wOAC1RuYmJibhiGS4hoWyNORDyAm5qSG2NuJaLXEuBzzLymDfJXAKxKIrUsjuN3oii6WMOexnrvXalUOtqUPIqiu4MgeDYBDTHz/W2Qn8wRAKuZeWcWJivstwF4+RQ9V3nF6VrOzG/9K/JcLndZR0eHVi99Yt855zR8WStIEnSmClUqlTnlcvlnANOstc8DWFAHi8ivExMTq7Kynay1xwDUqhoRXVMoFD5vxm6MuZGI3kvODzLzXP2Ooui6IAg+ngL3QOY7N8YMElF/AnyTmVdkkH9CRNcmkVrnnHtSv3O53JlhGO4loqtS2AKAxZnkPT09pru7+yiA6QlwATN/2miAtXY5gDeS/RIznw1gLC2n1TL5p5GRkWGtkC0bi7V2O4D7EuDXzKzvv1pXHEVRLxF9U2863vsNcRw/3upl1K6ylZAxpoeIvgdQSyTv/dI4jt+t44wxdxGRJpQm5iHnnN61FpFJS3WNjY11jY6OltvyXDUYY9YS0VOJti3MvDlF/iIR3aH/1Wr15mKxqCV10oqiaH0QBFrtpovIcQBLWnquWtKhF5FNzrmH69qttc8AuCfxvN85N6mcJg58SUTpEt0y2y8EoBmfzvJ/JJ0xZgURvV43RkR2EdEAMx9Ou2+tvQXAQwC6ReRItVq9fUrPtUWqhwDWpIcIADuZefUU2f4hgBtS+zpe7QjDcPDEiROuWV41kncbY9ZrdjdMKKMist05N9gkmTqttQNJ7z/ZRJKJZysz65v/s9GIk+T5fH6ZiDwB4NxUCDVrX/LebyoWi9rbM1cul5vd0dGhd17rbKl1WETWOuc+SG/WyK21jwHY0ADYIyIbnXMHWpE2nudyuavDMHyUiOanz0Rkm3OuXjFBDSVUZX8kog2FQmHKJ3MqhhhjVhLREIA5qWgOOOe26r82j/FkBvciMuSc05lr0v2cCmmDbJcxZoiI1ibPcdg5F+mwo+T1wW6fc27efyDJhBpj9hPRlYnQTGYuKLkmld79HyKiNTo83QaISJWILqmPU5VKZUa5XC4r+UcArj/dhBn6djNzrSZQFEWzgiB4QUQWEVHwfxmReL/He39nHMda2/E35u3zseJs5XAAAAAASUVORK5CYII="
  8646. /***/ }),
  8647. /***/ 595:
  8648. /*!***************************************************************!*\
  8649. !*** D:/work/work/boman/school/qs_cfschool/api/mine/score.js ***!
  8650. \***************************************************************/
  8651. /*! no static exports found */
  8652. /***/ (function(module, exports, __webpack_require__) {
  8653. "use strict";
  8654. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
  8655. Object.defineProperty(exports, "__esModule", {
  8656. value: true
  8657. });
  8658. exports.getscoreAddFn = getscoreAddFn;
  8659. exports.getscoreAddimpFn = getscoreAddimpFn;
  8660. exports.getscoreDelFn = getscoreDelFn;
  8661. exports.getscoreDetFn = getscoreDetFn;
  8662. exports.getscoreListFn = getscoreListFn;
  8663. exports.getscoreavgRank = getscoreavgRank;
  8664. exports.getscoreavgRankZheXian = getscoreavgRankZheXian;
  8665. exports.getscorebingTuRank = getscorebingTuRank;
  8666. exports.getscoreclassRank = getscoreclassRank;
  8667. exports.getscoregradeRank = getscoregradeRank;
  8668. exports.getscorexuekeRank = getscorexuekeRank;
  8669. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 44));
  8670. // 成绩导入 score:data:add
  8671. function getscoreAddimpFn(data) {
  8672. return (0, _request.default)({
  8673. 'url': '/score/data',
  8674. 'method': 'post',
  8675. 'data': data
  8676. });
  8677. }
  8678. function getscoreAddFn(data) {
  8679. return (0, _request.default)({
  8680. 'url': '/score/data/add',
  8681. 'method': 'post',
  8682. 'data': data
  8683. });
  8684. }
  8685. // 成绩详情 score:data:query
  8686. function getscoreDetFn(data) {
  8687. return (0, _request.default)({
  8688. 'url': '/score/data/query',
  8689. 'method': 'post',
  8690. 'data': data
  8691. });
  8692. }
  8693. // 成绩列表 score:data:list
  8694. function getscoreListFn(data) {
  8695. return (0, _request.default)({
  8696. 'url': '/score/data/list',
  8697. 'method': 'get',
  8698. 'data': data
  8699. });
  8700. }
  8701. //删除成绩
  8702. function getscoreDelFn(data) {
  8703. return (0, _request.default)({
  8704. 'url': '/score/data/delete/' + data,
  8705. 'method': 'get'
  8706. });
  8707. }
  8708. // 统计
  8709. // 总分排名
  8710. function getscoregradeRank(data) {
  8711. return (0, _request.default)({
  8712. 'url': '/score/data/gradeRank',
  8713. 'method': 'post',
  8714. 'data': data
  8715. });
  8716. }
  8717. // 成绩学科统计
  8718. function getscorexuekeRank(data) {
  8719. return (0, _request.default)({
  8720. 'url': '/score/data/xuekeRank',
  8721. 'method': 'post',
  8722. 'data': data
  8723. });
  8724. }
  8725. // 班级总分平均分排名统计
  8726. function getscoreclassRank(data) {
  8727. return (0, _request.default)({
  8728. 'url': '/score/data/classRank',
  8729. 'method': 'post',
  8730. 'data': data
  8731. });
  8732. }
  8733. // 班级总分平均分人数统计
  8734. function getscoreavgRank(data) {
  8735. return (0, _request.default)({
  8736. 'url': '/score/data/avgRank',
  8737. 'method': 'post',
  8738. 'data': data
  8739. });
  8740. }
  8741. // 班级总分平均分人数统计折线图
  8742. function getscoreavgRankZheXian(data) {
  8743. return (0, _request.default)({
  8744. 'url': '/score/data/avgRankZheXian',
  8745. 'method': 'post',
  8746. 'data': data
  8747. });
  8748. }
  8749. // 年级分数段统计
  8750. function getscorebingTuRank(data) {
  8751. return (0, _request.default)({
  8752. 'url': '/score/data/bingTuRank',
  8753. 'method': 'post',
  8754. 'data': data
  8755. });
  8756. }
  8757. /***/ }),
  8758. /***/ 596:
  8759. /*!*************************************************************************!*\
  8760. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/check.png ***!
  8761. \*************************************************************************/
  8762. /*! no static exports found */
  8763. /***/ (function(module, exports) {
  8764. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAZCAMAAAAYAM5SAAAAflBMVEUAAABHdetGdepHdepGdetFdOtHdOpGdepHdOtGdOtFdepGdOtEcOgqbOVHdepGdepGdepGdepGdepGdepGdepGdepGdepFdOpHdutIc+tAbe5GdOpGdepGdepEcuZHdelHdOpGdOlHdOtHc+lGdOtGdOtHdOtGc+xAdepHder9tQD2AAAAKXRSTlMA+u3471pB8zpINSISBPXo5dGthHZuYlJMLwnayboe39ulopSKf2UoGFANZa4AAADUSURBVCjPdZLXEsIgEEVvSCBRU9Q0E3t3//8H3cEESPE8wAwHWPYO6GirY0CMfyg+cEkKQQb/Hluz2tAAsejNMqAxVXcmpCk7XWdDMwQrVgXNsgXacSHvedFzBEkjXojPxOS4jowE3hkxGfZDUwNN1z7SX4E81NPC6RI/o6B8jkgBkYkMvLtbS8OIR/tgrmVuagCVklU3N5mdb83a9OXVQO2RJUcreicr19ASKP9lyMwmL05gTmJq+MWaZuqk+RuHocgUDEm5tiJ8xHBJ5FZbcSx78QU5aUeOEwLQZAAAAABJRU5ErkJggg=="
  8765. /***/ }),
  8766. /***/ 597:
  8767. /*!***********************************************************************!*\
  8768. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/add.png ***!
  8769. \***********************************************************************/
  8770. /*! no static exports found */
  8771. /***/ (function(module, exports) {
  8772. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUBAMAAAB/pwA+AAAAElBMVEUAAABIdOpHdepHdepIdetHdeokhAJrAAAABXRSTlMAq/fjpExiOj4AAAAtSURBVAjXYwABIUUGGBANpJTpGgKmBIHANBhEMqiGQkEQMhOhAKqNSm5AeAgAU6EOv2/YxaQAAAAASUVORK5CYII="
  8773. /***/ }),
  8774. /***/ 598:
  8775. /*!*************************************************************************!*\
  8776. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/draft.png ***!
  8777. \*************************************************************************/
  8778. /*! no static exports found */
  8779. /***/ (function(module, exports) {
  8780. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAk1BMVEUAAAAUFBQWFhYAAAAVFRUWFhYVFRUVFRUVFRUZGRkVFRUWFhYWFhYVFRUAAAAUFBQVFRUVFRUVFRUVFRUVFRUNDQ0WFhYVFRUUFBQXFxcTExMVFRUWFhYWFhYVFRUUFBQVFRUVFRUUFBQWFhYVFRUVFRUVFRUWFhYVFRUUFBQUFBQREREVFRUVFRUWFhYUFBQWFhYrUJhtAAAAMHRSTlMAMy4I8iLwYWQK/PbSzwRE5NbCuzoS7LGgLCjo3op/V1EwGJmWkHl0bUs+DsmnWxrZjup/AAABRElEQVQ4y+3TyZaCMBCF4YsgCAgok4DzPPVQ7/90LSlaiHTE02v/BasvJylygip959JfjQaQm5CqpeRiUjaW4IDILfrtjkSG/gBNHe2sG7QlyCsLrdHaVsL9w+lsFRyTXKyCi9RsFvoqCF9vphpGNbWP3+xgPxMwWQ1Ey00DOtkqQVl/YhKRgCFVDWtY5kZrQBOM4YiqUr+GTDX+JVNPwKU3FHmn5tZTvnEiGsW+9WyYIL0hlNycH57AiUMMORUUSdDdtJh/9iRoRcQHKCSWnJiZ23MFe4j5HBRd7mydufxoDgl6dwjkn0zDQLAgIpFn6YAEgf7OoLKP1dXiPZ2IVzUg9z03eSz+bgugDblkkRI3XWwABRRdj+WFDy0bUEPODr40cCpY94b/gXkXzCuYaR1lJZzRS81wMV5xRgzkodPFnLCHH3drccsOw3EoAAAAAElFTkSuQmCC"
  8781. /***/ }),
  8782. /***/ 599:
  8783. /*!************************************************************************!*\
  8784. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/check.png ***!
  8785. \************************************************************************/
  8786. /*! no static exports found */
  8787. /***/ (function(module, exports) {
  8788. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAyCAMAAADr0TwHAAAAjVBMVEUAAABHdetIdOlGb99HdOtGdOpHdepHdOtGdepGdetGdOpGdepGdupGdOpHcOtGdOpHdepHdulHdelEdO9HdOtHdepGdOpHdetHdutHder////19/79/f5Meeptke5pj+7g5/vM2fnI1viuwvZhie3i6fu4yfZ4me9xle/x9P3w9P2lu/Sku/Tj6vu4yvb2x7BxAAAAGXRSTlMA/SINv/Pe2K+llmJbMhnvvpqCIMibe+6Ce7MSPAAAAadJREFUWMO1mOlugzAMgAMFylVo6bGRpJSjHD2293+8JYs0belBzOrvJ7I+IeM4NuQWOwodz7VyQyzXc8LIJqOsd/N8EvPd+ql44Vv5ZCx/8VCcBPk/CZL75jiFefbDtW4Z5+e2vg579SyN75lXMPGhY/QXrDuo5yuiM1vCxBW9oVLy5Uwzb0CpaDi9A2++07L56wa987GkDyiP2nsD81yc6UPOhZbvGGIeGH0CG2RM/FPPb5BsnOhTTjInaUIUAeQLlnSEUn7LQJkXOYCGjtLIOHXmfUg983E1l/XtS7MN6UgVNaCSvUr2wQxSd9QIWYGZUEP6c2em7mT/FvmAlAczUzNZJDaJAOqeGtKL4IiEAPXFVH0RwSFxAOraVF2LYId4AHVrqm5FsEdcgJqZqpkIdgnkwHBTNZeHBlENSsgJlBDEz4hYfIhHBvGgI7YnvKaKdxW8y2Ed6QLDu3YRhwXsEYckKcJghjZOog3BW8C6AR7d8RcO5XZetSY5M6KzzUEU2nL3Wajn25espL1aSdlHfe21lRR/kcZf/xV2NvWnRWZrKsRfLV/4Qootq+v7ogAAAABJRU5ErkJggg=="
  8789. /***/ }),
  8790. /***/ 608:
  8791. /*!***************************************************************************!*\
  8792. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/example.png ***!
  8793. \***************************************************************************/
  8794. /*! no static exports found */
  8795. /***/ (function(module, exports) {
  8796. module.exports = "data:image/png;base64,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"
  8797. /***/ }),
  8798. /***/ 609:
  8799. /*!***********************************************************************!*\
  8800. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/exc.png ***!
  8801. \***********************************************************************/
  8802. /*! no static exports found */
  8803. /***/ (function(module, exports) {
  8804. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAkCAMAAADbwBjtAAABLFBMVEUAAADAxtDIzdbs7PHq6/DJ0NcJzQPBx9DBx9AVkSsLhh3w8PS21r0VkSq32L+h1qgLiRzJztbI384IhBjL6svV2d6/xc7AyNAAxwAHyQDO1NoamRocjhwAcQDh4+jFytLEytPr7PG/xc7j5ekKyQTs7PAJyQTAxs/r6/Dr7PAKyQUDxgDBx9AExwHT6dTQ6dHu7/L////j5eq+xM0HyAPb99uz7rKU55IIyQQExQK677mw7a40zzEbyhjf+N/c99uR54+N5ot44Hcvzy0kzSHq++rY9tfN9MyE5IJx3m9n3WZj2WMgzB4VyRMKxQgBwgD8/vzj+ePF8sTB8cCt7K2Y6JZj3GJh1WFV1VNM1Es81Do60TkqzSkRxw/2/fbz/PKm66Ra2ldF0UQCvwFXKMbxAAAAKXRSTlMA+PG5+B39297B/fv69/b29fDUwb+2sDApIxsKCQn49vTax72wrq6mM/i0dZkAAAFySURBVDjLvdJnT8JAGMDxcwCy9wb3oqXqQVtoS9l7743z+38H77SgoJe+Mf7TNLnnfklzlwLU7dnhVsfnAbDTVWS7WFyn2SEHP0gUGTWCjCqJHmnUCDZqBBs1go0qwYZMlHQBAolE4+tuSCQSW3exIcQO/pKEHWTiCGMRcprIxOQMARDUGyxkYjHog0BvtlnviFltZj3QarUMTYxB24CiKBYv0ItiaJaiBYZKfgzwCodJM5HNJoq5XLueKLSqfH7VwoNFPSFvSAqmJT5Vg6Mu36k8Drt9GZYkfibB4jcyyI9pQYTp1gLm3l6qMiznax1+i6TFZ0EYwnJ7BvP08rUJS6KISJNlN4SfNIoNKMLc6qk87fVkWJk0lhKsjefsJylkOC4z5SptKV2Y90uDgowH9RHHcVUak69DJ9HDCozAKofG94I/dIlugSFGJ6lrAPw+1z0xl8//r38dcBsfCBndCvGc2vd/zX7iUYhXt0dI50Xb73/BqcfAcR0uAAAAAElFTkSuQmCC"
  8805. /***/ }),
  8806. /***/ 610:
  8807. /*!************************************************************************!*\
  8808. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/down.png ***!
  8809. \************************************************************************/
  8810. /*! no static exports found */
  8811. /***/ (function(module, exports) {
  8812. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAMAAABsDg4iAAAAYFBMVEUAAABGc+pGdOpHduxHdetGdOtDc+tAc/NOYuxGdOpHdetHdepGdOpHdOtGdOpDdOpDdO5HdOpHdetGdetHdOpHdetGdOpGc+pFdepAd+1HdepGdelGdelHdexDb+lHderZnHu+AAAAH3RSTlMAX3U12zkcCgT08OfItGwsIeKmop1+VE4lDs2ui14XYbvcQgAAAIJJREFUGNOFzNsSgiAUheGVRhAaaOap03r/t2xD40hw0X/FfLMX2HpbTshTZFVg/R9Xt6SonQdwpa131C2tBp7kWW24tuTRhFNR/0Uj1ncIXcjGK0EdXmKxm9y+yPEu2xOwayi1+EOsSQ3mEaxfgB8dZNshbxySrTpkzcDMIoepxOoDzqUPJewX+jIAAAAASUVORK5CYII="
  8813. /***/ }),
  8814. /***/ 619:
  8815. /*!***************************************************************!*\
  8816. !*** D:/work/work/boman/school/qs_cfschool/api/mine/files.js ***!
  8817. \***************************************************************/
  8818. /*! no static exports found */
  8819. /***/ (function(module, exports, __webpack_require__) {
  8820. "use strict";
  8821. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
  8822. Object.defineProperty(exports, "__esModule", {
  8823. value: true
  8824. });
  8825. exports.getleaveAddFn = getleaveAddFn;
  8826. exports.getleaveDelFn = getleaveDelFn;
  8827. exports.getleaveListFn = getleaveListFn;
  8828. exports.getliveAddFn = getliveAddFn;
  8829. exports.getliveDelFn = getliveDelFn;
  8830. exports.getliveListFn = getliveListFn;
  8831. exports.getmindAddFn = getmindAddFn;
  8832. exports.getmindDelFn = getmindDelFn;
  8833. exports.getmindListFn = getmindListFn;
  8834. exports.getoldechFn = getoldechFn;
  8835. exports.getoldlistFn = getoldlistFn;
  8836. exports.getstuAddtFn = getstuAddtFn;
  8837. exports.getstuCountFn = getstuCountFn;
  8838. exports.getstuDelFn = getstuDelFn;
  8839. exports.getstuDetFn = getstuDetFn;
  8840. exports.getstuListFn = getstuListFn;
  8841. exports.getstuPutFn = getstuPutFn;
  8842. exports.getstunoListFn = getstunoListFn;
  8843. exports.getteaAddtFn = getteaAddtFn;
  8844. exports.getteaDelFn = getteaDelFn;
  8845. exports.getteaDetFn = getteaDetFn;
  8846. exports.getteaListFn = getteaListFn;
  8847. exports.getteaPutFn = getteaPutFn;
  8848. exports.getteanoListFn = getteanoListFn;
  8849. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 44));
  8850. // 学生档案信息 student:info:list
  8851. function getstuCountFn(data) {
  8852. return (0, _request.default)({
  8853. 'url': '/student/info/statistics',
  8854. 'method': 'get',
  8855. 'data': data
  8856. });
  8857. }
  8858. // 学生档案信息 student:info:list
  8859. function getstuListFn(data) {
  8860. return (0, _request.default)({
  8861. 'url': '/student/info/list',
  8862. 'method': 'get',
  8863. 'data': data
  8864. });
  8865. }
  8866. // 学生档案信息详情 student:info:query
  8867. function getstuDetFn(data) {
  8868. return (0, _request.default)({
  8869. 'url': '/student/info/' + data,
  8870. 'method': 'get'
  8871. });
  8872. }
  8873. // 新增学生档案信息 student:info:add
  8874. function getstuAddtFn(data) {
  8875. return (0, _request.default)({
  8876. 'url': '/student/info',
  8877. 'method': 'post',
  8878. 'data': data
  8879. });
  8880. }
  8881. //修改学生档案信息 student:info:edit
  8882. function getstuPutFn(data) {
  8883. return (0, _request.default)({
  8884. 'url': '/student/info/put',
  8885. 'method': 'post',
  8886. 'data': data
  8887. });
  8888. }
  8889. //删除学生档案信息 student:info:remove
  8890. function getstuDelFn(data) {
  8891. return (0, _request.default)({
  8892. 'url': '/student/info/delete/' + data,
  8893. 'method': 'get'
  8894. });
  8895. }
  8896. // 老师档案信息 teacher:info:list
  8897. function getteaListFn(data) {
  8898. return (0, _request.default)({
  8899. 'url': '/teacher/info/list',
  8900. 'method': 'get',
  8901. 'data': data
  8902. });
  8903. }
  8904. // 老师档案信息详情 teacher:info:query
  8905. function getteaDetFn(data) {
  8906. return (0, _request.default)({
  8907. 'url': '/teacher/info/' + data,
  8908. 'method': 'get'
  8909. });
  8910. }
  8911. // 新增老师档案信息 teacher:info:add
  8912. function getteaAddtFn(data) {
  8913. return (0, _request.default)({
  8914. 'url': '/teacher/info',
  8915. 'method': 'post',
  8916. 'data': data
  8917. });
  8918. }
  8919. //修改老师档案信息 teacher:info:edit
  8920. function getteaPutFn(data) {
  8921. return (0, _request.default)({
  8922. 'url': '/teacher/info/put',
  8923. 'method': 'post',
  8924. 'data': data
  8925. });
  8926. }
  8927. //删除老师档案信息 teacher:info:remove
  8928. function getteaDelFn(data) {
  8929. return (0, _request.default)({
  8930. 'url': '/teacher/info/delete/' + data,
  8931. 'method': 'get'
  8932. });
  8933. }
  8934. // echarts student/old/echarts
  8935. function getoldechFn(data) {
  8936. return (0, _request.default)({
  8937. 'url': '/student/old/echarts',
  8938. 'method': 'get',
  8939. data: data
  8940. });
  8941. }
  8942. // 历史信息
  8943. function getoldlistFn(data) {
  8944. return (0, _request.default)({
  8945. 'url': '/student/old/list',
  8946. 'method': 'get',
  8947. data: data
  8948. });
  8949. }
  8950. //班级学生信息
  8951. function getstunoListFn(data) {
  8952. return (0, _request.default)({
  8953. 'url': '/system/student/noPage/list',
  8954. 'method': 'get',
  8955. data: data
  8956. });
  8957. }
  8958. //老师信息
  8959. function getteanoListFn(data) {
  8960. return (0, _request.default)({
  8961. 'url': '/formal/class/noPage/list',
  8962. 'method': 'get',
  8963. data: data
  8964. });
  8965. }
  8966. //心理健康-新增学生信息mind:old:add
  8967. function getmindAddFn(data) {
  8968. return (0, _request.default)({
  8969. 'url': '/mind/old',
  8970. 'method': 'post',
  8971. data: data
  8972. });
  8973. }
  8974. //心理健康-历史信息mind:old:list
  8975. function getmindListFn(data) {
  8976. return (0, _request.default)({
  8977. 'url': '/mind/old/list',
  8978. 'method': 'get',
  8979. data: data
  8980. });
  8981. }
  8982. //心理健康-删除学生信息mind:old:add
  8983. function getmindDelFn(data) {
  8984. return (0, _request.default)({
  8985. 'url': '/mind/old/delete/' + data,
  8986. 'method': 'get'
  8987. });
  8988. }
  8989. //身高体重-新增学生信息live:old:add
  8990. function getliveAddFn(data) {
  8991. return (0, _request.default)({
  8992. 'url': '/live/old',
  8993. 'method': 'post',
  8994. data: data
  8995. });
  8996. }
  8997. //身高体重-历史信息live:old:list
  8998. function getliveListFn(data) {
  8999. return (0, _request.default)({
  9000. 'url': '/live/old/list',
  9001. 'method': 'get',
  9002. data: data
  9003. });
  9004. }
  9005. //身高体重-删除学生信息live:old:add
  9006. function getliveDelFn(data) {
  9007. return (0, _request.default)({
  9008. 'url': '/live/old/delete/' + data,
  9009. 'method': 'get'
  9010. });
  9011. }
  9012. //请假-新增system:leave:add
  9013. function getleaveAddFn(data) {
  9014. return (0, _request.default)({
  9015. 'url': '/record/leave',
  9016. 'method': 'post',
  9017. data: data
  9018. });
  9019. }
  9020. //请假-历史信息system:leave:list
  9021. function getleaveListFn(data) {
  9022. return (0, _request.default)({
  9023. 'url': '/record/leave/list',
  9024. 'method': 'get',
  9025. data: data
  9026. });
  9027. }
  9028. //请假-删除学生信息system:leave:list
  9029. function getleaveDelFn(data) {
  9030. return (0, _request.default)({
  9031. 'url': '/system/leave/' + data,
  9032. 'method': 'get'
  9033. });
  9034. }
  9035. /***/ }),
  9036. /***/ 620:
  9037. /*!************************************************************************!*\
  9038. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/edit.png ***!
  9039. \************************************************************************/
  9040. /*! no static exports found */
  9041. /***/ (function(module, exports) {
  9042. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAQCAMAAAA/D5+aAAAAXVBMVEUAAABmZmZjY2NlZWVmZmZlZWVlZWVmZmZlZWVmZmZhYWFmZmZmZmZmZmZmZmZmZmZkZGRjY2NlZWVVVVVlZWVmZmZmZmZmZmZoaGhjY2NeXl5jY2NmZmZmZmZmZmbqCpSBAAAAHnRSTlMAQxpr3za1juRmBPXPoGxeTzEsBvTxZFBAHxMSwZis3nxfAAAAj0lEQVQY033Q3Q6DIAwF4DMEFUHEn839nvd/zNFxsRAj31XT5LRpIeaWpXZB1qTaXv5sS9dATNQGJaM5AVCuVyhIs99Ss2PE0c4OQ6+lfD0ADPMgiScSrbFwlOFXBqyefsWN2x3ASJiUlKn0qSQN3uTn16mkKrskueMosju9y6nKNyo/rH9eqGhDkwUb8+4vVFINAmMNZmAAAAAASUVORK5CYII="
  9043. /***/ }),
  9044. /***/ 645:
  9045. /*!************************************************************************!*\
  9046. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/scbg.png ***!
  9047. \************************************************************************/
  9048. /*! no static exports found */
  9049. /***/ (function(module, exports) {
  9050. module.exports = "data:image/png;base64,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"
  9051. /***/ }),
  9052. /***/ 646:
  9053. /*!*************************************************************************!*\
  9054. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/share.png ***!
  9055. \*************************************************************************/
  9056. /*! no static exports found */
  9057. /***/ (function(module, exports) {
  9058. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAfCAMAAAAhm0ZxAAAAn1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Kd3m4AAAANHRSTlMA9vrwDhbn7OQsECcTCQSql3Nu/NSyehvht6WAaDMivrqckYhOINzGXdnLrkE4z86gi1ZI9mLUFwAAAW5JREFUKM91ketigjAMhZuGtlQQZFwFERC86y6O93+2RVFxG5w/afqR0OSwX3KaMrLZsCYzMN+MYWZXvCU4Vsd9giPsvRhpa6wgzY/c9Cb/iMhdXgir5PIPtM9ZscH2EDM95/K1rXH6TJCj3GQGI/hauf5KOO5dr9G3KyskKDqUhwBBZNlTRuogyPp2Om+5mmkCvZauj9eotzRv18F5fBBXHCiIlJsL4wpEvvNy5/b/FPFINwuFkUFxvQsTha64dkwBZ0uK7zyMabzdVnGEdktnywVVU5wu0DxRWilfzj0XCsF0yFV2Kz9AajNdAhQXIVZQCl3eEWukujgWLaJeO8yYQXqi8938DPfr2KWXTjqPgg/+9CiEeRyhorRjfpvQQJ0CqM8BVKLz4pMTei4owa8VBvrhLW52/e428CExeuR53fSIHXzuB1bvo8N6HaGFasIGlWGL3nSYNbKV32xYOmhNPcKMSO2XI4wMWdnD5Ad0NBrccbfqBwAAAABJRU5ErkJggg=="
  9059. /***/ }),
  9060. /***/ 647:
  9061. /*!*************************************************************************!*\
  9062. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/total.png ***!
  9063. \*************************************************************************/
  9064. /*! no static exports found */
  9065. /***/ (function(module, exports) {
  9066. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAeCAMAAADjLDWuAAAAflBMVEUAAABHdelGdepHdepEcelHdOpEd+5HdetIdOtGc+tHdepBbOdHdepGdepHdepGdelFdOlDZ+hGdOpHdetFdOpGdetHdOpGc+pGdepHdepGdOpGdepGdelGdOpGdOpGdepFdOtHdOpGc+lDb+lHdetGdetGc+pIdO1Da+RHderTVGztAAAAKXRSTlMA+YNSLIQPsXIjzQfjuqpoHwrXdjDwkV/05sGoi35bynFsQBfimEk5EyM9pQ0AAADPSURBVCjPxdDJEsIgEEXRBsUpRgU1JmZwHt7//6ChKe1siBurvCuqzmPTFOmiuDLq4BYxt6Z27NGOYK+qO0mD5P1aA+7auoIRXiJNPjyfOnbdYYRBYHKKXdi3t28ma6134e0jbQdJYM678IaSFHCBxYWJB4HFhXnAPD2dnuLnwGFQ+t8NsBGnOg8slwKGHacVXz3LzhHnRsD6i0++e3Yoe32M2e+9KYpVn++AP3nN3ni3wNH7oet74xsDmamAVGuHQpsFcDNGt96Xolz1lb8AViUpuOriqMgAAAAASUVORK5CYII="
  9067. /***/ }),
  9068. /***/ 657:
  9069. /*!***********************************************************************!*\
  9070. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/one.png ***!
  9071. \***********************************************************************/
  9072. /*! no static exports found */
  9073. /***/ (function(module, exports) {
  9074. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAnCAMAAADAWWPLAAABpFBMVEUAAADWFhaaeUb5tkP6uEL5uUD4tkL4t0L6ukf6wEn7tUL6uD/4tUP4tkGekYGZdj+KGBeJLCuEGBj4tkIiGBT4tkP4t0IiFxT4tkL3t0JMFxX4tEH4tUP5tkIjFxX4tULoFxf7uUIbEhL4tUP4tkL4tUP4tkIjGBUhGBX/+J74tkP6zGD4tUEiGBXYGRkAAAD/+6T96sj4szv3sjeKhlY3NiL+9pgZEBD//ar5x1TcOjr80WD++/X++dL/+Jr/95f3sDX4sz7/+Zz60IUbFxT836z+9KT/+Z///Pf++/D++uz/++r979f+9r7+9Lj726L+9Z/72Z3/+Jj6zX/6zHv5wl/4vlj5x1b4ukz5u0TdGRnWERb++ub//OL+9qn//Kj70ouFgVL++fL++PD+9eb+9uD+8+D++dz+9dL97dL+9s/85sD84bD+867f3ZTFwoD6yHL5xWn5yVz8zFT5wVL6wUXynDzhOzvbLy/nYizcLR4YDQz++db/+Lv84rT//rP+9qv+85/S0ZDQzoq5uXv6zWH5wFFycU9eWzr3sDNPTTIsKxuGlcvpAAAAKXRSTlMAWPv7XA3ofkc0JBfhYv778O/t68i4ta+qpJuWkXduaFc+HOLR0G1sbEy7HVwAAAJQSURBVDjLxdFnX9pAAMfxs4CAe2+t2snfK5jEptUGEkSUvTfuvfe2e4833SNAceDj/h5d8r1c7j5HCGl/cV/tJFcLG01MTFy9KnXFntnbFtUHn/d1NTQ11tU/KFZf19jU0NX3bJAU6s9kzrijN8WOuLNMpp+UqjCbx7jRoWKj3JjZXPFf/Nt9fr6RHDpMHn8/Th4OJTfO73iWS4PmQ5rL3vLs5akAUF75pfAUEE4vszf84gQQ6EFwi9sKHlABOLm47p1p8Cnn4rTV/85vnV50pnikO0rcAQjz0mZItJlMJpsY2pTmBaCzyL2Mt92zDAvZZt3vFaA3z1UaKNteMU9Tw1PqDK9TgKZK9VbYHZ4Cz31d2FMniB6HHa05NtpBlyZVHd79bbEsDKvjySUKu5F5N/jwekTlEQtrJO+R9TCPbuY1EJbzn8/9sfx4qbq6wLKAR2x3QMIt5pf/+flDyUV3AqgiBkodM3Jhd6bXJZdnHJQaiJbyQeu4Kd91H7cGeaolteCd97iTRy3Rwh622sq4zRq2Q0sGQGMzchmXp2MUA6Rag5QklnFRSkFTTcgTKL6dMr7jU/CYEKIHja7Id1xeiVLombMfCKuBOx5YFXLLs3pA49Jk0Qv380mKU/SQXLpK8FHX7Lh6/V/2dqfY2T+6YjwqdUTNAPAxyS+aiol+KcoDBlLoKWBP+DyBkByxReRQwONLMH5I/lWrARX2OZd37e2a18XtCxQaxqWMNQBVEHfMO+JQKFBjJDfS6ZvBopSC1azXkdvptG2VyFXZpi3pX61cw+FRBQmyAAAAAElFTkSuQmCC"
  9075. /***/ }),
  9076. /***/ 658:
  9077. /*!***********************************************************************!*\
  9078. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/two.png ***!
  9079. \***********************************************************************/
  9080. /*! no static exports found */
  9081. /***/ (function(module, exports) {
  9082. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAnCAMAAADAWWPLAAABoVBMVEUAAACCn66LjIyew/iexPhXY2qew/eewveewvciFxWeyvqfw/qjwvWfwveal5eJi4tgam+ewveewvedwvc4Njiewfafwfedwvefw/afwviKrbyBn6uoy/idwfSgwfefv/mdv/QbEhKZzP+dwvaewvgiGBQjGBUjFxQiFxSgwPeewPefwvjd7Peewvfh6+3b6/cAAAEjGBWCoK+dwfeYvvbZ6vbr9vybwPcZDQrt9fv09/jf7fmav/fd6Ov7/P7l7/KRrLk0Nzr5+/72+v7k8Pm81fn0+P3x9/3m8PrS3ODr8v3V5fvN4PvA1/rc7PceEQ0GBwfg7/msyvioyfijxve7w8WEo7OAnqs8QEPv9v3l9Pzj7fygxPvh7/rD2vrX5e6nrrFucXQXGRre6vzY5vzn9PvP4fv1+fq20fmwzvja6vefv/awzfLi7fHB1/HK3PCZvOqPsNDDy86yur2UsL2utbiFpLiMqLZiZ2kRExQhFhLz+P3p8vbd7PPc6/K+1fLK09i/xciapaqWnqKKlJd7f4J4fH9SV1k/Q0cuMTQPEBCncEgcAAAALHRSTlMAWPv7XO/o4qdtNBcMYv777+u4tJuRf313aFdVSUY+KCEcD9HQycevr5aWberuDwgAAAKKSURBVDjLzY/3V9pQFICfRUFwb+vW7pZLHrwXUkiMli1LNrj33rvavcdf3Rswgvb0934nJ7k5352EkCf2f/GUaDyy268mJydfVoL/V3b746IfNpvba2qaG5vu6TQ1NtfUtJvNw+SanlzudGNvTGdv4zSX6yFlqhyOcfeoTWfUPe5wVP1f/sJtsy0c7H/YP1iw2dwXf/l8aBcURZIkRYHdUP6Oz58fcgZM4pxL+OWH5/lK33s0C8DZVnRlZiW6xTjA7FFvha8FkDIRT8AVCoVcbzyRjASztbc0n/e4BFGwxq34dnnmscVNQjfqiEcWrDqC7FnFhO6SHjQAX/WKmnC+m3jvlK3WuOCNcDAMFn0rSLGi9mULCZooZH0Yi96YBK2atuwA82q95RNKl3/9pvQsqc3wMtixoH8GSjSs+bVluvTWNfaDLvs0H44q8By9CXgQNdYvFjAQRinNFpcMcjARMgSQ9uB0RJ7W8qYv6aKsbeBJAwyRPonFAuh14seUfrRqPhBjUh+pZsq6q+J0109acJaidYVVkwZQImUvOF/Ty4l4yUcUaMB6KYq+rBPZ5HWnqIT1A8D8AVHXSzRxgteV5vsZDJA6A2RUsazPUJe8mgFDHSEPgYflol77Tuki6hJymMMDQkgXDgiK2uHfKP0yobGglQexfRd6HMCn5nDlT1Tn6xyWT3GtPdIBLKUKgvX4lc7nOWFbTTHoIBojRlD8qlVIOnWSgqz6JTCOkCL9ANyvhkScUUIMqX4O0E+ueQEgpcNenyCK+Gz7vOG0BHCf3NBgwBabM2ogOBUMqDObWGxAXcZiAmAcUrH5WAo4AzBZyC3qO1sAYYwB0tJZT+5SX91mBA1jW3XZ/gE0kM5164XMqwAAAABJRU5ErkJggg=="
  9083. /***/ }),
  9084. /***/ 659:
  9085. /*!*************************************************************************!*\
  9086. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/three.png ***!
  9087. \*************************************************************************/
  9088. /*! no static exports found */
  9089. /***/ (function(module, exports) {
  9090. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAnCAMAAADAWWPLAAAByFBMVEUAAAC/SxeMXUL8woL8wYH8woH9wYH8wYD8woH8woH/yoH/w4H1wnv8wYCaiX6KWDx7NRd9QSt3NRj8wYH7wYEiFxT8wYH7wYFHJBX8voH7wYD9wYEjFxUiGBX9woHNTxe6RRL8x4H/wX//wYT/v4D8v4EbEhL/zIgiGBQjGBX9wIH/5r/8wYHcjFcAAAAiGBX/5b2/TBn/5Lr8wID8v3z8vXkZEQ/Zg0r/68P8wH7//Pny1sT/5bv/7cX9xIPgjlf/+vX/9ur8vHiJfGjHYjr/8uH/8Mj/+O7/88v95Mj/58McFRT/+fL/8+T/8uD/7dT91qr91Kf/7M//7MX94cH93779167LxKX8ypP8yI/8xIeUiXKThW5uZlZHQDXDTRn/+PD/88//6Mf/6MCmn4jspWsNCwn/+/j+7dr+6tT65tT+5sz78cr/6Mnz2MXs4Lvg2LX92LD80KD8zpuzrZD9yYjvrnDwq2yPg2zmnWWBdmPgk1x1bFtlX07dhUrXgEhYUEJRSz/LZDvHYzvEWy/HWyYtKiO8RhS7RBL+7Nj/+9f03s/03c/u58n268jy6MT92bPczKrZyqippYqUjXc3MiklIRwREA1Wm8OPAAAAK3RSTlMAWPtc/Pno4rd+NBcMYv778O/t69GvqqSblpF3bmxoV1VJRj4oIRwPycdtt/r3eAAAAsFJREFUOMu9kWdXGkEUhifB3ns3dk2y1wnuDLqLaAAFRKXYK2CvsffeS3pP/m7uLBAsJ1/znLPnzMxz37t3dgkh2a/+RTYRPMdVR0dH/V1wj6cvNF9dXJSXlpGekvo0TGpKekZaXlFxNQlREgicLx+/DnO8fB4IlJAIT+rqWhsbasM0NLbW1T35v/7inr945C8/nNQe7E1PT+8d1J68v3zkbxd2WHMQtrNw+8DfXG0bABi3Wq2cARi2r27u+tKGLTxkG73zb+d7NxiWbjWU3vG5zYwPO80Om8fjcTvMzmHOmnMiOgfDa7NuSTZJkmSSJffsGrbIDetC1E7zBMoQpgnzIhYUBnVlNFgXO2VJmmwK0iPpTWNOA0RXaj4OeL/Q0rf9Fo1RRZLkzn4OcUInMGDmdgmZokHq7bhpN+N5Avp84H02Wfivu6Ojoy2U7jfhRrb1cchHHwsGh4jj+3sU5eM1PWzTi127wwCxhFQBDJlFXKD/9JP6UAtk8xBAFSljar9FDuk3fup7J7Twln6VlREd4702U0ifUXp9OtCjVZhsvZzpSDJwpzsYUUYo/Y3zTylatdvJIZnoVN7nCuXbDgeU1SM6s6IXeVcfV3WkAtQuR/j9dnzGf9ER0UB2dKlQQRKjYNgoB/WkyLWdUp9deOMwRCUSkgVW21Kw/ab4MON+2iLySzYrZBFC4kH1ahe0++nUuGIfoHRAu55XhXj0idFgsHRjZ+UHpWe7vhnqb8Nm3Rb8gYkEKQA2aGzX43QjMxQ5+oxryTjIoIAIamKAe7WCnpXNke+rdlxNGLs4xNQQjXIA3mX0yGJ6RQwqe4SGchLiJRYMuTq7JVk2ybK+u9M1hPoZ+UtyFDDD+pxxzOKyjBnn1g0MolBHSIgFUK0w6P3iHWRWFSA2gdwjKT4TEKYyQDLjk8hDknRxMSCIidNF7B/WTNeSjcp0DAAAAABJRU5ErkJggg=="
  9091. /***/ }),
  9092. /***/ 660:
  9093. /*!*************************************************************************!*\
  9094. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/onebg.png ***!
  9095. \*************************************************************************/
  9096. /*! no static exports found */
  9097. /***/ (function(module, exports) {
  9098. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfAAAABGCAMAAAAEljYIAAAApVBMVEUAAAD////89cr+9Mb99cb/////////+/f+9Mf+9Mb////////99cb/+OH//8z////////99MH99cf++uT988X////////+9cf///////////////3//vn//////fP//PD99cn//vv+99P+9s7//O3++d7++uP//fX+++j+++r++eH++Nj++Nr+9tD+99X++ub99Mf//ff+9cz++uX++Nz99cv+99fHLBzNAAAAG3RSTlMA8j+tjK1BBvHRimZmEQXTHR34VHl43t7Ll5MtL5SDAAACnklEQVR42u2daVLCQBhERxZRMS7BBcQo7uIa1/sfTWgsCibzzfA3Tb8c4dVL0lOpijPIuu2TjWLOMMpVkPMoH3MeKlxYXBrcBhkv8+jzDsDXjPsqTx53Ab5nvCzx7PE75W2R6yCvS9yE+JzzA0YG5QL5abPhTLIzyK6t8PH0kvDSo5kZvnsT3bUWrsJB6bPdcSF2iqLmwlU4KCu0XIBBUXvhKtwQnmeuwnFRf+EqHJRVes6nMSQQrsIt4UfOp18QCFfhKwvfLBiEq3BL+K7zaFMIV+GWcP/wpbNBIVyFG8K39ip3dArhKtwQ3qycuXAIV+FghUf4PodwFW4IP/R8HxQcwlW4cZbuPLokwlU4SB+lt0mEq3CwwigjEa7CwQqjjES4CgfpUcYiXIWD9ChjEa7CQXqUsQhX4SA5ymiEq3CQHGU0wlU4SI4yGuEqHCRHGY1wFQ5So4xHuAoHqVHGI1yFg9Qo4xGuwkFilBEJV+EgMcqIhKtwkBhlRMJVOEiMMiLhKhzERxmTcBUO4qOMSbgKB/FRxiRchYPoKKMSrsJBdJRRCVfhIDrKqISrcBAdZVTCVTiIjTIu4SocxEYZl3AVDmKjjEu4CgeRUUYmXIWDyCgjE67CQWSUkQlX4SAyysiEq3BgjzI24Soc2KOMTbgKB/YoYxOuwoE5yuiEq3BgjjI64SocmKOMTrgKB+YooxOuwoE1yviEq3BgjTI+4SocWKOMT7gKB8YoIxSuwoExygiFq3BgjDJC4SocGKOMULgKB8FR1mUUrsKBf0cHx4zCVTjAO/paCFfh/8LzhvPpMQpX4QD/pfPJ9JZOK3zUcgF2CIWrcAQO3xU6fT7hKnzCVs+Fyfg+gFDho7yVOZPNwcmQSviaF56fNnct3X/kFP1t/2vziAAAAABJRU5ErkJggg=="
  9099. /***/ }),
  9100. /***/ 661:
  9101. /*!*************************************************************************!*\
  9102. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/twobg.png ***!
  9103. \*************************************************************************/
  9104. /*! no static exports found */
  9105. /***/ (function(module, exports) {
  9106. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfAAAABGCAMAAAAEljYIAAAAllBMVEUAAADf6O/f6O/f6O7f6O/////i6fD////7+/v////////////////e5u7x8fjM///////c5e3r8PX////p7/Pp7vT////////////9/v7////19/rn7fPl7PLr8PXp7/Tj6/H7/P3x9fj4+vzh6fDg6O/2+fv8/f3y9vnv8/f6+/3t8fbw9Pf09vnu8/b4+fvf5+7j6vCreNb9AAAAGXRSTlMA89OtjIpkQQbx1q5mQhEFHR14+FM1y52zZmPV+wAAAkZJREFUeNrtndlO40AUBdt2EkIgnpksMGn2fQfz/z+HQAiCz22JVw51/Amlcqv6pVNh7fbWZJ6/bvXdXfV2Eu92fWfRnj52Kdsr7uFz172dhrtf282XPX7ubn2HhR0Vtl/aQWnHhT2/71x3oes+VtXNNBXXDudZt3r7AP4jgb+uaVO80WZ+G4Z7Ae/qcch7+EoXww2Bd4OI927OGcM9gVet8p7ljOGuwLuF8F6uMob7Ap8J8J2M4b8J+EbOGG4MfNQHvpUx3Bn4ssd7vInhzsCrP/JHx3Bn4I3euWC4M3A5wicYbg38X4/334zhzsDr1Nt2xnBn4AOJMgy3Bj6VKMNwZ+BBlGG4M/AgyjDcGbhGGYZbA9cow3Bn4EGUYbgzcI0yDLcGrlGG4c7AgyjDcGfgQZRhuDNwjTIMtwauUYbhzsCDKMNwZ+AaZRhuDVyjDMOdgQdRhuHOwIMow3Bn4BplGG4NXKMMw52BB1GG4c7ANcow3Bq4RhmGOwMPogzDnYEHUYbhzsA1yjDcGrhGGYY7Aw+iDMOdgWuUYbg1cI0yDHcGHkQZhjsDD6IMw52Ba5RhuDVwjTIMdwYeRBmGOwPXKMNwa+AaZRjuDDyIMgx3Bh5EGYY7A9cow3Br4BplGO4MPIgyDHcGrlGG4dbANcow3Bl4EGUY7gy80SMcw52BT6XCMdwZeK0PEWK4M/ClAF9guDHwWZK1cwy3BT5IwYYY7go85J3GOxhuCbxapHjtfwz3A14N2lTcxu5kjuE+wLu6GZVwvwDnhXl46t0T0wAAAABJRU5ErkJggg=="
  9107. /***/ }),
  9108. /***/ 662:
  9109. /*!***************************************************************************!*\
  9110. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/threebg.png ***!
  9111. \***************************************************************************/
  9112. /*! no static exports found */
  9113. /***/ (function(module, exports) {
  9114. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfAAAABGCAMAAAAEljYIAAAAk1BMVEUAAAD///n79vH////58OP58OP58eb68OP////58OP////////58eP////////////58OT9+vX49Oz////9+/b58eL////9+/b79ez////58eT9+PH+/fv//v368eT+/Pj9+vb79ev79On68ub89/D9+fT8+PH79u39+/f68+f////58OP+/Pr89u////7+/vz8+fOpdnllAAAAHHRSTlMABR2tjK5A8dHRimZmQfH4+BMN8pl5eFVK3t4zjQyP5QAAAhtJREFUeNrt3UtS20AYRWGBbcAxINkxsYG832knDvtfHcWAAnRbgvHh3C18A9X5S1XdDGy5mFy2+4d9eMn+3+/9i/b3yT6N73dln8f2Y3g3d/s5sO8j+/d4v6r7MravY/vT37exfXxmu966q/VRM7jlui1lvxecA3632WrAe3NeiuA88N28Lv6mFMGR4LtpzXtdBKeCd6v0flcEx4LvtuF93QoOBr8I8JMi+GsC3xbByeCnffCJ4Gjw/vHl4K3gZPDjgx74WRGcDD6Lm4vgaPD4hJ8IjgY/7HkfFsHJ4POmt4XgaPBpRJngaPCMMsHJ4JUoE5wMnlEmOBo8o0xwNHhGmeBk8IwywdHgGWWCo8EzygQng1eiTHAyeEaZ4GjwjDLB0eAZZYKTwTPKBEeDZ5QJjgaPKDsXnAxeiTLByeAZZYKjwTPKBEeDZ5QJTgbPKBMcDZ5RJjgaPKNMcDJ4JcoEJ4NnlAmOBs8oExwNnlEmOBk8o0xwNHhGmeBo8IwywcnglSgTnAyeUSY4GjyjTHA0eEaZ4GTwjDLB0eAZZYKjwTPKBCeDV6JMcDJ4RpngaPCMMsHR4BllgpPBM8oER4NnlAmOBs8oE5wMHlF2VAQng0eULQRHg2/jXTrByeDzRvDXBN5dB/hGcDD4RRNbtYJjwafVx6MFp4JXvZuVt3Qm+PGmqW/pDxBA8G66bAZ3NrlsBeeAd1ez0yHuW9K9NGlw3UfkAAAAAElFTkSuQmCC"
  9115. /***/ }),
  9116. /***/ 663:
  9117. /*!************************************************************************!*\
  9118. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/secm.png ***!
  9119. \************************************************************************/
  9120. /*! no static exports found */
  9121. /***/ (function(module, exports) {
  9122. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAbCAMAAABY1h8eAAAAb1BMVEUAAABGdOtHdOpEc+pHdestfdhHdepHdOpHdepGdetHdelFdetFc+tGdepHdepGdepGc+pGcuVAc+pHdetHdOpGdetGdetGdehGdOpHdepGdepGdOtEc+lJbedHdepHdutFdOlFcutGdOhHceNHdepo/Jr8AAAAJHRSTlMAf/Q84wa3k9GjdkId4IusZw4M8ca8mCTOoHJMNBXlc1xOLBIOewftAAAAqklEQVQoz5XP2Q7CIBCF4VOsrVpK7WZ3177/M0ocEcigid/tnxwG3KOAI0ixhkiKWagleEt5q6WJVc4iPRkebuE4+U3QqD/MR/lwA4sNiwd8pTMcVyB8uJGm8WHRoRwPZFw+w/ErXoBoNQo7bC6dakFq50+tjhm0rQEr0XEDD4+LSomSPCp7EI9ZHpP8yqLrzyiHPRk6G9tfB93OFOd+R/oJVql0/G7u4HkCOK4nvl2japsAAAAASUVORK5CYII="
  9123. /***/ }),
  9124. /***/ 664:
  9125. /*!************************************************************************!*\
  9126. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/line.png ***!
  9127. \************************************************************************/
  9128. /*! no static exports found */
  9129. /***/ (function(module, exports) {
  9130. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAAICAMAAADDcZ3dAAAAM1BMVEUAAADm5ubm5ubk5OTMzMzl5eXl5eXl5eXl5eXl5eXl5eXp6enj4+Pl5eXm5ubl5eXl5eXN0wjDAAAAEHRSTlMAKcj6BbIc7tefSCMSwTw7uVnzSgAAAFxJREFUOMvN1DkOwDAIBEAMxvfB/1+bKGmoEQVTUqEFLXjJg2vlkSGYiyRCeMFJspoZlNVJXtSXznAmK9hoxAWU0uTTih4yGm2fvPReTnn50HeM5fx/fyAY5554AIiFBP8jQkGWAAAAAElFTkSuQmCC"
  9131. /***/ }),
  9132. /***/ 681:
  9133. /*!*************************************************************************!*\
  9134. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/enter.png ***!
  9135. \*************************************************************************/
  9136. /*! no static exports found */
  9137. /***/ (function(module, exports) {
  9138. module.exports = "data:image/png;base64,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"
  9139. /***/ }),
  9140. /***/ 682:
  9141. /*!***************************************************************************!*\
  9142. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/fzicona.png ***!
  9143. \***************************************************************************/
  9144. /*! no static exports found */
  9145. /***/ (function(module, exports) {
  9146. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAZCAMAAADkFeWYAAAAilBMVEUAAAD+TA7+TA3+TA3+TA3/SAr+Sw3+TA3/Sgr+Sw7+Sw3/Qwn+TA7+TA3+TA7/SAj/PgD/SQ3+Sw3+Sw3+TA3+Sw7/TA39Sgz+Swz/Sw3+Sgv/Rgn+Sw3+Sw3+TA3+Sw3+Sw3+Sw3/SQz+Sw79Sw39Sw3+Sg3/SQz/SA3+TA3/TA//TA39TAz+TA4RQoK0AAAALXRSTlMA8Or87Bj35RP0xQ3gwLseBzjkkIpvWlhVTEMa59nQsn91Priell4qJ8qem2jjVwU/AAAA60lEQVQY02WRV3LDMAwFITaxq3erxi2F979eHFNybHm/MDt4QwKAjegnieEFdc1D2fDVKqVo1E6DcDj9qi4dVwqmPBuHMHB/MKTNMZsACYbdE0wQQG6PgHCtMEmZr4KHC+ZF7h1q+Mebq6l9y5675ywOECG67CQhKMDeobmuyjqK27KqC3RzB+d0QmlHY+CU0kR7x6S1Zmx5bq2V7Oa085Bz9Lm9IfHqKmq22U5i/+cUln7tKxLpozmomfgdIL8DbK4A9NunPXhY7tfJ0EMx08IdXvTMNx1OF1iJk0wLh9FYcviHN8feFJG/5S8Khy8D8+MbXwAAAABJRU5ErkJggg=="
  9147. /***/ }),
  9148. /***/ 683:
  9149. /*!***************************************************************************!*\
  9150. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/fziconb.png ***!
  9151. \***************************************************************************/
  9152. /*! no static exports found */
  9153. /***/ (function(module, exports) {
  9154. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAZCAMAAADkFeWYAAAAdVBMVEUAAABGdOtGdepFdOpHdepHdepEePBHdepGdOpEcudEceZGdutEb+ZGdOpHdOpHdepHdOpHdOtFdepGdOpGc+pGc+pGdetFc+hFduhGdOlGdOpEc+dGb+dGdepHdepHdOpHdelGdepHdepGdelHdepGdOhHdeqAH/wRAAAAJnRSTlMAf+6g9M4J4IU1KBkP17SriG9mYl9UUU1DOi8lH/bnw7uukHRrId8lSB4AAACaSURBVBjTrY5HFgIhEERLYHLO0azc/4jykCG59W+A/+iugiYM4ZOXZe6asIs4jzr1dU+WqbkTLiHVc1oSnPgPf3TXtfIce4mn64oUsTd7y9HofWQcRGcKjCajyLAHD2BjVm60AYLA6XJJALMZrTzOA96m86ouLdVObzEEwOy7GUDsqhgQ1Laq8aUnhyE9DjIVSjNYpJQxmkLyAWbWLjfdOpy8AAAAAElFTkSuQmCC"
  9155. /***/ }),
  9156. /***/ 684:
  9157. /*!***************************************************************************!*\
  9158. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/fziconc.png ***!
  9159. \***************************************************************************/
  9160. /*! no static exports found */
  9161. /***/ (function(module, exports) {
  9162. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAASFBMVEUAAACqqqqpqamqqqqqqqqqqqqqqqqurq6qqqqqqqqqqqqqqqqqqqqpqamrq6uqqqqrq6upqampqamqqqqpqamqqqqqqqqqqqojF4HZAAAAF3RSTlMA8hn4j+kiHaHtE5yJp5N+eSYttIO+uQAgW8MAAAC1SURBVCjPZdBREoMgDATQBFGgCBa15f43bYqMC5jPTeaFQGaziYYyXic6Z7eqPn+9ZxcpcJbOkOfpQ0lz5qiafJXc7kTq31lVN2+Xa9WlIQ9LfcSlwak5NDiloHUOtFmfzTw0l1nAO0cnTlnmzR3gLpaGV498E3+SPWqAJOfgZY8242p5T7nUm9Ypeb1UKzjlrnopNHFwFzQ4paAtcIigJQqM+Ub7UnTPf4vMgVI8dhoqHXb/AWl5CnBHZiZnAAAAAElFTkSuQmCC"
  9163. /***/ }),
  9164. /***/ 685:
  9165. /*!***************************************************************************!*\
  9166. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/fzicond.png ***!
  9167. \***************************************************************************/
  9168. /*! no static exports found */
  9169. /***/ (function(module, exports) {
  9170. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAV1BMVEUAAAD/IzL+Kjn/Kjr+Kjr+Kzn+Kzr+Kjn+Kzr/KDX/Kjn+Kjn+KDn/KDf+Kzn+Kjn/Kjn/Kjr/KTn+Kjn/Kjr+Kzr+Kjr+Kzn8KDj/Kzr/KDn/KTP+Kjp3JfQrAAAAHHRSTlMAClmm8vXvgGAcnXg/Mvmyq5FPTEHYvo9SNS0Z0DZZVwAAAMdJREFUKM+F0VmOhDAMBNCyswPD1nt33f+cMyA0hCaI9xNLlqy4jI37Hce8xzFrcSwEfBttxJdox6VqSJ1eaWJsZKqUbLB4tj2QKss/tkpA3z7xLwnU0pu6Np5WIQk5JYPMswOp2EiOFywudAm5iiFbiNVSvVU/EOdlbYp3go/qG47scKVBxvCKjnTQYXghskamZsRrGBSTUnNVGLvaf+hklfMQzuPDNvid7GQ767GLRjMbUdJx1qFEfmaCssft9sCRvm17ZH4BOPULz3LXQwAAAAAASUVORK5CYII="
  9171. /***/ }),
  9172. /***/ 694:
  9173. /*!**********************************************************************!*\
  9174. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/bg.png ***!
  9175. \**********************************************************************/
  9176. /*! no static exports found */
  9177. /***/ (function(module, exports) {
  9178. module.exports = "data:image/png;base64,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"
  9179. /***/ }),
  9180. /***/ 703:
  9181. /*!*************************************************************************!*\
  9182. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/mooda.png ***!
  9183. \*************************************************************************/
  9184. /*! no static exports found */
  9185. /***/ (function(module, exports) {
  9186. module.exports = "data:image/png;base64,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"
  9187. /***/ }),
  9188. /***/ 704:
  9189. /*!**************************************************************************!*\
  9190. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/moodan.png ***!
  9191. \**************************************************************************/
  9192. /*! no static exports found */
  9193. /***/ (function(module, exports) {
  9194. module.exports = "data:image/png;base64,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"
  9195. /***/ }),
  9196. /***/ 705:
  9197. /*!*************************************************************************!*\
  9198. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/moodb.png ***!
  9199. \*************************************************************************/
  9200. /*! no static exports found */
  9201. /***/ (function(module, exports) {
  9202. module.exports = "data:image/png;base64,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"
  9203. /***/ }),
  9204. /***/ 706:
  9205. /*!**************************************************************************!*\
  9206. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/moodbn.png ***!
  9207. \**************************************************************************/
  9208. /*! no static exports found */
  9209. /***/ (function(module, exports) {
  9210. module.exports = "data:image/png;base64,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"
  9211. /***/ }),
  9212. /***/ 707:
  9213. /*!*************************************************************************!*\
  9214. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/moodc.png ***!
  9215. \*************************************************************************/
  9216. /*! no static exports found */
  9217. /***/ (function(module, exports) {
  9218. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAABWCAMAAAADkLOHAAAC5VBMVEUAAAD4tiP4tyT/1jX////5wSX6yy/3tSP////4uST4uST+0TD+yyf7yij/1jT4tyP5uiX/1jT5vCT5vyf////9yS/+zzD6zSv/////1yz////4tiP/1jT/1jT///35uiX5uSX5viX/1jD////////6wyX6yCn////4xSz///7/1jT4uST/1jT4uCT/1jT4uSX/////////1zT4uiX/1jT4uSX/1jT/////1jT////4uST5vSf7vyf/////1TT/1jj////9wyj/1TP7wSf///v/////1jX4tCX9zzD////3tiX////4uCX/1jT/////////////1TP5uyX4vCb4uiX4vCX6wSn5uyX/////1jL/1jT/1TX9zC76vyj/2TL71Cf4tiL/3Vj7yS37wyr/////////1zX/4Gn/2UT/////1jT4vCf/1TH/1jX98dL/1jT7wSr4xkn/////1zP/////////1jX////3tSP/1TP3tCL/1TGUNDb//PD/1jf/+eL/71f2tCL/+uj/+uX/6JD/1S+RLzb/2TX+1jT+0TKSMTb3tB/8yy73tyT/2zX+2DX6wyr4uyX/2DX7yCyTMzb40TX9zzD//fr/4EOTMjaNKjaqVjX3sxz//v761obzyDXksDX6wSj2sRj/50v/40b/2Tn/3TX71TX/1Cz/4Gj/8Fj5xVP/2D3/3DydQTaWNzbAdzWyYTWkTDX3uS74uST/++3/+N7/99X+8c//9Mr/5Hv/4m7/3lv/7FOZOzbqvjXntzW+czWoUzWfRTX8xSr6wCb+9+f+9N/98db86Lv/7az74KP/6qL/43b6zm7/6lD/2UX4vTuPLDb/3zXuxDXvwTXhqzXcpjXUmTXKiDW7bzWmTzWjSjX++/T/99v/8r7/6pb62I3/5of/5oT/8Fn/3FL4wET/4EHaoTXOkDX//PP868T857j74qj73Jj61ID5y2T4yV6IIjb0zDXRkjXIgzW3aTVnBgwbAAAAdnRSTlMA9/P76iMG/PvbujQaCPfmoXBwTDApJhMODgf449TPzJeRhYB1VRcRC/f04NrWxsXDubm0s62rpn55d2BdVlBJRjswLycY8vLv7uzcw8CfmY+OioeCfGZmZWJgW0VCKx39+vj24+DLxcKs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"
  9219. /***/ }),
  9220. /***/ 708:
  9221. /*!**************************************************************************!*\
  9222. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/moodcn.png ***!
  9223. \**************************************************************************/
  9224. /*! no static exports found */
  9225. /***/ (function(module, exports) {
  9226. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAABWCAMAAAADkLOHAAACxFBMVEUAAADR0dHx8fHd3d3t7e3x8fHS0tL39/f4+PjR0dH9/f3R0dHZ2dn////Q0ND////R0dHx8fHR0dH08/PR0dH29vbT09P7+/vQ0NDm5ub+/v3R0dHR0dHS0tLR0dHx8fHS0tLR0dHR0dH////x8fHR0dH4+Pj29vb5+fnS0tLR0dHx8fHx8fHx8fH////////////x8fHR0dHx8fHQ0ND////Q0NDR0dHR0dHR0dHQ0ND////////////////z8/Hx8fH////////Q0NDR0dH////x8fH////x8fHx8fH////w8PDy8vLQ0dH////////y8vL////S0tL5+fn////Q0ND39/fPz8/y8vLz8/P09PTy8vHq6un08+zy8evy8vLX19fQ0NDw8PDx8fH////k5OTS0tLS0tLQ0NDR0dHx8fHp6en////p5uDS0tLR0dHy8vLT09PR0dP////x8fHT08/////x8fH////R0dHw7+7Q0NDx7+vw8fKenp79/f38+vD9/Prx8PD9/Pby8vP29Ozt7e3s7OucnJ3Pz8/c3Nudnp7o6Oj//vzV1dSbmprx8O729fTS0tLv7u7z8enl5eTk5OL7+O/08uf09fbz9PT08/Hv7+/y8Ozr6urf397Z2djT09OwrayZlpb+/fj18+vt6ufo5+bo4t/d3d3i3trQ0M3Hv7qcmZj7+fTw7ur49Oja2tnW1tXV0860tLG2rKero52gmpn8+vf8+/bz9PX08uv18+ni4uHZ2dnf3NPRyMLEubT29/b49vP29O/49uzw7efu6+Xn5OPq5t3m4trl4djg2dPb2NHW1M/a1M3S0My5r6uon5uknpufnJuim5n9+/Lt6eLq5uHk3tjf3NfQ0NLb1M/WzMXIvLS+ta+zrqispqOypqGYmJmWk5Pb29rZ1tDMy8jLwLuxqaWuqqSsoqHdgb0QAAAAd3RSTlMA+fgNBeonEQ7KMS8K+/Hr6byVZ1wbGRQJB/7k3dXEoaGafnhvYltAJiP79fHZz7mmlI6BenV0aVES9/bv6OLg3dzCuqifnpmZkI+MhYOBgHZlWFVHPjg3Lyoh+Pjv6OXd2s/KxsXAurSysLCspJiWiXNvaktFREd7qSAAAAaISURBVGjezZhlX9tA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"
  9227. /***/ }),
  9228. /***/ 717:
  9229. /*!*************************************************************************!*\
  9230. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/adddj.png ***!
  9231. \*************************************************************************/
  9232. /*! no static exports found */
  9233. /***/ (function(module, exports) {
  9234. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAABiCAMAAACce/Y8AAAASFBMVEX////m5uaqqqrl5eXr6+vq6uqrq6u2trbHx8fW1tbd3d3j4+Pg4ODQ0NC5ubmysrKvr6/8/PzT09PAwMC9vb3ExMTy8vLMzMwf+wTOAAABwElEQVRo3u2a7Y6CMBBFmV5boKUF+dD3f9NVK2qbTQwtdTeze0xI/KEn9l4GSqxEJS5U5Y7XV1nYKHjAIwseCh7wyIKHggc8suCh4AGPLH5McTwdNnM6bkniiCQCxxsOoARw2NAoSmRDFqAkwFlRlVR43ivgD8mKtwsF2dllOeuCWZhZ3HCaUEahB3FHjVRCAeMNHl2iUXIWL/SE3RuFTgSMBRplQ8Uk6UbXRhgkZ7GECucVRomInnZWdCJmSFecRcDsFdQ2ETq5UdChwpaYUXWwHECBGaXVN50FIYKQMUDs09HIVVGriInSFSDd31dpJJBHixiVqvAOGifnZgsCrVlMdcQ5vVHGGQLJC1fXtKxaGUFIbtQkVGOkT9j2QnXYuVF+0ZXriKi5xe4Iu14vIJ0/p19OwjYsba6CRnFhXZ3leckwvbrTmywFyNe18Z/G4N+FpW3zrnr2PkTxMhIHG5R2RtaMAun6Mfr8j1INXYWQD5A9o8ahpgft3BH2vgMBoQu+4tfeNv+VO/NcxWeyKL+dLLop9orCW/tQkP+AYhP/z6N4KnjAIwseCh7wyIKHggc8suCh4MEnshBV4T9hfQGpgRlTQ4rqdgAAAABJRU5ErkJggg=="
  9235. /***/ }),
  9236. /***/ 742:
  9237. /*!*****************************************************************************!*\
  9238. !*** D:/work/work/boman/school/qs_cfschool/mine/components/zb-table/all.js ***!
  9239. \*****************************************************************************/
  9240. /*! no static exports found */
  9241. /***/ (function(module, exports, __webpack_require__) {
  9242. "use strict";
  9243. Object.defineProperty(exports, "__esModule", {
  9244. value: true
  9245. });
  9246. exports.column4 = exports.column3 = exports.column2 = exports.column1 = void 0;
  9247. var column1 = [{
  9248. type: 'index',
  9249. fixed: true,
  9250. width: 100
  9251. }, {
  9252. name: 'name',
  9253. label: '姓名',
  9254. fixed: true,
  9255. width: 160,
  9256. emptyString: '--'
  9257. }, {
  9258. name: 'yw',
  9259. label: '语文',
  9260. sorter: true
  9261. },
  9262. // { name: 'sex', label: '性别',filters:{0:'男',1:'女'}},
  9263. {
  9264. name: 'sx',
  9265. label: '数学',
  9266. sorter: true
  9267. }, {
  9268. name: 'yy',
  9269. label: '英语',
  9270. sorter: true
  9271. }, {
  9272. name: 'operation',
  9273. type: 'operation',
  9274. label: '操作',
  9275. renders: [{
  9276. name: '编辑',
  9277. func: 'edit' // func 代表子元素点击的事件 父元素接收的事件 父元素 @edit
  9278. }, {
  9279. name: '删除',
  9280. type: 'warn',
  9281. func: "dele"
  9282. }]
  9283. }];
  9284. // 历史
  9285. exports.column1 = column1;
  9286. var column2 = [{
  9287. name: 'updateTime',
  9288. label: '更新日期',
  9289. fixed: true,
  9290. width: 180
  9291. }, {
  9292. name: 'height',
  9293. label: '身高(cm)'
  9294. }, {
  9295. name: 'weight',
  9296. label: '体重(kg)'
  9297. }
  9298. // { name: 'degreeMyopia', label: '视力'},
  9299. ];
  9300. exports.column2 = column2;
  9301. var column3 = [{
  9302. type: 'selection',
  9303. fixed: true,
  9304. width: 100
  9305. }, {
  9306. name: 'name',
  9307. label: '姓名',
  9308. fixed: true,
  9309. width: 160,
  9310. emptyString: '--'
  9311. }, {
  9312. name: 'age',
  9313. label: '年纪'
  9314. }, {
  9315. name: 'sex',
  9316. label: '性别',
  9317. filters: {
  9318. 0: '男',
  9319. 1: '女'
  9320. }
  9321. }, {
  9322. name: 'address',
  9323. label: '地址'
  9324. }, {
  9325. name: 'date',
  9326. label: '日期'
  9327. }, {
  9328. name: 'province',
  9329. label: '省份'
  9330. }, {
  9331. name: 'city',
  9332. label: '城市'
  9333. }, {
  9334. name: 'zip',
  9335. label: '邮编'
  9336. }];
  9337. // 添加的时候
  9338. exports.column3 = column3;
  9339. var column4 = [
  9340. // { type:'selection', fixed:true,width:50 },
  9341. {
  9342. type: 'index',
  9343. fixed: true,
  9344. width: 60,
  9345. align: 'center'
  9346. }, {
  9347. name: 'scoreDataName',
  9348. label: '姓名',
  9349. fixed: true,
  9350. width: 140,
  9351. emptyString: '--',
  9352. align: 'center'
  9353. }, {
  9354. name: 'yuwen',
  9355. label: '语文',
  9356. sorter: true,
  9357. align: 'center',
  9358. width: 112
  9359. }, {
  9360. name: 'shuxue',
  9361. label: '数学',
  9362. sorter: true,
  9363. align: 'center',
  9364. width: 112
  9365. }, {
  9366. name: 'yingyu',
  9367. label: '英语',
  9368. sorter: true,
  9369. align: 'center',
  9370. width: 112
  9371. }, {
  9372. name: 'wuli',
  9373. label: '物理',
  9374. sorter: true,
  9375. align: 'center',
  9376. width: 112
  9377. }, {
  9378. name: 'huaxue',
  9379. label: '化学',
  9380. sorter: true,
  9381. align: 'center',
  9382. width: 112
  9383. }, {
  9384. name: 'shengwu',
  9385. label: '生物',
  9386. sorter: true,
  9387. align: 'center',
  9388. width: 112
  9389. }, {
  9390. name: 'lishi',
  9391. label: '历史',
  9392. sorter: true,
  9393. align: 'center',
  9394. width: 112
  9395. }, {
  9396. name: 'dili',
  9397. label: '地理',
  9398. sorter: true,
  9399. align: 'center',
  9400. width: 112
  9401. }, {
  9402. name: 'zhengzhi',
  9403. label: '政治',
  9404. sorter: true,
  9405. align: 'center',
  9406. width: 112
  9407. }, {
  9408. name: 'tiyu',
  9409. label: '体育',
  9410. sorter: true,
  9411. align: 'center',
  9412. width: 112
  9413. }, {
  9414. name: 'kexue',
  9415. label: '科学',
  9416. sorter: true,
  9417. align: 'center',
  9418. width: 112
  9419. }, {
  9420. name: 'meishu',
  9421. label: '美术',
  9422. sorter: true,
  9423. align: 'center',
  9424. width: 112
  9425. }, {
  9426. name: 'yinyue',
  9427. label: '音乐',
  9428. sorter: true,
  9429. align: 'center',
  9430. width: 112
  9431. }, {
  9432. name: 'yishu',
  9433. label: '艺术',
  9434. sorter: true,
  9435. align: 'center',
  9436. width: 112
  9437. }, {
  9438. name: 'wenzong',
  9439. label: '文综',
  9440. sorter: true,
  9441. align: 'center',
  9442. width: 112
  9443. }, {
  9444. name: 'lizong',
  9445. label: '理综',
  9446. sorter: true,
  9447. align: 'center',
  9448. width: 112
  9449. }, {
  9450. name: 'zongfen',
  9451. label: '总分',
  9452. sorter: true,
  9453. align: 'center',
  9454. width: 112
  9455. }, {
  9456. name: 'scoreSort',
  9457. label: '排名',
  9458. sorter: true,
  9459. align: 'center',
  9460. width: 112
  9461. }];
  9462. exports.column4 = column4;
  9463. /***/ }),
  9464. /***/ 751:
  9465. /*!*************************************************************************!*\
  9466. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/serch.png ***!
  9467. \*************************************************************************/
  9468. /*! no static exports found */
  9469. /***/ (function(module, exports) {
  9470. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAnCAMAAACylgF9AAAAjVBMVEUAAAA0NDQgICAzMzM0NDQzMzMxMTEzMzMzMzM0NDQxMTEzMzM0NDQzMzMyMjIzMzMyMjIxMTExMTEvLy8uLi4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0NDQyMjIzMzM0NDQ0NDQzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyMjIzMzM0NDQ0NDQVWlV2AAAALnRSTlMA+wTr2vUaLvDgDea3dmdROSYgEgijmI1v0cerhoRWSsvDvK+Rgn9jYFtAM0ZOerpDzwAAAWVJREFUOMuVktl2wiAURSFARjWTMY5Va61Tu///81qjdYghWT0Pgcva4dwDiP8p320iAFSvnzUSbmkAP5hoBchZ+ooMfJj0Ped36qSDNciF80wMZ7A+Pix4G1i5T8gUM6htHCv0I9RDnV7cM40Ob9UWc2pKEbC5eUsOjVFPkrfr9J3CcmJ9gku4BJMLizSXKCNKYdOA6XlwFIn9eiRuZaUcYdW66npPT9hVMq96H7Uwe2a/308WLcwb7xUzb2c6vXaV16G154/KxcMf2pkV8XmI+LIiLjK/bFdYmf61kRSZWZBhRHyZFdauSyZ/poZxI3KE4/0FyGUDkvp83KsR5hXyIqbOvXQK2NZOaWwIwqeVBejDw19fU6B+28sAolGchiLMlnMNgYZ6lnCsAaQyANE2dANgX+8yKVdKgj8p4uE5lwK+X/M6oZs7t2Q+mES0K5Hgex1QDKisA9oBn6JDY3QmuuTl4gc6pSOV5GyoYQAAAABJRU5ErkJggg=="
  9471. /***/ }),
  9472. /***/ 752:
  9473. /*!**************************************************************************!*\
  9474. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/adress.png ***!
  9475. \**************************************************************************/
  9476. /*! no static exports found */
  9477. /***/ (function(module, exports) {
  9478. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAaCAMAAACaYWzBAAAAVFBMVEUAAABHdepHdOpGdepGdepHdepGdepGd+9GdOpGc+pHdOlGdetGdOpGdOpGdepDc+dAYN85VeRHdepGdepHdOpHdepHdutHdOlEc+lHdeZIeO9Hdeps1OsvAAAAG3RSTlMA8+fMu6yYD/qKdG9mVTwVCATr6NvYjX1HMiAqV6yTAAAAsklEQVQoz23RWRKEIAwE0HZB1HHfte9/z2GwEkf0fVFU6FQITrZMcjp5Ulr8qQaqoYLoDG9MB69PGUh7/GR8yOBsfLEBSPgiARq+aq4Ocd22daxdNCk64ByRZklNAa+Q95CSGl4tARh5+sD78DRCxp57OP0sw2sJjQWsoQbYiBKbptfZAitfrAC6iQ9TB2fPGch3eBUDusOCNwVUFm5JLVQLbkq5LxFoYv+pDR5aQ5oW4gtuKypZStzUxgAAAABJRU5ErkJggg=="
  9479. /***/ }),
  9480. /***/ 753:
  9481. /*!***********************************************************************!*\
  9482. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/map.png ***!
  9483. \***********************************************************************/
  9484. /*! no static exports found */
  9485. /***/ (function(module, exports) {
  9486. module.exports = "data:image/png;base64,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"
  9487. /***/ }),
  9488. /***/ 762:
  9489. /*!****************************************************************!*\
  9490. !*** D:/work/work/boman/school/qs_cfschool/plugins/amap-wx.js ***!
  9491. \****************************************************************/
  9492. /*! no static exports found */
  9493. /***/ (function(module, exports, __webpack_require__) {
  9494. /* WEBPACK VAR INJECTION */(function(wx) {function AMapWX(a) {
  9495. this.key = a.key, this.requestConfig = {
  9496. key: a.key,
  9497. s: "rsx",
  9498. platform: "WXJS",
  9499. appname: a.key,
  9500. sdkversion: "1.2.0",
  9501. logversion: "2.0"
  9502. };
  9503. }
  9504. AMapWX.prototype.getWxLocation = function (a, b) {
  9505. wx.getLocation({
  9506. type: "gcj02",
  9507. success: function success(a) {
  9508. var c = a.longitude + "," + a.latitude;
  9509. wx.setStorage({
  9510. key: "userLocation",
  9511. data: c
  9512. }), b(c);
  9513. },
  9514. fail: function fail(c) {
  9515. wx.getStorage({
  9516. key: "userLocation",
  9517. success: function success(a) {
  9518. a.data && b(a.data);
  9519. }
  9520. }), a.fail({
  9521. errCode: "0",
  9522. errMsg: c.errMsg || ""
  9523. });
  9524. }
  9525. });
  9526. }, AMapWX.prototype.getRegeo = function (a) {
  9527. function c(c) {
  9528. var d = b.requestConfig;
  9529. wx.request({
  9530. url: "https://restapi.amap.com/v3/geocode/regeo",
  9531. data: {
  9532. key: b.key,
  9533. location: c,
  9534. extensions: "all",
  9535. s: d.s,
  9536. platform: d.platform,
  9537. appname: b.key,
  9538. sdkversion: d.sdkversion,
  9539. logversion: d.logversion
  9540. },
  9541. method: "GET",
  9542. header: {
  9543. "content-type": "application/json"
  9544. },
  9545. success: function success(b) {
  9546. var d, e, f, g, h, i, j, k, l;
  9547. b.data.status && "1" == b.data.status ? (d = b.data.regeocode, e = d.addressComponent, f = [], g = "", d && d.roads[0] && d.roads[0].name && (g = d.roads[0].name + "附近"), h = c.split(",")[0], i = c.split(",")[1], d.pois && d.pois[0] && (g = d.pois[0].name + "附近", j = d.pois[0].location, j && (h = parseFloat(j.split(",")[0]), i = parseFloat(j.split(",")[1]))), e.provice && f.push(e.provice), e.city && f.push(e.city), e.district && f.push(e.district), e.streetNumber && e.streetNumber.street && e.streetNumber.number ? (f.push(e.streetNumber.street), f.push(e.streetNumber.number)) : (k = "", d && d.roads[0] && d.roads[0].name && (k = d.roads[0].name), f.push(k)), f = f.join(""), l = [{
  9548. iconPath: a.iconPath,
  9549. width: a.iconWidth,
  9550. height: a.iconHeight,
  9551. name: f,
  9552. desc: g,
  9553. longitude: h,
  9554. latitude: i,
  9555. id: 0,
  9556. regeocodeData: d
  9557. }], a.success(l)) : a.fail({
  9558. errCode: b.data.infocode,
  9559. errMsg: b.data.info
  9560. });
  9561. },
  9562. fail: function fail(b) {
  9563. a.fail({
  9564. errCode: "0",
  9565. errMsg: b.errMsg || ""
  9566. });
  9567. }
  9568. });
  9569. }
  9570. var b = this;
  9571. a.location ? c(a.location) : b.getWxLocation(a, function (a) {
  9572. c(a);
  9573. });
  9574. }, AMapWX.prototype.getWeather = function (a) {
  9575. function d(d) {
  9576. var e = "base";
  9577. a.type && "forecast" == a.type && (e = "all"), wx.request({
  9578. url: "https://restapi.amap.com/v3/weather/weatherInfo",
  9579. data: {
  9580. key: b.key,
  9581. city: d,
  9582. extensions: e,
  9583. s: c.s,
  9584. platform: c.platform,
  9585. appname: b.key,
  9586. sdkversion: c.sdkversion,
  9587. logversion: c.logversion
  9588. },
  9589. method: "GET",
  9590. header: {
  9591. "content-type": "application/json"
  9592. },
  9593. success: function success(b) {
  9594. function c(a) {
  9595. var b = {
  9596. city: {
  9597. text: "城市",
  9598. data: a.city
  9599. },
  9600. weather: {
  9601. text: "天气",
  9602. data: a.weather
  9603. },
  9604. temperature: {
  9605. text: "温度",
  9606. data: a.temperature
  9607. },
  9608. winddirection: {
  9609. text: "风向",
  9610. data: a.winddirection + "风"
  9611. },
  9612. windpower: {
  9613. text: "风力",
  9614. data: a.windpower + "级"
  9615. },
  9616. humidity: {
  9617. text: "湿度",
  9618. data: a.humidity + "%"
  9619. }
  9620. };
  9621. return b;
  9622. }
  9623. var d, e;
  9624. b.data.status && "1" == b.data.status ? b.data.lives ? (d = b.data.lives, d && d.length > 0 && (d = d[0], e = c(d), e["liveData"] = d, a.success(e))) : b.data.forecasts && b.data.forecasts[0] && a.success({
  9625. forecast: b.data.forecasts[0]
  9626. }) : a.fail({
  9627. errCode: b.data.infocode,
  9628. errMsg: b.data.info
  9629. });
  9630. },
  9631. fail: function fail(b) {
  9632. a.fail({
  9633. errCode: "0",
  9634. errMsg: b.errMsg || ""
  9635. });
  9636. }
  9637. });
  9638. }
  9639. function e(e) {
  9640. wx.request({
  9641. url: "https://restapi.amap.com/v3/geocode/regeo",
  9642. data: {
  9643. key: b.key,
  9644. location: e,
  9645. extensions: "all",
  9646. s: c.s,
  9647. platform: c.platform,
  9648. appname: b.key,
  9649. sdkversion: c.sdkversion,
  9650. logversion: c.logversion
  9651. },
  9652. method: "GET",
  9653. header: {
  9654. "content-type": "application/json"
  9655. },
  9656. success: function success(b) {
  9657. var c, e;
  9658. b.data.status && "1" == b.data.status ? (e = b.data.regeocode, e.addressComponent ? c = e.addressComponent.adcode : e.aois && e.aois.length > 0 && (c = e.aois[0].adcode), d(c)) : a.fail({
  9659. errCode: b.data.infocode,
  9660. errMsg: b.data.info
  9661. });
  9662. },
  9663. fail: function fail(b) {
  9664. a.fail({
  9665. errCode: "0",
  9666. errMsg: b.errMsg || ""
  9667. });
  9668. }
  9669. });
  9670. }
  9671. var b = this,
  9672. c = b.requestConfig;
  9673. a.city ? d(a.city) : b.getWxLocation(a, function (a) {
  9674. e(a);
  9675. });
  9676. }, AMapWX.prototype.getPoiAround = function (a) {
  9677. function d(d) {
  9678. var e = {
  9679. key: b.key,
  9680. location: d,
  9681. s: c.s,
  9682. platform: c.platform,
  9683. appname: b.key,
  9684. sdkversion: c.sdkversion,
  9685. logversion: c.logversion
  9686. };
  9687. a.querytypes && (e["types"] = a.querytypes), a.querykeywords && (e["keywords"] = a.querykeywords), wx.request({
  9688. url: "https://restapi.amap.com/v3/place/around",
  9689. data: e,
  9690. method: "GET",
  9691. header: {
  9692. "content-type": "application/json"
  9693. },
  9694. success: function success(b) {
  9695. var c, d, e, f;
  9696. if (b.data.status && "1" == b.data.status) {
  9697. if (b = b.data, b && b.pois) {
  9698. for (c = [], d = 0; d < b.pois.length; d++) {
  9699. e = 0 == d ? a.iconPathSelected : a.iconPath, c.push({
  9700. latitude: parseFloat(b.pois[d].location.split(",")[1]),
  9701. longitude: parseFloat(b.pois[d].location.split(",")[0]),
  9702. iconPath: e,
  9703. width: 22,
  9704. height: 32,
  9705. id: d,
  9706. name: b.pois[d].name,
  9707. address: b.pois[d].address
  9708. });
  9709. }
  9710. f = {
  9711. markers: c,
  9712. poisData: b.pois
  9713. }, a.success(f);
  9714. }
  9715. } else a.fail({
  9716. errCode: b.data.infocode,
  9717. errMsg: b.data.info
  9718. });
  9719. },
  9720. fail: function fail(b) {
  9721. a.fail({
  9722. errCode: "0",
  9723. errMsg: b.errMsg || ""
  9724. });
  9725. }
  9726. });
  9727. }
  9728. var b = this,
  9729. c = b.requestConfig;
  9730. a.location ? d(a.location) : b.getWxLocation(a, function (a) {
  9731. d(a);
  9732. });
  9733. }, AMapWX.prototype.getStaticmap = function (a) {
  9734. function f(b) {
  9735. c.push("location=" + b), a.zoom && c.push("zoom=" + a.zoom), a.size && c.push("size=" + a.size), a.scale && c.push("scale=" + a.scale), a.markers && c.push("markers=" + a.markers), a.labels && c.push("labels=" + a.labels), a.paths && c.push("paths=" + a.paths), a.traffic && c.push("traffic=" + a.traffic);
  9736. var e = d + c.join("&");
  9737. a.success({
  9738. url: e
  9739. });
  9740. }
  9741. var e,
  9742. b = this,
  9743. c = [],
  9744. d = "https://restapi.amap.com/v3/staticmap?";
  9745. c.push("key=" + b.key), e = b.requestConfig, c.push("s=" + e.s), c.push("platform=" + e.platform), c.push("appname=" + e.appname), c.push("sdkversion=" + e.sdkversion), c.push("logversion=" + e.logversion), a.location ? f(a.location) : b.getWxLocation(a, function (a) {
  9746. f(a);
  9747. });
  9748. }, AMapWX.prototype.getInputtips = function (a) {
  9749. var b = this,
  9750. c = b.requestConfig,
  9751. d = {
  9752. key: b.key,
  9753. s: c.s,
  9754. platform: c.platform,
  9755. appname: b.key,
  9756. sdkversion: c.sdkversion,
  9757. logversion: c.logversion
  9758. };
  9759. a.location && (d["location"] = a.location), a.keywords && (d["keywords"] = a.keywords), a.type && (d["type"] = a.type), a.city && (d["city"] = a.city), a.citylimit && (d["citylimit"] = a.citylimit), wx.request({
  9760. url: "https://restapi.amap.com/v3/assistant/inputtips",
  9761. data: d,
  9762. method: "GET",
  9763. header: {
  9764. "content-type": "application/json"
  9765. },
  9766. success: function success(b) {
  9767. b && b.data && b.data.tips && a.success({
  9768. tips: b.data.tips
  9769. });
  9770. },
  9771. fail: function fail(b) {
  9772. a.fail({
  9773. errCode: "0",
  9774. errMsg: b.errMsg || ""
  9775. });
  9776. }
  9777. });
  9778. }, AMapWX.prototype.getDrivingRoute = function (a) {
  9779. var b = this,
  9780. c = b.requestConfig,
  9781. d = {
  9782. key: b.key,
  9783. s: c.s,
  9784. platform: c.platform,
  9785. appname: b.key,
  9786. sdkversion: c.sdkversion,
  9787. logversion: c.logversion
  9788. };
  9789. a.origin && (d["origin"] = a.origin), a.destination && (d["destination"] = a.destination), a.strategy && (d["strategy"] = a.strategy), a.waypoints && (d["waypoints"] = a.waypoints), a.avoidpolygons && (d["avoidpolygons"] = a.avoidpolygons), a.avoidroad && (d["avoidroad"] = a.avoidroad), wx.request({
  9790. url: "https://restapi.amap.com/v3/direction/driving",
  9791. data: d,
  9792. method: "GET",
  9793. header: {
  9794. "content-type": "application/json"
  9795. },
  9796. success: function success(b) {
  9797. b && b.data && b.data.route && a.success({
  9798. paths: b.data.route.paths,
  9799. taxi_cost: b.data.route.taxi_cost || ""
  9800. });
  9801. },
  9802. fail: function fail(b) {
  9803. a.fail({
  9804. errCode: "0",
  9805. errMsg: b.errMsg || ""
  9806. });
  9807. }
  9808. });
  9809. }, AMapWX.prototype.getWalkingRoute = function (a) {
  9810. var b = this,
  9811. c = b.requestConfig,
  9812. d = {
  9813. key: b.key,
  9814. s: c.s,
  9815. platform: c.platform,
  9816. appname: b.key,
  9817. sdkversion: c.sdkversion,
  9818. logversion: c.logversion
  9819. };
  9820. a.origin && (d["origin"] = a.origin), a.destination && (d["destination"] = a.destination), wx.request({
  9821. url: "https://restapi.amap.com/v3/direction/walking",
  9822. data: d,
  9823. method: "GET",
  9824. header: {
  9825. "content-type": "application/json"
  9826. },
  9827. success: function success(b) {
  9828. b && b.data && b.data.route && a.success({
  9829. paths: b.data.route.paths
  9830. });
  9831. },
  9832. fail: function fail(b) {
  9833. a.fail({
  9834. errCode: "0",
  9835. errMsg: b.errMsg || ""
  9836. });
  9837. }
  9838. });
  9839. }, AMapWX.prototype.getTransitRoute = function (a) {
  9840. var b = this,
  9841. c = b.requestConfig,
  9842. d = {
  9843. key: b.key,
  9844. s: c.s,
  9845. platform: c.platform,
  9846. appname: b.key,
  9847. sdkversion: c.sdkversion,
  9848. logversion: c.logversion
  9849. };
  9850. a.origin && (d["origin"] = a.origin), a.destination && (d["destination"] = a.destination), a.strategy && (d["strategy"] = a.strategy), a.city && (d["city"] = a.city), a.cityd && (d["cityd"] = a.cityd), wx.request({
  9851. url: "https://restapi.amap.com/v3/direction/transit/integrated",
  9852. data: d,
  9853. method: "GET",
  9854. header: {
  9855. "content-type": "application/json"
  9856. },
  9857. success: function success(b) {
  9858. if (b && b.data && b.data.route) {
  9859. var c = b.data.route;
  9860. a.success({
  9861. distance: c.distance || "",
  9862. taxi_cost: c.taxi_cost || "",
  9863. transits: c.transits
  9864. });
  9865. }
  9866. },
  9867. fail: function fail(b) {
  9868. a.fail({
  9869. errCode: "0",
  9870. errMsg: b.errMsg || ""
  9871. });
  9872. }
  9873. });
  9874. }, AMapWX.prototype.getRidingRoute = function (a) {
  9875. var b = this,
  9876. c = b.requestConfig,
  9877. d = {
  9878. key: b.key,
  9879. s: c.s,
  9880. platform: c.platform,
  9881. appname: b.key,
  9882. sdkversion: c.sdkversion,
  9883. logversion: c.logversion
  9884. };
  9885. a.origin && (d["origin"] = a.origin), a.destination && (d["destination"] = a.destination), wx.request({
  9886. url: "https://restapi.amap.com/v4/direction/bicycling",
  9887. data: d,
  9888. method: "GET",
  9889. header: {
  9890. "content-type": "application/json"
  9891. },
  9892. success: function success(b) {
  9893. b && b.data && b.data.data && a.success({
  9894. paths: b.data.data.paths
  9895. });
  9896. },
  9897. fail: function fail(b) {
  9898. a.fail({
  9899. errCode: "0",
  9900. errMsg: b.errMsg || ""
  9901. });
  9902. }
  9903. });
  9904. }, module.exports.AMapWX = AMapWX;
  9905. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"]))
  9906. /***/ }),
  9907. /***/ 821:
  9908. /*!*************************************************************************!*\
  9909. !*** D:/work/work/boman/school/qs_cfschool/mine/static/mine/ncheck.png ***!
  9910. \*************************************************************************/
  9911. /*! no static exports found */
  9912. /***/ (function(module, exports) {
  9913. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAyCAMAAADr0TwHAAAAY1BMVEUAAADBwcHBwcHCwsLBwcHCwsLBwcHBwcHBwcHAwMDBwcHBwcHCwsK6urq5ubnBwcHAwMDCwsLCwsLDw8PBwcH////7+/vOzs7Ly8vm5ubh4eH19fX09PTu7u7s7OzQ0NDDw8PI8bSPAAAAFHRSTlMA8b8i3tivpZaAWzIZDQZim8iaYc5rcBAAAAFuSURBVFjDtZjbkoJADERnELkqIE4id/3/r9w1lBSrIIluzgvKQxfVCT0J5pXdOfJ869hY34vOO7PJLt67j9jH79XTwH1BkK4KH0L3JeFhWTmZ/L02Q4uA2A7NVaZtkwXhrHQjlxphBtYXkXiZPSsfPUdUPbzQVxJt7/ikfKLbtxoWqW8C7dMf7cwbH7mDFbpK8txzT4rRZYRVUOJ4MeuNDWWxdjL1syU3EN6CAk/so79DqmAHG3SCWoaGSOlPA5s0jk9K0gHZAQwElgSUdfSzBwa943PPwZi6A1gIuiT+laZ8roFFLcjvhx8ILFDkSE4pCkwEGZubiNd58v6LDAXTAEwGQUgZ/35pgUnLl/aN5VVRXkdr6AJsHJ9RGjWkFQ1RLKNi8ym+MoovumI86YWq4lGgeIDpHbuKw4LeiKM4mCmPk0SpMAQrje6qC4f+mkRkxf8sd0XGWEnho5VUf5HWX//1P1pM6rn8U0u+oPsDYeQ8WPlAThkAAAAASUVORK5CYII="
  9914. /***/ }),
  9915. /***/ 838:
  9916. /*!*****************************************************************!*\
  9917. !*** D:/work/work/boman/school/qs_cfschool/api/mine/payslip.js ***!
  9918. \*****************************************************************/
  9919. /*! no static exports found */
  9920. /***/ (function(module, exports, __webpack_require__) {
  9921. "use strict";
  9922. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
  9923. Object.defineProperty(exports, "__esModule", {
  9924. value: true
  9925. });
  9926. exports.getpayDelFn = getpayDelFn;
  9927. exports.getpayImporttFn = getpayImporttFn;
  9928. exports.getpayListFn = getpayListFn;
  9929. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 44));
  9930. // 工资条 xiaoYuan:data:importData
  9931. function getpayListFn(data) {
  9932. return (0, _request.default)({
  9933. 'url': '/xiaoYuan/pay/list',
  9934. 'method': 'get',
  9935. 'data': data
  9936. });
  9937. }
  9938. // 导入 xiaoYuan:data:importData
  9939. function getpayImporttFn(data) {
  9940. return (0, _request.default)({
  9941. 'url': '/xiaoYuan/pay/importData',
  9942. 'method': 'post',
  9943. 'data': data
  9944. });
  9945. }
  9946. // 删除 xiaoYuan:data:remove
  9947. function getpayDelFn(data) {
  9948. return (0, _request.default)({
  9949. 'url': '/xiaoYuan/pay/delete/' + data,
  9950. 'method': 'get'
  9951. });
  9952. }
  9953. /***/ }),
  9954. /***/ 839:
  9955. /*!*********************************************************************!*\
  9956. !*** D:/work/work/boman/school/qs_cfschool/work/static/pay/pbg.png ***!
  9957. \*********************************************************************/
  9958. /*! no static exports found */
  9959. /***/ (function(module, exports) {
  9960. module.exports = "data:image/png;base64,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"
  9961. /***/ }),
  9962. /***/ 840:
  9963. /*!*********************************************************************!*\
  9964. !*** D:/work/work/boman/school/qs_cfschool/work/static/pay/pup.png ***!
  9965. \*********************************************************************/
  9966. /*! no static exports found */
  9967. /***/ (function(module, exports) {
  9968. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAKCAMAAACOlf6TAAAAM1BMVEUAAADs7Ozt7e3r6+vs7Ozt7e3t7e3t7e3r6+vs7Ozs7Ozt7e3t7e3u7u7q6ur////s7Ozzj75WAAAAEHRSTlMA6t0pHY6Sfn79v4GASTwHvAVcpQAAAD9JREFUCNdNy1kOgCAAA9FxQXHv/U9rQkhpP1+m8D3k1hdO1ZT5gE3aQzTRrIYs4C4EinQNsd0p/Vsso7PYLD/mbwJbt27+MwAAAABJRU5ErkJggg=="
  9969. /***/ }),
  9970. /***/ 841:
  9971. /*!************************************************************************!*\
  9972. !*** D:/work/work/boman/school/qs_cfschool/work/static/pay/noicon.png ***!
  9973. \************************************************************************/
  9974. /*! no static exports found */
  9975. /***/ (function(module, exports) {
  9976. module.exports = "data:image/png;base64,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"
  9977. /***/ }),
  9978. /***/ 858:
  9979. /*!*************************************************************************!*\
  9980. !*** D:/work/work/boman/school/qs_cfschool/mine/static/score/expay.png ***!
  9981. \*************************************************************************/
  9982. /*! no static exports found */
  9983. /***/ (function(module, exports) {
  9984. module.exports = "data:image/png;base64,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"
  9985. /***/ })
  9986. }]);
  9987. //# sourceMappingURL=../../../.sourcemap/mp-weixin/mine/common/vendor.js.map